Energia – Bài 7: Lấy dữ liệu từ GPS với TIVA C

Ở bài viết này mình sẽ hướng dẫn các bạn lấy dữ liệu từ một modul GPS sử dụng TIVA C

Chuẩn bị

Phần cứng

  • TIVA C Launchpad
  • Modul GPS ( Ở đây mình sử dụng modul Neo 6M)
  • Modul USB2UART PL2303 (hoặc tương tự)

Phần mềm

  • Energia IDE
  • Terminal để hiển thị thông tin (mình dùng Teraterm)
  • Thư viện TinyGPS hoặc tải tại đây

Kiểm tra modul GPS

gps_neo_6m_modul

Trước tiên chúng ta cần kiểm tra hoạt động của GPS như thế nào, kết nối PL2303 và GPS theo sơ đồ chân như sau

PL2303GPS
3v3VCC
TXRX
RXTX
GNDGND

Khi đã kết nối dây và cắm vào cổng USB máy tính ta sẽ thấy đèn LED của PL2303 chớp, quan sát qua terminal với baud 9600 sẽ có dữ liệu

gps_failed_connect

Ta thấy có dữ liệu tức là đã giao tiếp được thành công, tuy nhiên giá trị toàn là 99.99 có nghĩa là GPS chưa lấy được tọa độ chính xác. Chúng ta phải chờ một lúc mới có tín hiệu

gps_success_connect

Khi có được kết quả như trên nghĩa là đã giao tiếp thành công và lấy được dữ liệu về vị trí tọa độ, thời gian,… Coi như yên tâm có thể lấy modul GPS này để giao tiếp với anh TIVA C mà không phải lo lắng nhiều rồi.

Lưu ý:

Một số lưu ý quan trọng khi test modul GPS mà các bạn cần lưu ý

  1. Nguồn cấp: GPS Neo 6M hoạt động với nguồn từ 3.3V – 5V
  2. Kết nối dây đúng: khi nào ra được tọa độ 99.99 là giao tiếp thành công
  3. Đèn báo hiệu: khi LED trên modul GPS chớp tắt thì mới lấy được tọa độ hiện tại
  4. Vị trí: nên test ở modul ở vị trí thoáng mát, ở ngoài trời thì càng tốt để bắt được vị trí nhanh hơn.
  5. Kiên nhẫn: nhiều modul có thể lấy được tọa độ ngay, nhiều cái thì rất lâu, 20 30ph tới cả tiếng, nên bạn cần phải kiên nhẫn nếu có gặp phải trường hợp này thì cứ treo máy để đó làm việc khác cho nhanh.

Lấy dữ liệu GPS với TIVA C

Lấy dữ liệu thô

Ở bước này mình sẽ bỏ PL2303 ra kết nối GPS với TIVA C và lập trình để bắt dữ liệu từ GPS gửi lên, dữ liệu này là dữ liệu thô toàn là GPGxx. Chương trình mình sẽ sử dụng 2 Serial, 1 là để giao tiếp nhận dữ liệu từ GPS với baud 9600,  1 để debug hiển thị dữ liệu lên máy tính với baud 115200, cách kết nối dây mình xin ghi chú ở trong code luôn.

Chương trình

Kết quả

Xem như chúng ta đã lấy được dữ liệu thô từ GPS rồi, giờ làm sao để biết đâu là kinh độ, đâu là vĩ độ, đâu là thời gian, tốc độ ? Có 2 cách để làm việc này, thứ nhất là tự viết các hàm để xử lý, cách còn lại thì đơn giản và dễ dàng hơn là sử dụng thư viện sẵn có, mình chọn cách 2 cho đơn giản, tận dụng kế thừa được cái người ta đã viết khá ổn rồi. Ở đây mình chọn thư viện TinyGPS có thay đổi và chỉnh sửa để  chạy được với TIVA C

Xử lý thông tin GPS

Chương trình

Kết quả chúng ta sẽ có được thông tin về tọa độ

terminal_tiva_gps_simple_test

Hiển thị tất cả thông tin của GPS

Coi như phần hiển thị thông tin cơ bản đã xong, giờ xử lý tiếp và hiện toàn bộ thông tin xem thế nào

Chương trình

Kết quả sẽ có rất nhiều thông tin được hiển thị như hình

terminal_tiva_gps_test_gps_device2

Tạm kết

Mình đã hướng dẫn các bạn cách test một modul GPS, đọc dữ liệu từ GPS sử dụng TIVA C và hiển thị toàn bộ thông tin từ GPS theo cách đơn giản nhất, với cách này bạn cs thể đọc được tất cả các loại GPS có trên thị trường dùng chuẩn NMEA,chuẩn dữ liệu NMEA của GPS, về những phần như cấu trúc của GPS như thế nào,cách người ta tạo ra thư viện TinyGPS xin hẹn các bạn ở một bài viết khác.

4
Leave a Reply

avatar
2 Comment threads
2 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
TivaCSeriesEmbeddedscDuyn Recent comment authors

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

  Subscribe  
newest oldest most voted
Notify of
Duyn
Guest
Duyn

ad cho mình hỏi cái thư viện đó là của Arduino mình có thể sử dụng được cho TIVA để add vào trình biên dịch và lấy code đó chạy được không ạ

Embedded
Guest
Embedded

Hi ad, trong phần lấy dữ liệu thô, máy e nó báo là :Identifier “Serial” is undifined” là sao ad? Mình cần phải add thêm gì để nó nhận diện được Serial? E dùng IAR workbech IDE.
Thanks ad!