焊板子、擼代碼、寫文章——LuatOS社群工程師們熱火朝天的2022虎年春節寫照。無論何時何處,心里總燃動著靈魂之舞,沒有什么能阻擋真正的熱愛!
今天特別帶來喬幫主喬工關于合宙Air551G雙頻定位開發板的試用分享,一篇詳實易懂的用心之作,尤其適合新上手的朋友們。
1
Air551G開發板試用分享
一、開箱
合宙挺給力,節前就拿到了這塊Air551G開發板,板子制作的不錯,和我其他的板子對比起來,感覺高級不少。
左邊是Air551G,右邊是我另外其他廠家一個型號的。
二、連線
美中不足的是,它的連接線是5針1.25mm的傳感器接口,拿到后,可能沒有合適的線(年前活動未能同步發出,年后有配套接線)。有的同學,直接把接頭口給取下來,直接焊線了。
我手頭剛好有6針的接頭,剪斷一根,削了一針變5針,剛剛好用。
然后把剪斷的部分,對接上標準的杜邦線,方便接在其他開發板上使用。當然,如果本身就有對應的1.25接口,那更好了。
初次使用,看了說明書,可以當一個普通的串口設備使用,那就先直接用USB2TTL連接,進行調試好了。等弄清楚了,再上開發板也不遲。
Air551G開發板有五個引腳,其中VCC使用3.3V或者5V電源均可,GND接地,PPS暫時不用,RX、TX接其他設備的對應的TX、RX即可。
三、串口連接使用
這個開發板,串口波特率默認情況下,選擇115200即可,打開串口,就能看到信息Biu Biu Biu的發過來了。
通過Air551G的手冊,我們可以知道,它是主動上報信息的。通電后,就會自動通過串口上報獲取到的定位相關信息。
收不到定位信息如何解決?
初次使用,如果簡單了解過這些信息的格式,可能會郁悶:怎么沒有成功定位啊,定位到的經緯度信息,怎么都是0呢?
這是因為,一個單純的GPS定位模塊,需要在室外使用,越開闊的地方越好。而我們常用的手機上使用了基站、WIFi等輔助定位,在室內也通常可以定位,但是在地下車庫或者隧道里面,或者信號不好的地方,輔助也不給力,也不能定位了。
那就把Air551放到窗外即可:
不一會兒,串口收到的信息,就發生了變化,數字部分,豐富多了。
串口收到的這些信息,就是導航衛星發送的電文信息,也就是NMEA協議報文。
通常情況下,會包含如下的報文:
定位模塊都會主動獲取衛星定位系統的報文信息,然后通過串口上報。
上面的報文信息,會分為幾類:
1)定位信息:**GGA,通常使用;
2)當前衛星信息:**GSA,一般可以忽略,調試需要;
3)推薦定位信息:**RMC;
4)地面速度信息:**VTG;
5)可見衛星信息:**GSV,一般可以忽略,調試需要。
如果是通過單一的衛星導航系統定位,則上面的**為對應衛星導航系統的標識,如果是多系統定位的話,那么1-4的**會是GN,5則為各衛星導航系統的標識。
衛星導航系統通用標識
-
GN:全球導航衛星系統GNSS;
-
GP:美國全球定位系統GPS;
-
GL:俄羅斯全球軌道導航衛星系統格洛納斯GLONAS;
-
BD:中國的北斗衛星導航系統BDS;
-
GA:歐盟伽利略衛星導航系統GALILEO,全球覆蓋,問題較多;
-
IRN:印度區域衛星導航系統IRNSS,范圍較小,印度本土及周邊、印度洋區域;
-
QZ:日本準天頂衛星導航系統QZSS,是美國GPS的輔助系統,主要服務日本,亦覆蓋東亞、澳洲等地。
Air551G支持的衛星定位導航系統,包括:GPS、BDS、GLONAS、GALILEO、IRNSS等。在北京地區,GPS、BDS、GLONAS、GALILEO都能搜到對應的衛星,IRNSS沒有見到過。
在上述的報文信息中,我們可以看到GP、GL、GA、BD等GSV信息,對應的就是當前位置,可見的各衛星導航系統的衛星信息。其中,我們可以看到有BDGSC,5開頭的BDGSC,5,1至BDGSC,5,5,這個就是一組北斗導航衛星,當前有5顆能為我們提供服務。
但是,其中還有BDGSV開頭的信息,這是因為衛星導航系統有不同的頻段,提供差異性的服務,也包括系統升級和增強對不同接收端系統的兼容。
通過Air551G提供的資料,我們了解到,支持的北斗導航,包括:BD B1I、BD B1C、BD B2A、BD B2B等。
報文信息的具體資料,可以查看合宙提供的資料:
《 2_GK9701輸入輸出格式文檔V1.0.pdf 》中關于NMEA協議部分的詳細說明。
四、經緯度信息到地圖坐標轉換
以上報文信息中的GGA部分信息:
$GNGGA,063508.000,??53.35241,N,??638.40280,E,1,13,1.15,36.02,M,-5.15,M,,*58
E/W之前的為經度信息,N/S之前的為維度信息,GPS拿到的經緯度信息,需要經過轉換兩次后,才能在百度地圖或者其他地圖上使用。
地圖坐標轉換示例
假設取到的原始坐標為:
lng0=11626.27158
lat0=3954.85016
第一次轉換為WGS84坐標系通用格式:
GPS模塊經緯度換算說明,可參考網址:
http://www.gnss-module.com/news/47-cn.html
(Math.floor表示取整)
lng1_d=Math.floor(lng0/100) = 116
lng1_m= (lng0-lng1_d*100)/60 = 0.43786
lng1=lng1_d+lng1_m=116.43786
lat1_d=Math.floor(lat0/100) = 39
lat1_m= (lat0-lat1_d*100)/60 = 0.91417
lat1=lat1_d+lat1_m=39.91417
第二次轉換為百度地圖坐標系:
使用網頁轉換工具地圖坐標系轉換,參考網址:
https://tool.lu/coordinate/
通過上述轉換工具,可以轉換為各地圖軟件的坐標系;或者也可以在各地圖開發者服務中申請對應的API接口。
使用上述網頁進行轉換時,記住我們要選擇WGS84坐標系:
轉換后的百度坐標地址為:
經度=116.45054049919501
維度=39.921605252645946
然后,我們去百度地圖上,使用經緯度進行定位,看看是否準確:
該定位地址,就是我們原始的經緯度信息對應的實際百度地圖位置。
五、NaviTrack基本使用
通過串口工具,能夠正常收到Air551G的信息后,我們就可以使用NaviTrack工具來更有效的獲取調試信息了。
先關閉串口工具,再打開NaviTrack,選擇正確的串口和波特率,Connect后,界面如下:
注意:需要運行一段時間,且Air551G在室外,才能獲得豐富的定位信息。
在以上界面中,各子窗口展示功能:
1)Navi CMD:用于給Air551G發送命令;
2)Track:表示每次輸出經緯度坐標點在一個基準位置的散落情況;
3)Signal:表示各導航衛星的信號情況;
4)NAME info:對串口中的信息進行了整理輸出,更便于查看分析;
5)Fix mode:修正模式;
6)Sky view:當前可見衛星一覽。
如果Sky view中,沒有顯示到衛星,那么定位就不能進行,NAME info部分的經緯度信息,就會不顯示或者顯示為0,同時Singal部分也會沒有信息。
六、指令發送:
在Navi CMD界面中,我們可以給Air551G發送指令。
重置設備指令示例
如果要重置設備,我們可以發送指令:
PGKC030,4,2
其中:030表示指令編號;4,2表示硬重啟,也就是恢復到出廠模式。
在串口工具中,我們也可以發送該指令,但是其格式為完整格式:
$PGKC030,4,2*2A[CR][LF]
而Navi CMD會自動幫我們處理$和*后面的內容,并自動添加回車換行[CR][LF];*后面的2A,表示 $和*中間部分的BCC校驗(異或校驗)結果。
如果不了解如何進行BCC校驗,可以通過網頁進行計算。
BCC校驗(異或校驗)在線計算參考網址:
http://www.ip33.com/bcc.html
由此我們也可以知道,給Air551G發送指令,其格式為:
$PGKC指令編號,參數1,參數2,...,參數n*BCC校驗碼[CR][LF]
注意,其中的參數1~n,均為十六進制,BCC校驗碼,也為16進制。(10進制的10為16進制的A)。
我們還可以再分別嘗試兩條指令,用于查看只使用北斗導航和所有衛星導航的區別。
注意:在串口工具中,需要輸入完整的指令;在Navi CMD中,只用輸入$和*中間的部分即可。
只使用北斗導航示例
先試第一條,設置只使用北斗導航:
$PGKC121,0,8,0*39
執行該指令后,NaviTrack的NMEA info和Sky view界面會發生如下變化:
因為剛才執行的那一條指令,表示只使用L1的BD導航,所以現在只顯示了北斗導航的衛星。
同樣的,如果我們使用串口工具發送指令后,會看到如下返回:
可以看到,報文中,就只有BD的信息了。
注意:使用串口工具,一定要勾選尾部添加CRLF,否則指令無效。
使用所有衛星導航示例
我們在執行使用所有衛星導航指令后,上述界面中的衛星,又會變得多了起來。
$PGKC121,5,3F,3F*34
以上展示了基本的指令使用,在前面的《2_GK9701輸入輸出格式文檔V1.0.pdf》中,有詳細的指令說明,有需要可以仔細研讀。
另外,出廠情況下,串口上報的信息會盡可能豐富,但是我們在實際使用中,如前面對報文簡介所說的,很多只是調試使用,實際使用時不用。我們可以使用輸出控制指令,設置需要輸出哪些信息即可。
具體指令格式為:
實際上,9-21位的0,并不需要輸入,我們只輸入1-8位即可,1表示開啟對應的輸出,0表示關閉對應的輸出。
GGA獲取經緯度信息示例
在實際使用中,我們只需要通過GGA獲取經緯度信息即可,那么發送的指令如下:
$PGKC242,0,0,0,1,0,0*2A
如果我們要把調試的信息都發出來,則使用如下的指令:
$PGKC242,1,1,1,1,1,1*2B
再次提醒:
在串口工具中,需要輸入完整的指令;在Navi CMD中,只需要輸入$和*之間的部分(不包含$和*)即可。
設置只輸出GGA信息后,我們就可以使用其他開發板的串口來連接Air551G,通過串口讀取即可。
到這里,我們了解了如何通過串口上報的報文,獲取經緯度信息,以及通過發送對應的指令來控制Air551G的運行模式了。
后續通過合宙的其他LuatOS開發板,或者MicroPython類的開發板,都能非常方便的獲取定位信息。再結合屏幕,就能夠進行實際的定位展示了。
今天的分享就先到這里了,希望對大家有幫助,一起多交流~
-
開發板
+關注
關注
25文章
5121瀏覽量
97964
發布評論請先 登錄
相關推薦
評論