Arduino使用GPS模塊


本文介紹了在Arduino板子上使用現有的GPS模塊,並對採集來的GPS標準語言NMEA信息進行提取加工,得到最終的位置信息。


原材料:

1、Arduino開發板及附件

2、1575R-A GPS模塊 

3、杜邦線若干

如圖:


1. 1575R-A GPS模塊簡介

1575R-A是衆多GPS天線中的一種,其工作頻率爲1575.42MHz,阻抗50歐姆,材質爲陶瓷,尺寸和具體參數如圖所示。

該模塊帶有一個外部天線,並且內置EEPROM。

●    接口:RS232 TTL

●    電源:3V至5V

●    默認波特率:9600 bps

●    支持標準的NMEA

要了解如何在Raspberry Pi上使用GPS模塊,您可以閱讀以下鏈接:使用Raspberry Pi和GPS模塊的位置變化的電子郵件報警系統
 

2、引腳接線

GPS模塊有四個引腳:VCC、RX、TX和GND。該模塊使用TX和RX引腳通過串行通信與Arduino開發板進行通信,接線簡單:

 

3、原理圖及管腳定義

按照以下原理圖將GPS模塊連接到Arduino開發板。

 

定義:

●    模塊GND引腳連接到Arduino的GND引腳

●    模塊RX引腳連接到Arduino引腳3

●    模塊TX引腳連接到Arduino引腳4

●    模塊VCC引腳連接到Arduino的5V引腳

 

4、程序代碼

將以下代碼複製到您的Arduino IDE並上傳到Arduino開發板上。

/*
 * Rui Santos 
 * Complete Project Details http://randomnerdtutorials.com
 */
 
#include <SoftwareSerial.h>

// The serial connection to the GPS module
SoftwareSerial ss(4, 3);

void setup(){
  Serial.begin(9600);
  ss.begin(9600);
}

void loop(){
  while (ss.available() > 0){
    // get the byte data from the GPS
    byte gpsData = ss.read();
    Serial.write(gpsData);
  }
}

本示例假定您使用引腳4和3作爲RX和TX串行引腳與GPS模塊建立串行通信。如果您正在使用其他引腳,則應在編輯以下代碼行:

SoftwareSerial ss(4,3);

此外,如果您的模塊使用不同於9600 bps的默認波特率,則應修改以下行中的代碼:

ss.begin(9600);

這個示例監聽GPS串行端口,當從模塊接收到數據時,它被髮送到串行監視器。

while (ss.available() > 0){
  // get the byte data from the GPS
  byte gpsData = ss.read();
  Serial.write(gpsData);
}

使用波特率9600打開串行監視器。

你應該得到一堆GPS標準語言NMEA的信息。串行監視器中的每一行都是NMEA語句。NMEA全稱美國國家海洋電子協會(National Marine Electronics Association),在GPS領域,它是GPS製造商支持的標準數據格式。

5、瞭解NMEA

NMEA語句以$字符開頭,每個數據字段用逗號分隔

$GPGGA,110617.00,41XX.XXXXX,N,00831.54761,W,1,05,2.68,129.0,M,50.1,M,,*42
$GPGSA,A,3,06,09,30,07,23,,,,,,,,4.43,2.68,3.53*02
$GPGSV,3,1,11,02,48,298,24,03,05,101,24,05,17,292,20,06,71,227,30*7C
$GPGSV,3,2,11,07,47,138,33,09,64,044,28,17,01,199,,19,13,214,*7C
$GPGSV,3,3,11,23,29,054,29,29,01,335,,30,29,167,33*4E
$GPGLL,41XX.XXXXX,N,00831.54761,W,110617.00,A,A*70
$GPRMC,110618.00,A,41XX.XXXXX,N,00831.54753,W,0.078,,030118,,,A*6A 
$GPVTG,,T,,M,0.043,N,0.080,K,A*2C

有NMEA句子的不同類型。消息的類型由第一個逗號前的字符指示。$之後的GP表示它是GPS位置。 $ GPGGA是基本的GPS NMEA消息,提供3D位置和準確性數據。在下面的句子中:

$ GPGGA,110617.00,41XX.XXXXX,N,00831.54761,W,1,05,2.68,129.0,男,50.1,M,* 42

●    110617 - 表示固定地點的時間,UTC時間11:06:17

●    41XX.XXXXX,N - 北緯41度XX.XXXXX'N

●    00831.54761,W - 經度008度31.54761'W

●    1 - 固定質量(0 =無效; 1 = GPS修正; 2 = DGPS修正; 3 = PPS修正; 4 =實時運動學; 5 =浮動RTK; 6 =估計(航位推測); 7 =手動輸入模式; 8 =模擬模式)

●    05 - 正在跟蹤的衛星數量

●    2.68 - 水平位置因子

●    129.0,M - 海拔高度,以米爲單位

●    50.1,M - 大於WGS84橢球體的大地水準面(平均海平面)的高度

●    空字段  - 自上次DGPS更新以來的秒數

●    空字段 - DGPS臺站ID號

●    * 42 - 校驗和,數據總是以*開頭

其他NMEA句子提供了其他的信息:

●    $ GPGSA - GPS DOP和主動衛星

●    $ GPGSV - 詳細的GPS衛星信息

●    $ GPGLL - 地理緯度和經度

●    $ GPRMC - 基本的GPS pvt(位置、速度、時間)數據

●    $ GPVTG - 速度很好

要知道這些句子中每個數據字段的含義,可以在以下鏈接查閱NMEA數據:http://www.gpsinformation.org/dale/nmea.htm

 

 

【程序如果報 302 240 錯誤,解決辦法】

問:這類錯誤是什麼原因:error: stray '\302' in program?

答:此種錯誤,可能程序本身沒有語法錯誤,應該是每一行的空格的編碼不對,只需要將程序出錯行前面的空格刪掉,然後讓程序再退回即可解決問題!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章