19
Gps và thiết bị đầu cuối người sử dụng - Bộ thu GPS Hiện nay công nghệ GPS đang được ứng dụng rộng rãi ở Việt Nam, ngày càng trở nên thiết thực trong đời sống. Trong bài viết này tôi muốn cung cấp đến các bạn những kiến thức cơ bản về hệ thống GPS và ứng dụng của nó, các thành phần GPS và đặc biệt là thiết bị đầu cuối người sử dụng Với kiến thức còn hạn chế nên bài viết có nhiều thiếu sót rất mong được sự đóng góp của các bạn để tôi có thể hoàn thành bài viết của mình. 1.GPS là gì Hệ thống định vị toàn cầu (GPS) là một hệ định vị thông qua vệ tinh được hình thành từ những năm 1970. Sau đó, nó được phát triển hoàn thiện và quản lý bởi Bộ quốc phòng Mỹ (DoD). Vệ tinh GPS đầu tiên được phóng vào tháng Hai năm 1978 và từ đầu những năm 1990, GPS bắt đầu được sử dụng trong dân sự. Chính phủ Mỹ dành riêng mức định vị chính xác cao nhất cho quân đội, tuy nhiên họ cũng đã phát triển mã thu thô C/A cho mục đích dân dụng. 2.Các thành phần 1 hệ thống GPS Hệ thống GPS bao gồm 3 phần cơ bản: phần không gian, phần điều khiển và phần người sử dụng.

Gps và thiết bị đầu cuối người sử dụng.doc

Embed Size (px)

Citation preview

Page 1: Gps và thiết bị đầu cuối người sử dụng.doc

Gps và thiết bị đầu cuối người sử dụng - Bộ thu GPS

Hiện nay công nghệ GPS đang được ứng dụng rộng rãi ở Việt Nam, ngày càng trở

nên thiết thực trong đời sống. Trong bài viết này tôi muốn cung cấp đến các bạn

những kiến thức cơ bản về hệ thống GPS và ứng dụng của nó, các thành phần GPS

và đặc biệt là thiết bị đầu cuối người sử dụng

  Với kiến thức còn hạn chế nên bài viết có nhiều thiếu sót rất mong được sự đóng 

góp của các bạn để tôi có thể hoàn thành bài viết của mình.

1.GPS là gì

     Hệ thống định vị toàn cầu (GPS) là một hệ định vị thông qua vệ tinh được hình 

thành từ những năm 1970. Sau đó, nó được phát triển hoàn thiện và quản lý bởi Bộ 

quốc phòng Mỹ (DoD). Vệ tinh GPS đầu tiên được phóng vào tháng Hai năm 1978 

và  từ đầu những năm 1990, GPS bắt đầu được sử dụng  trong dân sự. Chính phủ 

Mỹ dành riêng mức định vị chính xác cao nhất cho quân đội, tuy nhiên họ cũng đã 

phát triển mã thu thô C/A cho  mục đích dân dụng.

2.Các thành phần 1 hệ thống GPS

      Hệ thống GPS bao gồm 3 phần cơ bản: phần không gian, phần điều khiển và 

phần người sử dụng.

Page 2: Gps và thiết bị đầu cuối người sử dụng.doc

Các thành phần hệ thống GPS

Phần không gian:

        Gồm  các  vệ  tinh  GPS.  GPS  được  thiết 

kế  với  24  vệ  tinh  không  gian,  trong  đó  mỗi 

8  vệ  tinh  di  chuyển  trên  một  quỹ  đạo  tròn, 

tuy  nhiên  sau  đó  được  điều  chỉnh  lại  thành 

6  quỹ  đạo  với  mỗi  4  vệ  tinh  trên  một  quỹ 

đạo.  6  quỹ  đạo  có  độ  nghiêng  xấp  xỉ  55  độ 

(so  với  đường  xích  đạo  của  trái đất) và được 

chia bởi các góc 60 độ giữa các giao điểm của 

quỹ đạo.

Page 3: Gps và thiết bị đầu cuối người sử dụng.doc

      Các  vệ  tinh  được  sắp  xếp  sao  cho  có  ít  nhất  6  vệ  tinh  luôn  luôn  nằm  trong 

tầm nhìn  từ hầu hết  các điểm  trên bề mặt  trái đất. Các vệ  tinh có độ cao  so với 

mặt nước biển xấp xỉ 20.200 km, chuyển động với vận tốc không đổi vào khoảng 

11.250 km/h. Mỗi vệ tinh hoàn thành hai vòng quỹ đạo trong thời gian một ngày 

(tính theo thời gian xoay quanh trục của trái đất xét từ một định tinh, bằng 23 giờ, 

56 phút, 4.09 giây).

      Tính đến thời điểm tháng 3 năm 2008, đã có 31 vệ tinh hoạt động trong chùm 

vệ tinh GPS. Các vệ tinh được bổ sung cho phép tăng độ chính xác của các phép 

tính trên bộ thu nhờ các phép đo bổ sung.

Phần điều khiển

        Các đường bay của vệ tinh được giám sát bởi các trạm điều khiển của Không 

lực Hoa Kỳ tại các khu vực khác nhau. Thông tin giám sát được gửi về trạm điều 

khiển trung tâm và sau đó trung tâm này liên lạc với từng vệ tinh để cập nhật định 

hướng thường kỳ. Các cập nhật này đồng bộ đồng hồ nguyên tử  trên các vệ  tinh 

trong phạm vi một vài nano giây và điều chỉnh lịch thiên văn của mỗi mô hình quỹ 

đạo bên trong của vệ tinh.

Phần người sử dụng

       Một bộ thu GPS đơn giản của người sử dụng bao gồm ăng-ten, và một mô đun 

thu, xử lí  tín hiệu thu được. Chúng cũng có thể bao gồm các bộ phận hiển thị để 

cũng cấp các thông tin vị trí, tốc độ, hay bản đồ chỉ đường.

Page 4: Gps và thiết bị đầu cuối người sử dụng.doc

    Bộ thu GPS tính toán vị trí của nó bằng việc tính toán và so sánh thời gian 

truyền tín hiệu từ lúc nó được gửi từ vệ tinh đến khi nhận được tại bộ thu trên mặt 

đất. Mỗi vệ tinh truyền liên tục các bản tin có chứa thời gian bản tin được gửi đi,

thông tin quỹ đạo chính xác, tình trạng hệ thống chung. Bộ thu GPS đo thời gian 

truyền của mỗi bản tin gửi từ vệ tinh và tính toán khoảng cách tới vệ tinh đó. Phép 

đo hình học ba cạnh tam giác được sử dụng để kết hợp các khoảng cách này cùng 

vị trí của các vệ tinh để xác định vị trí của bộ thu. Tuy nhiên trên thực tế, một sai 

số nhỏ của thời gian nhân với vận tốc rất lớn của ánh sáng (cũng là vận tốc lan 

truyền của sóng điện từ) sẽ gây ra sai số về khoảng cách đáng kể. Do vậy các bộ 

thu sử dụng thêm một vệ tinh để hiệu chỉnh đồng hồ của chúng. Trong một số 

trường hợp nếu biết một trong các thông số tọa độ không gian, ví dụ như độ cao, 

chúng ta chỉ cần 3 vệ tinh để xác định được vị trí chính xác. 

3. Bộ thu GPS

    Khi nói đến thiết bị đầu cuối GPS người ta thường có cách hiểu khác nhau, 

nhưng ở đây tôi chỉ nói đến bộ thu GPS đơn giản, tức là nó chỉ thu tín hiệu GPS rồi 

Page 5: Gps và thiết bị đầu cuối người sử dụng.doc

đưa dữ liệu ra đầu ra.

     Dưới đây là hình ảnh một số bộ thu GPS

    

SKYLAB GB10

                                         

GPM100

  

                                                                                                              

       

Page 6: Gps và thiết bị đầu cuối người sử dụng.doc

                                      

                          GPM1315                                                                           HOLUX 

M-89

     Ngoài ra còn một số mô đun LEA-5S, LEA-5H, HOLUX GR89

    Khi mua các module  trên thị trường thường có 2 loại: một loại như skylab 

GB10 ở trên đã được thiết kế sẵn mạch phụ trợ, một loại khác là mô đun chưa được 

thiết kế mạch  để sử dụng được ta phải thiết kế mạch phụ trợ cho nó.

    Dưới đây là hình ảnh KIT GR89 bao gồm một mô đun GPS M89, vi điều khiển, 

LCD và các phím chức năng.

Page 7: Gps và thiết bị đầu cuối người sử dụng.doc

            

Dữ liệu đầu ra GPS là gì?

   Để mô đun GPS hoạt động ta phải cắm nguồn và lắp anten thu tín hiệu. Mô đun 

GPS sau khi thu được tín hiệu từ vệ tinh sẽ tính toán vị trí và đưa dữ liệu ra theo

chuẩn giao tiếp USART qua chân TX. Dưới đây là hình ảnh minh họa đầu ra dữ 

liệu của mô đun GPS M89

SƠ ĐỒ NGUYÊN LÝ M-89

     Ở đây chúng  ta có  thể nhìn  thấy 2 chân  tx,rx của mô đun GPS M89. Khi  thu 

được dữ liệu chân số 8 GIPO nhấp nháy 1s/ 1 lần, một số mô đun khác có thể là 

chân PPS, cái này các bạn nên đọc kỹ datasheet. Dữ liệu được truyền ra ngoài qua 

Page 8: Gps và thiết bị đầu cuối người sử dụng.doc

chân TX, Cấu  trúc dữ  liệu này  tuân  theo chuẩn  truyền dữ  liệu NMEA0183,  theo 

chu kì 1s/ 1 lần. Ở đây chân RX được dung để cấu hình cho mô đun GPS nhưng

thường không sử dụng đến.

     NMEA (hay NMEA 0183) là sự một chuẩn giao thức cho truyền thông giữa các 

thiết bị điện tử dùng cho tàu thủy như các thiết bị đo tốc độ gió, la bàn, máy lái tự 

động, thiết bị thu GPS và rất nhiều các thiết bị khác được định nghĩa và phát triển 

bởi Hiệp hội điện tử tàu thủy quốc gia Hoa Kỳ (NMEA).

Chuẩn NMEA 0183 sử dụng các ký tự ASCII, giao thức truyền thông nối tiếp quy 

định cách một “thiết bị gửi” truyền một câu dữ liệu tới “thiết bị nhận” tại một thời 

điểm.

   Ở tầng ứng dụng, chuẩn NMEA quy định nội dung các kiểu câu dữ liệu cho phép 

thiết bị nhận có khả năng phân tích dữ liệu một cách chính xác. Các câu dữ liệu 

đều bắt đầu bằng ký tự “$” và kết thúc bằng <CR><LF>

Đối với các các thiết bị GPS, tất cả các câu dữ liệu đều bắt đầu bằng “$GPxxx” 

trong đó xxx là loại bản tin. Một số loại câu dữ liệu thường sử dụng: 

    - GGA:Global positioning system fixed data

    - GLL: Geographic position-latitude/longitude

    - GSA: GNSS DOP and active satellites

    - GSV: GNSS satellites in view

    - RMC:Recommended minimum specific GNSS data

   - VTG: Course over ground and ground speed   

Đây là bản tin NMEA0183 thực tế của mô đun GPM1315 thu được khi kết lối 

chân TX lên máy tính trong thời gian 2 s tại nhà D9- DHBKHN:

   $GPRMC,024122.000,A,2059.2193,N,10550.0318,E,0.00,,070809,,,A*7D

   $GPGGA,024123.000,2059.2193,N,10550.0318,E,1,05,1.7,27.0,M,-

Page 9: Gps và thiết bị đầu cuối người sử dụng.doc

20.7,M,,0000*48

   $GPGSA,A,3,30,26,14,31,16,,,,,,,,3.3,1.7,2.8*39

   $GPGSV,3,1,11,31,51,343,30,14,47,070,29,16,46,201,18,32,33,314,*78

   $GPGSV,3,2,11,22,33,162,22,30,16,039,29,26,15,103,21,29,14,088,*77

   $GPGSV,3,3,11,20,11,318,,06,02,189,,18,02,151,*4B

   $GPRMC,024123.000,A,2059.2193,N,10550.0318,E,0.00,,070809,,,A*7C

   $GPGGA,024124.000,2059.2193,N,10550.0318,E,1,05,1.7,27.0,M,-

20.7,M,,0000*4F

   $GPGSA,A,3,30,26,14,31,16,,,,,,,,3.3,1.7,2.8*39

   $GPGSV,3,1,11,31,51,343,30,14,47,070,29,16,46,201,18,32,33,314,*78

   $GPGSV,3,2,11,22,33,162,22,30,16,039,29,26,15,103,21,29,14,088,*77

    $GPGSV,3,3,11,20,11,318,,06,02,189,,18,02,151,*4B

Như vậy ở đây sau mỗi giây GPS đưa ra một chuỗi bản tin. 

Page 10: Gps và thiết bị đầu cuối người sử dụng.doc

    Các thông số của bản tin như thế nào có thể tham khảo trong tài liệu về NMEA. 

Ở đây tôi chỉ phân tích bản tin GPRMC vì đây là bản tin chứa tương đối đầy đủ 

các thông số phục vụ trong định vị, giám sát dẫn đường.

$GPRMC,024122.000,A,2059.2193,N,10550.0318,E,0.00,,070809,,,A*7D

+024122 Giờ UTC 02:41:22 ( đây là giờ quốc tế để chuyển sang giờ việt nam cộng 

thêm 7h: như vậy giờ việt nam: 09:41:22)

+ A Cảnh báo bộ thu GPS. Nếu thu được kí tự A như trên đồng nghĩa  module thu 

được tín hiệu( dữ liệu hợp lệ ), nếu thu được chữ V có nghĩa module chưa xác định 

được vị trí lúc đó đầu ra vẫn có dữ liệu 1s/ 1 lần nhưng là dữ liệu được lưu trữ ở 

lần thu được dữ liệu gần nhất

+2059.2193,N Vĩ độ 20 độ 59.2193 phút Bắc

+10550.0318,E Kinh độ 105 độ 50.0318 phút đông

+0.00 Tốc độ trên mặt đất tính theo đơn vị Knots

+070809 Ngày UTC 07/08/ 2009

...

Bản tin GMRC ở đây thiếu một số thông số, có thể đây là do sự hỗ trợ của module 

thu gpm1315 chưa đầy đủ.

    Vậy sau khi dữ liệu đưa ra chân TX được sử dụng như thế nào. Ở đây tôi đưa ra 

vi du một hệ thống quản lý phương tiện giao thông đang được sử dụng phổ biến ở 

nước ta:

Page 11: Gps và thiết bị đầu cuối người sử dụng.doc

  Mô đun thu GPS đăt trên phương tiện thu tín hiệu định vị sau đó gửi qua mạng 

GPRS lên sever, người quản lý có thể dùng máy tính truy nhập vào mạng để xem 

vị trí, các thông tin khác về phương tiện.

  Đây là một mạch tôi làm phục vụ cho mục đích như vậy, Board mạch được đặt 

trên phương tiện cần quản lý, tuy ở trên mạch có phần truyền dữ liệu qua đường bộ 

đàm phục vụ cho quản lý taxi và tàu đánh cá trên biển, nhưng tôi không nói đến ở 

đây. Ở đây tôi chỉ trình bày cách mô đun GPS thu dữ liệu rồi gửi về trung tâm:

Page 12: Gps và thiết bị đầu cuối người sử dụng.doc

   Mô đun GPS GPM1315 sau khi thu được dữ liệu vệ tinh mỗi giây 1 lần sau đó 

được đưa vào chân vi điều khiển, vi điều khiển xử lý lấy dữ liệu cần thiết gửi sau 

đó truyền qua mạng GSM, GPRS về trung tâm. Ở đây mô đun truyền nhận dữ liệu 

GSM là mô đun SIM300CZ của simcom như các bạn nhìn thấy như hình vẽ. Hãng 

simcom cũng sản xuất 1 mô đun bao gồm cả GPS và GSM/GPRS  là  sim548  rất 

tiện lợi cho quá trình nghiên cứu sinh viên.

   Dưới đây là sơ đồ khối giao tiếp mô đun GPS, vi điều khiển, GSM.

Page 13: Gps và thiết bị đầu cuối người sử dụng.doc

     Vi  điều  khiển  thường  được  cấp  nguồn  5V,  khi  đó mức  logic  “1”  tương  ứng 

khoảng điện  áp 3.7V đến 5V. Trong khi đó GPS thường sử dụng điện áp 3.3V,

vậy không thể nối trực tiếp chân GPS đến vi điều khiển, vậy ở đây tôi sử dụng opto

quang để đệm điện áp logic từ 3.3V lên 5V.

Page 14: Gps và thiết bị đầu cuối người sử dụng.doc

4.Tách dữ liệu GPS.

    Sau đây tôi sẽ trình bày code đơn giản vể cách tách bản rin $GPRMC từ GPS 

gửi về vi điều khiển ATMEGA128 hiển thị lên LCD như hình bên dưới còn cách 

truyền dữ liệu qua SIM300 các bạn có thể tham khảo trong các bài viết sau.

Page 15: Gps và thiết bị đầu cuối người sử dụng.doc

Ta thấy mỗi giây dữ liệu GPS gửi về vi điều khiển một lần, nhiệm vụ của vi điều 

khiển là nhận biết khi nào bản tin gửi về và tách những thông tin cần thiết.

Căn cứ tách dữ liệu:

+ Căn cứ phân biệt bản tin GPRMC: có nhiều cách để nhận biết bản tin GPRMC , 

Ở đây tôi phân biệt bản tin GPRMC với các bản tin khác ở chữ cái "R".

+ Tách thông tin tọa độ

$GPRMC,024122.000,A,2059.2193,N,10550.0318,E,0.00,,070809,,,A*7D

Đây là một bản tin GPRMC ở đây tôi dùng thứ tự của ki tư để tách, nhưng ta thấy 

rằng tùy sự hỗ trợ mô đun khác nhau thì thông tin có thể khác nhau. Ví dụ ở đây 

bản tin của GPRMC của GPM1315 thiếu thông tin điện từ trường.

$GPRMC,024122.000,A,2059.2193,N,10550.0318,E,0.00,"thiếu",070809,,,A*7D

Page 16: Gps và thiết bị đầu cuối người sử dụng.doc

nhưng vẫn có 2 dấu phẩy, như vậy theo tôi nên dùng cách tách thông tin dựa theo 

dấu "," se chinh xac hơn.

    Đây là cách tách code GPS đưa trong số rất nhiều phương pháp tôi đưa ra để các 

bạn tham khảo, trình biên dịch sử dụng codevision:

      Ở đây chân TX của GPS như các bạn thấy được nối với chân RXD0 của vi điều 

khiển ATMEGA128.Trước tiên ta cấu hình cho cổng USART0 để nhận dữ liệu từ 

GPS. Ở đây tốc độ dữ liệu của GPM131 là 9600kbps.

Chiều dài của bộ đệm dữ liệu bạn thiết lập tùy theo số kí tự mà bạn muốn lưu trữ.

 

#include <mega128.h>

unsigned char i,j,start=0,rmc_data[75];;   

Page 17: Gps và thiết bị đầu cuối người sử dụng.doc

interrupt [USART0_RXC] void usart0_rx_isr(void)

{

   char status,data;

   status=UCSR0A;

   data=UDR0;

   if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))

==0)

    {

       if(start==1)

                {

                      rx_buffer0[rx_wr_index0]=data;

                      rx_wr_index0++;

                      if(data==10)//ket thuc khung truyen rmc

                         {

                               start=0;

                                rx_wr_index0=0;

                               rx_buffer_overflow0=1;

                        }

                }

                      else if(data=='R')start=1;

                };

}

void main(void)

Page 18: Gps và thiết bị đầu cuối người sử dụng.doc

{

while (1)

{

           if(rx_buffer_overflow0==1)

                {

                       for(i=0;i<75;i++)rmc_data[i]=rx_buffer0[i];

                       rx_buffer_overflow0=0;

                       lcd_clear();

                       lcd_putsf("La:");

                       for(i=16;i<25;i++)

                           {

                                 lcd_putchar(rmc_data[i]);

                                 if(i==17)lcd_putchar('"'); 

                           }  

                      lcd_gotoxy(14,0);

                     lcd_putchar(rmc_data[26]);

                     lcd_gotoxy(0,1);

                     lcd_putsf("Lo:");  

                     for(i=28;i<38;i++)

                        {

                             lcd_putchar(rmc_data[i]);

                            if(i==30)lcd_putchar('"');

                          }   

                   lcd_gotoxy(14,1);

Page 19: Gps và thiết bị đầu cuối người sử dụng.doc

                   lcd_putchar(rmc_data[39]);

               }

delay_ms(800);

lcd_clear();

};

}

        Đây chỉ  là một  trong  rất nhiều phương pháp  thu và phân  tích dữ  liệu GPS. 

Phương pháp này sử dụng ngắt USART, nhìn có  thể hơi khó hiểu nhưng vi điều 

khiển không phải liên tục đợi dữ liệu GPS, trong thời gian này vi điều khiển có thể 

dùng để xử  lý công việc khác. Ngoài  ra có rất nhiều phương pháp khác  tùy  theo 

người lập trình khác nhau, có một phương pháp mà các bạn mới lập trình hay dùng 

đó là vi điều khiển liên tục đợi cho đến khi nhận xong dữ liệu, ở đây tôi chỉ đưa ra 

một cách để các bạn tham khảo.