0 đánh giá

GPS là gì, lập trình giao tiếp với nó dùng Vi điều khiển như thế nào

Trong cuộc sống hiện đại GPS là phần không thể thiếu. Bài hướng dẫn này chúng ta sẽ tìm hiểu xem nó là gì và lập trình giao tiếp với nó như thế nào.

Bước 1: GPS là gì ?

Hệ thống Định vị Toàn cầu (tiếng Anh: Global Positioning System - GPS) là hệ thống xác định vị trí dựa trên vị trí của các vệ tinh nhân tạo, do Bộ Quốc phòng Hoa Kỳ thiết kế, xây dựng, vận hành và quản lý. Trong cùng một thời điểm, tọa độ của một điểm trên mặt đất sẽ được xác định nếu xác định được khoảng cách từ điểm đó đến ít nhất ba vệ tinh. Tuy được quản lý bởi Bộ Quốc phòng Hoa Kỳ, chính phủ Hoa Kỳ cho phép mọi người trên thế giới sử dụng một số chức năng của GPS miễn phí, bất kể quốc tịch nào.

Các vệ tinh GPS bay vòng quanh Trái Đất hai lần trong một ngày theo một quỹ đạo rất chính xác và phát tín hiệu có thông tin xuống Trái Đất. Các máy thu GPS nhận thông tin này và bằng phép tính lượng giác tính được chính xác vị trí của người dùng. Về bản chất máy thu GPS so sánh thời gian tín hiệu được phát đi từ vệ tinh với thời gian nhận được chúng. Sai lệch về thời gian cho biết máy thu GPS ở cách vệ tinh bao xa. Rồi với nhiều quãng cách đo được tới nhiều vệ tinh máy thu có thể tính được vị trí của người dùng và hiển thị lên bản đồ điện tử của máy.Máy thu phải nhận được tín hiệu của ít nhất ba vệ tinh để tính ra vị trí hai chiều (kinh độ và vĩ độ) và để theo dõi được chuyển động. Khi nhận được tín hiệu của ít nhất 4 vệ tinh thì máy thu có thể tính được vị trí ba chiều (kinh độ, vĩ độ và độ cao). Một khi vị trí người dùng đã tính được thì máy thu GPS có thể tính các thông tin khác, như tốc độ, hướng chuyển động, bám sát di chuyển, khoảng hành trình, quãng cách tới điểm đến, thời gian Mặt Trời mọc, lặn và nhiều thứ khác nữa.

Bước 2: Module GPS

- Module GPS có nhiều hãng sản xuất, tuy nhiên đều được đóng gói giống nhau với 1 Antena, Thường dùng điện áp thấp 3,3V hoặc 5V. Khi nối  chân TX, RX với vi điều khiển bạn cần nối nối tiếp với một điện trở 1K để có thể giảm điện áp 5V từ  Vi điều khiển. GPS có tiêu thụ công suất thấp tầm 50~100mAh. Ở trên module thường có mối hàn và đi kèm với 1 ănten sứ.  Khi muốn cố định ănten này bạn chỉ cần dáng cố đinh ănten vào nơi bạn muốn.

- Tốc độ cập nhật vị trí của GPS khoảng 1Hz. Các module mới có thế 5Hz, tức khoảng 1 đến 1/5 giây 1 lần. Có nhiều module hỗ trợ các bộ nhớ để log dữa liệu.

- Về đấu nối thì module giao tiếp với điều khiển qua chuẩn truyền nối tiếp nên với Arduino ta chỉ cần nối với cổng Serial 0 hoặc Serial 1 là tùy bạn. Chân RX của Module nối với chân TX của Arduino và ngược lại.

Bước 3: Giải mã giao thức NMEA

Làm sao để ta nhận dữ liệu ?. Thường module gửi trả cho bạn dữ liệu ký tự mã ASCII, mã đó được dựa trên giao thức NMEA. 

Giao thức NMEA là gì ?: 

NMEA viết tắt của từ: The National Marine Electronics Association, dòng dữ liệu của nó bắt đầu với dấu $. các số liệu được cách nhau bằng dấu (,). sau dấu (,) có ký tự khoảng trắng. Gồm có các dòng dữ liệu GPGSA, GPRMC, GPVTG, GPGGA.

GPGSA: Global Positioning Active Satellites, Nói lên số vệ tinh hiên đang gần với module của ta, càng nhiều vệ tinh thì dữ liệu càng chính xác.

GPRMC: Global Positioning Recommended Minimum Coordinates. Đây là dữ liệu chính, nếu dữ liệu nhận thành công thì nó gồm thông tin Kinh độ, Vĩ độ, Tốc độ (trong đơn vị hải lý).

- GPVTG: Global Positioning Course Over Ground (Track Good), Chứa thông tin về tốc độ của mặt đất là bao nhiêu hải lý và bao nhiêu km/h.

- GPGGA: Global Positioning System Fix Data, Chưa các dữ liệu nhằm nâng cao độ chính xác của vị trí ví dụ như độ cao chẳn hạng. Nó gọi là chuổi RMC

Bước 4: Phân tích cú pháp dữ liệu để hiểu rõ thông tin nhận được

Tiến hành phân tích chuỗi GPGGA bạn sẽ có các dữ liệu sau: 

- UTC Time (Định dạng hhmmss.sss (hours, minutes, seconds, and milliseconds). Thời gian hện tại

- Latitude (Vĩ độ) định dạng ddmm.mmmm (degrees, minutes). 

- N/S Indicator: N = Bắc, S = Nam.

- Longitude (Kinh độ) : dddmm.mmmm (định dạng như vĩ độ)

- E/W Indicator: E = Đông, W = Tây.

- Position Fix: 0 = Không hợp lệ, 1 = Hợp lệ loại SPS, 2 = Hợp lệ loại DGPS, 3 = Hợp lệ loại PPS

- Satellites Used: Số vệ tinh sử dụng (1~12).

- HDOP: Nói lên độ chính xác của phép ước lượng vị trí. Càng nhỏ các tốt.

- Checksum dùng để kiểm tra tính hợp lệ của dữ liệu đã nhận được.

Bước 5: Thư viện lập trình GPS với Arduino

Chúng ta cần các thư viện giúp ta bóc rách dữa liệu được phân tích phía trên được dễ dàng. Gồm có rât nhiều thư viện gồm có: AdaGPSTinyGPS++. Bạn click vào liên kết để tìm hiểu thêm về các thư viện hày các cách sửa dụng. Vi dụ với TinyGPS++ bạn chỉ cần gọi gps.location.rawLat() hoặc gps.speed.mph().


Bước 6: Lời kết

Tôi hi vọng sẽ giúp bạn hiểu rõ hơn về GPS và cách lập trình nó. Chúc bạn làm ra được các sản phẩm hay và tham gia chia sẻ bài viết, hướng dẫn hay của mình đến KHOERE.COM.

(!) Nếu có bất kỳ thắc mắc nào cần hỏi vui lòng đặt câu hỏi tại HỏiHay.Net, Cộng đồng Hỏi đáp Hỏi Hay sẽ trả lời bạn.
2,668 lượt xem ^tháng ^ngày, ^năm
admin 2,030 điểm

Please log in or register to Comment this Media.