ESP8266 ESP-12F u-blox5 GPS 模組程式主要是從 UART 接收資料,ESP8266 便會拆解資料,然後顯示在 SSD1306 OLED 顯示屏上。u-blox5 GPS 模組是可以接收到 GPGGA(Global Positioning System Fix Data)、GPGSA(GPS DOP and active satellites)、GPGSV(GPS Satellites in view)、GPRMC(Recommended minimum specific GPS/Transit data)、GPVTG(Track Made Good and Ground Speed)、GPGLL(Geographic Position, Latitude / Longitude and time)、和 GPZDA(Date & Time UTC,day,month,year and local time zone),筆者現在祇是將 GPGGA 的資料訊息拆解,其他未有拆解,等需要便會加入程式內。
ESP8266 u-blox5 GPS 模組 |
大部份的 GPS receiver 都具被有美國國家海洋電子學會(National Marine Electronics Association,NMEA)所制定的標準規格,其制定了所有航海電子儀器間的通訊標準,包括了資料的格式及傳輸資料的通訊協定。NMEA 規格有 0180、0182、0183 等三種,目前廣泛使用的 NMEA-0183 的版本為 Ver. 2.01。
NMEA 格式所傳輸的資料為美國國家標準資訊交換碼(American Standard Code for Information Interchange,ASCII),以「句子(Sentence)」的方式傳輸資料,每一個句子以「$」為起始位置,而以 16進位控制碼「13」、「10」為終止,及 ASCII 中的 Carriage Return{CR} 和 Line Feed{LF} 碼。
GPS 資料信息:
GPS
|
Description
|
說明
|
最大幀長
|
1
|
$GPGGA
|
GPS定位信息
|
72
|
2
|
$GPGSA
|
當前衛星信息
|
65
|
3
|
$GPGSV
|
可見衛星信息
|
210
|
4
|
$GPRMC
|
推薦定位信息
|
70
|
5
|
$GPVTG
|
地面速度信息
|
34
|
6
|
$GPGLL
|
大地坐標信息
|
|
7
|
$GPZDA
|
當前時間 UTC信息
|
$GPGGA(GPS定位信息 / Global Positioning System Fix Data):
- UTC 時間,hhmmss(時分秒)格式
- 緯度 ddmm.mmmm(度分)格式(前面的0也將被傳輸)
- 緯度半球 N(北半球)或 S(南半球) 經度 dddmm.mmmm(度分)格式(前面的0也將被傳輸)
- 經度半球 E(東經)或 W(西經)
- GPS 狀態:0=未定位,1=非差分定位,2=差分定位,6=正在估算
- 正在使用解算位置的衛星數量(00~12)(前面的0也將被傳輸)
- DOP 水準精度因數(0.5~99.9)
- 海拔高度(-9999.9~99999.9)
- 地球橢球面相對大地水準面的高度
- 差分時間(從最近一次接收到差分信號開始的秒數,如果不是差分定位將為空)
- 差分站 ID 號 0000~1023(前面的 0 也將被傳輸,如果不是差分定位將為空)
ESP8266 ESP-12F u-blox5 GPS 模組初始化程式:
// UART0 TX0 - GPIO1
// UART0 RX0 - GPIO3
// Init UART Baud Rate = 9600
uart_init(9600, 9600);
|
ESP8266 ESP-12F u-blox5 GPS 模組讀取數據程式:
/******************************************************************************
* GPGGA (Global positioning
system fix data)
*
* Field Name Format Unit Description
* 0 $GPGGA string - Message ID, GGA protocol header
* 1 hhmmss.ss hhmmss.sss - UTC
Time
* 2 Latitude ddmm.mmmm - Latitude
* 3 N char - N/S Indicator
* 4 Longitude dddmm.mmmm- Longitude
* 5 E char - E/W indicator
* 6 FS digit - Position Fix Status Indicator
* 7 NoSV numeric - Satellites
Used
* 8 HDOP numeric - Horizontal
Dilution of Precision
* 9 msl numeric m MSL
Altitude
* 10 uMsl char - Units, Meters
* 11 Altref numeric m Geoid
Separation
* 12 uSep char - Units, Meters
* 13 DiffAge numeric s Age
of Differential Corrections
* 14 DiffStation numeric - Diff.
Reference Station ID
* 15 cs hexadecimal - Checksum
* 16
******************************************************************************/
void ICACHE_FLASH_ATTR
parse_gga(uint8 *nmea)
{
uint8 nmealen = os_strlen(nmea);
uint8 *p = nmea;
uint8 q[20] = {0};
// get time
p = os_strchr(p, ',')+1;
uint8 spos, epos, pstr, nstr, nfield;
spos=0;
nfield=0;
for(epos=0; epos
{
//os_memcpy(&q,
p, 9);
pstr=p[epos];
if
(pstr == ',')
{
nfield++;
nstr=epos-spos;
if
(nstr>0)
{
substring(p, q,
spos,nstr);
switch(nfield){
case 1:
parse_utc(&gps_string,
q);
break;
case 2:
parse_latitude(&gps_string,
q);
break;
case 3:
gps_string.gps_latitudeD[0]
= q[0];
gps_string.gps_latitudeD[1]
= '\0';
break;
case
4:
parse_longitude(&gps_string,
q);
break;
case 5:
gps_string.gps_longitudeD[0]
= q[0];
gps_string.gps_longitudeD[1]
= '\0';
break;
case 7:
gps_string.gps_NoSV[0]
= q[0];
gps_string.gps_NoSV[1]
= '\0';
case 9:
parse_altitude(&gps_string,
q);
break;
default:
break;
}
// End Switch
spos=epos+1;
}
}
}
}
|
u-blox5 GPS 模組放置在窗簾上 |
ESP8266 u-blox5 GPS 模組顯示 GPS 資料 |
ESP8266 u-blox5 GPS 模組顯示 GPS 資料 |
全球衛星系統:
- 全球導航衛星系統 - (GNSS)Global Navigation Satellite System (GNSS)
- 全球定位系統(GPS) - Global Positioning System (GPS)
- GLONASS(俄羅斯) - GLONASS (Russian)
- 北斗(BDS) - (中國)BeiDou (BDS) (Chinese)
- 伽利略(歐洲) - Galileo (European)
- 印度區域導航衛星系統(IRNSS) - Indian Regional Navigation Satellite System (IRNSS) (India)
- 準天頂衛星系統 (QZSS) - (Japan) Quasi-Zenith Satellite System (QZSS) (Japan)
- 中國區域定位系統 - (CAPS)
- X射線脈衝星導航 - (X-ray Pulsar-based Navigation)
※ Snooper Shotsaver Tour Pro S320 拆解(一)
※ DIY - ESP8266:ESP-12F u-blox5 GPS 模組介紹(八十九)
※ DIY - ESP8266:ESP-12F u-blox5 GPS 模組組裝(九十)
※ DIY - ESP8266:ESP-12F u-blox5 GPS 模組 u-center 測試(九十一)
※ DIY - ESP8266:ESP-12F u-blox5 GPS 模組電路(九十二)
2018年 5月 11日 天氣報告
氣溫:24.5度 @ 21:20
相對濕度:百分之 88%
天氣:大致多雲
沒有留言:
張貼留言