python gps模块_一步一步使用uPyCraft学习MicroPython之GPS记录器
本帖最后由 滄海笑 于 2017-7-2 16:06 編輯
【本期故事】本期制作一個(gè)gps軌跡記錄儀,使用的uPyCraft IDE以及micropython。為了疊裝在螢火蟲esp32上,我們還專門制作了一塊擴(kuò)展板(含gps模塊以及oled模塊)。下面一起來看看吧。
3.jpg (52.54 KB, 下載次數(shù): 30)
2017-7-2 15:53 上傳
【硬件清單】品名數(shù)量備注
FireBeetle Board-ESP321帶800mah電池一塊
Ublox-6mGPS模塊1
Oled10.96寸,ssd1306驅(qū)動(dòng),IIC接口
FireBeetle Board-空白PCB1便于制作gps&oled擴(kuò)展板
杜邦線6
【軟件準(zhǔn)備】品名版本備注
uPyCraftV0.20DF出品MicroPython IDE
Micropygps庫(kù)Mp下的gps解析庫(kù)
【gps&oled擴(kuò)展板的制作】
利用一塊FireBeetle Board-空白PCB,增加兩個(gè)模塊。接線如下:
gps:
tx--------D2(FireBeetle Board-ESP32)
vcc-----3V3(FireBeetle Board-ESP32)
GND---GND(FireBeetle Board-ESP32)
OLED
vcc-----3V3(FireBeetle Board-ESP32)
GND---GND(FireBeetle Board-ESP32)
scl-----scl(FireBeetle Board-ESP32)
sda----sda(FireBeetle Board-ESP32)使用飛線,因?yàn)榻泳€不過,所以很容易制作,gps使用三根排針,oled只用四根。
1.jpg (106.91 KB, 下載次數(shù): 27)
2017-7-2 15:53 上傳
天線采用雙面膠固定,你也可以使用其他方式,自由想象吧。gps模塊是直插,天線也可換做SMA接口。
2.jpg (68.21 KB, 下載次數(shù): 33)
2017-7-2 15:53 上傳
【關(guān)于Micropygps庫(kù)】
https://github.com/inmcm/micropyGPS
micropyGPS is a full featured GPS NMEA sentenceparser for use withMicroPython and the PyBoard embedded platform. It's alsofully compatible with Python 3.x
本身為pyb設(shè)計(jì),但是是全功能的GPS NMEA解析庫(kù)。只要用mp以及uart傳送gps數(shù)據(jù),就可能使用本庫(kù)進(jìn)行解析。更多詳情可以查看giuhub的介紹。
文檔還是比較清楚的,例題方面需要大家自己搜,提供了pyb的例題可以參考。
【軟件代碼】
[Python] 純文本查看 復(fù)制代碼from machine import Pin,I2C
import time
import ssd1306
from micropyGPS import MicropyGPS
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000)
lcd=ssd1306.SSD1306_I2C(128,64,i2c)
com = machine.UART(2,baudrate=9600,rx=25,tx=26,timeout=10) #定義uart2
my_gps = MicropyGPS(8)#東八區(qū)的修正
my_gps.local_offset
def get_GPS_values():
global gps_values,rtc #定義兩個(gè)全局變量
time.sleep(2)
cc = com.readline()
for x in cc:
my_gps.update(chr(x))
#lat&long
gps_values = str(my_gps.latitude[0] + (my_gps.latitude[1] / 60)) + ',' + str(my_gps.longitude[0] + (my_gps.longitude[1] / 60))
#datetime
date = my_gps.date
timestamp = my_gps.timestamp
hour = timestamp[0]
rtc = str(int(timestamp[0]))+":"+str(int(timestamp[1]))+":"+str(int(timestamp[2]))
return gps_values,rtc
while 1:
time.sleep_ms(20)
get_GPS_values()
lcd.fill(0) #清屏,如果是ssd1306修改的庫(kù),可以用clear()
lcd.show()
lcd.text("GPS:",5,0)
lcd.text(gps_values,0,16)
lcd.text("Sate:",5,36)
lcd.text(str(my_gps.satellites_in_use),64,36)
lcd.text("Time:",5,50)
lcd.text(rtc,64,50 )
lcd.show()
my_gps.start_logging('log.txt') #制定存儲(chǔ)的文件,是以“追加”的方式打開,請(qǐng)參考庫(kù)
my_gps.write_log(gps_values+" "+rtc+" state:" +str(my_gps.satellites_in_use)+"\n") #記得加入換行符
time.sleep_ms(100)
my_gps.stop_logging() #停止記錄
print(gps_values) #本地調(diào)試,可刪除
print(rtc)#可刪除[/font][/align][align=left][font=宋體]
【測(cè)試】
(一)gps模塊首先要進(jìn)行配置和檢測(cè),很多玩家直接插單片機(jī),這是我很不推薦的。玩gps模塊,首先用usb-ttl轉(zhuǎn)換模塊連接到pc上,使用u-center等上位機(jī)軟件,配置波特率(默認(rèn)9600),觀察其搜星、定位功能是否正常。如果正常了,再開展下一步測(cè)試。
(二)上電后,可以看到oled上面顯示出三組信息:一組是經(jīng)緯度,以及轉(zhuǎn)換成小數(shù)點(diǎn)形式的以度為單位的數(shù)據(jù),第二組是顯示gps模塊可用的衛(wèi)星數(shù)量。第三組是rtc時(shí)間。因?yàn)槲覀円呀?jīng)用了東八區(qū)補(bǔ)償,所以顯示的時(shí)間就是本地北京時(shí)間了。
2秒鐘刷新一次數(shù)據(jù)。
(三)路徑的存儲(chǔ),可以將經(jīng)緯度和rtc數(shù)據(jù)保存在log.txt上。由于本地flash有限,你也可以加在tf卡上,這樣可以長(zhǎng)時(shí)間保存路徑數(shù)據(jù)。
5.png (16.96 KB, 下載次數(shù): 31)
2017-7-2 15:54 上傳
(四)提升空間:
一是可以增加一個(gè)按鈕,驅(qū)動(dòng)數(shù)據(jù)記錄和停止。
二是可以將log.txt的數(shù)據(jù)格式,記錄為google earth的kml格式文件,這樣可以直接在谷歌數(shù)字地球中導(dǎo)入路徑顯示。
三是你可以把重復(fù)的數(shù)據(jù)進(jìn)行過濾,這樣可以節(jié)省log.txt存儲(chǔ)空間。
這三個(gè)玩法就有待玩家進(jìn)一步提升吧,別忘記了和大家分享啊。
(五)存在的問題
一是在運(yùn)行中,出現(xiàn)過數(shù)據(jù)解析錯(cuò)誤的現(xiàn)象,出現(xiàn)的時(shí)間不等,還有待進(jìn)一步分析。
二是在筆記本電腦(win10)以及臺(tái)式機(jī)(win7)上,在upy使用中,發(fā)現(xiàn)過個(gè)別庫(kù)在運(yùn)行時(shí)報(bào)錯(cuò),同樣的程序,同樣版本0.20,在兩個(gè)系統(tǒng)上可能出現(xiàn):
4.png (12.59 KB, 下載次數(shù): 30)
2017-7-2 15:54 上傳
這是在win7的upy 0.2上出現(xiàn)的,但是在win10上沒有問題。可以和師兄們繼續(xù)探討。
注意:
(1)對(duì)于8266,可以使用兩個(gè)uart口。其中uart1只能發(fā)送不能接收,uart0能接收,但是,repl操作是在uart0上的,所以您不能同時(shí)一邊uart0與設(shè)備進(jìn)行交互,同時(shí)又使用repl。
也就是說,不能在repl調(diào)試窗嘗試uart0。
(2)漢字注釋是為了便于玩家理解,建議運(yùn)行時(shí)刪除或改為英文
micropygps庫(kù),便于下載。
step5.rar
(12.44 KB, 下載次數(shù): 80)
2017-7-2 16:06 上傳
點(diǎn)擊文件名下載附件
【感謝】
感謝秦皇島島主師兄的例程和指導(dǎo)。感謝群里玩家的支持,滄海抱拳。
總結(jié)
以上是生活随笔為你收集整理的python gps模块_一步一步使用uPyCraft学习MicroPython之GPS记录器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: priorityqueue 的 add和
- 下一篇: wegame怎么进入离线模式?离线模式可