Upload
thanhbinh25111991
View
104
Download
0
Embed Size (px)
Citation preview
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.
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.
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.
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
đưa dữ liệu ra đầu ra.
Dưới đây là hình ảnh một số bộ thu GPS
SKYLAB GB10
GPM100
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.
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
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,-
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.
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:
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:
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.
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.
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.
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
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];;
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)
{
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);
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.