2017年10月30日 星期一

Arduino GPS ublox NEO 6M 相關教學

之前玩Arduino用到了UART的GPS模塊,芯片是uBLOX的NEO-6M GPS模組,用這款GPS的人其實不少,寫個筆記。



[模塊介紹如下]
1, 模塊采用U-BLOX NEO-6M模組,體積小巧,性能優異。
2, 有放大電路,有利於無源陶瓷天線快速搜星。
3, 模塊可通過UART進行各種參數設置,並可保存在EEPROM,使用方便。
4, 模塊自帶SMA接口,可以連接各種有源天線,適應能力強。
5, 模塊兼容3.3V/5V電壓,方便連接各種單晶片。
6, 模塊自帶可充電後備電池,可以掉電保存數據。

[通信協議]

GPS模塊采用NMEA 0183協議,NMEA 0183是美國國家海洋電子協會(National Marine Electronics Association)為海用電子設備制定的標準格式。目前業已成了GPS導航設備統一的RTCM(Radio Technical Commission for Maritime services)標準協議。
NMEA-0183協議采用ASCII碼來傳遞GPS定位信息,我們稱之為幀(frame)。

幀格式形如:$aaccc,ddd,ddd,„,ddd*hh(換行符CR+LF)

1、“$”:幀命令起始位
2、aaccc:地址域,前兩位為識別符(aa),後三位為語句名(ccc)
3、ddd,.....,ddd:數據
4、"*":校驗和前綴(也可以作為語句數據結束的標志)
5、hh:校驗和,$與*之間所有字符ASCII碼的校驗和(各字節做XOR運算,得到校驗和後,再轉換HEX)
6、(CR+LF):幀結束,ENTER和換行符



最常用的Data是第4個,即GPRMC,推薦定位信息(Recommended Minimum Specific GPS/Transit Data),長度70字節。

$GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR+LF)

(1)  UTC時間,hhmmss(時分秒)
(2)  定位狀態,A=有效定位,V=無效定位
(3)  緯度ddmm.mmmmm(度分)
(4)  緯度半球N(北半球)或S(南半球)
(5)  經度dddmm.mmmmm(度分)
(6)  經度半球E(東經)或W(西經)
(7)  地面速率(000.0~999.9節)
(8)  地面航向(000.0~359.9度,以真北方為參考基準)
(9)  UTC日期,ddmmyy(日月年)
(10) 磁偏角(000.0~180.0度,前導位數不足則補0)
(11) 磁偏角方向,E(東)或W(西)
(12) 模式指示(A=自主定位,D=差分,E=估算,N=數據無效)

舉例如下:

$GPRMC,023543.00,A,2308.28715,N,11322.09875,E,0.195,,240213,,,A*78

[PC端顯示數據]

GPS模塊有一個電腦版軟體叫u-Center,可以對模塊進行參數設置保存到EEPROM,其實也可以通過單晶片UART通信進行設置,但是PC端設置更加人性化,可以立刻看到結果。
打開GPS模塊之後,接上u-Center軟件,可以看到如下數據。
$GPVTG,,,,,,,,,N*30
$GPGGA,160444.00,,,,,0,00,99.99,,,,,,*65
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,3,1,10,03,09,252,24,08,27,206,18,09,08,321,,14,25,160,*77
$GPGSV,3,2,10,16,56,322,,22,08,231,,26,50,016,,27,62,189,*71
$GPGSV,3,3,10,31,45,084,,32,08,156,*7C
$GPGLL,,,,,160444.00,V,N*49
$GPRMC,160445.00,V,,,,,,,291017,,,N*73
$GPVTG,,,,,,,,,N*30
$GPGGA,160445.00,,,,,0,00,99.99,,,,,,*64
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,3,1,10,03,09,252,24,08,27,206,18,09,08,321,,14,25,160,*77
$GPGSV,3,2,10,16,56,322,,22,08,231,,26,50,016,,27,62,189,*71
$GPGSV,3,3,10,31,45,084,,32,08,156,*7C
$GPGLL,,,,,160445.00,V,N*48
$GPRMC,160446.00,V,,,,,,,291017,,,N*70
...
...
***可以去u-center 的 Config → Configuration把大量訊息關閉,留下GPRMC就好,提升MCU效率

以上GPS還沒定到位,若有定到位,$GRPMC會如下:
...
$GPRMC,133306.00,A,3949.63075,N,11616.48616,E,0.513,,120116,,,A*7A
$GPRMC,133307.00,A,3949.63025,N,11616.48614,E,1.053,,120116,,,A*7C
$GPRMC,133308.00,A,3949.63002,N,11616.48641,E,1.101,,120116,,,A*70
...

沒有留言:

張貼留言