12294浏览
查看: 12294|回复: 6

[uPyCraft IDE] 一步一步使用uPyCraft学习MicroPython之GPS记录器

[复制链接]
【本期故事】
本期制作一个gps轨迹记录仪,使用的uPyCraft IDE以及micropython。为了叠装在萤火虫esp32上,我们还专门制作了一块扩展板(含gps模块以及oled模块)。下面一起来看看吧。
3.jpg

【硬件清单】
  
品名
  
数量
备注
FireBeetle Board-ESP32
1
带800mah电池一块
Ublox-6mGPS模块
1

Oled
1
0.96寸,ssd1306驱动,IIC接口
FireBeetle Board-空白PCB
1
便于制作gps&oled扩展板
杜邦线
6

【软件准备】
  
品名
  
版本
备注
uPyCraft
V0.20
DF出品MicroPython IDE
Micropygps库

Mp下的gps解析库

【gps&oled扩展板的制作】
利用一块FireBeetle Board-空白PCB,增加两个模块。接线如下:
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)
使用飞线,因为接线不过,所以很容易制作,gps使用三根排针,oled只用四根。
1.jpg



天线采用双面胶固定,你也可以使用其他方式,自由想象吧。gps模块是直插,天线也可换做SMA接口。
2.jpg
【关于Micropygps库】
https://github.com/inmcm/micropyGPS
micropyGPS is a full featured GPS NMEA sentenceparser for use with MicroPython and the PyBoard embedded platform. It's alsofully compatible with Python 3.x
本身为pyb设计,但是是全功能的GPS NMEA解析库。只要用mp以及uart传送gps数据,就可能使用本库进行解析。更多详情可以查看giuhub的介绍。
文档还是比较清楚的,例题方面需要大家自己搜,提供了pyb的例题可以参考。

【软件代码】
  1. from machine import Pin,I2C
  2. import time
  3. import ssd1306
  4. from micropyGPS import MicropyGPS
  5. i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000)
  6. lcd=ssd1306.SSD1306_I2C(128,64,i2c)
  7. com = machine.UART(2,baudrate=9600,rx=25,tx=26,timeout=10) #定义uart2
  8. my_gps = MicropyGPS(8)#东八区的修正
  9. my_gps.local_offset
  10. def get_GPS_values():   
  11.     global gps_values,rtc #定义两个全局变量
  12.     time.sleep(2)
  13.     cc = com.readline()
  14.     for x in cc:
  15.         my_gps.update(chr(x))
  16.     #lat&long
  17.     gps_values = str(my_gps.latitude[0] + (my_gps.latitude[1] / 60)) + ',' + str(my_gps.longitude[0] + (my_gps.longitude[1] / 60))
  18.     #datetime
  19.     date = my_gps.date
  20.     timestamp = my_gps.timestamp
  21.     hour = timestamp[0]
  22. rtc = str(int(timestamp[0]))+":"+str(int(timestamp[1]))+":"+str(int(timestamp[2]))
  23.     return gps_values,rtc
  24. while 1:
  25.   time.sleep_ms(20)
  26.   get_GPS_values()
  27.   lcd.fill(0) #清屏,如果是ssd1306修改的库,可以用clear()
  28.   lcd.show()
  29.   lcd.text("GPS:",5,0)
  30.   lcd.text(gps_values,0,16)
  31.   lcd.text("Sate:",5,36)
  32.   lcd.text(str(my_gps.satellites_in_use),64,36)
  33.   lcd.text("Time:",5,50)
  34.   lcd.text(rtc,64,50 )
  35.   lcd.show()
  36.   my_gps.start_logging('log.txt') #制定存储的文件,是以“追加”的方式打开,请参考库
  37.   my_gps.write_log(gps_values+" "+rtc+" state:" +str(my_gps.satellites_in_use)+"\n")  #记得加入换行符
  38.   time.sleep_ms(100)
  39.   my_gps.stop_logging() #停止记录
  40.   print(gps_values) #本地调试,可删除
  41.   print(rtc)#可删除
复制代码

【测试】
(一)gps模块首先要进行配置和检测,很多玩家直接插单片机,这是我很不推荐的。玩gps模块,首先用usb-ttl转换模块连接到pc上,使用u-center等上位机软件,配置波特率(默认9600),观察其搜星、定位功能是否正常。如果正常了,再开展下一步测试。
(二)上电后,可以看到oled上面显示出三组信息:一组是经纬度,以及转换成小数点形式的以度为单位的数据,第二组是显示gps模块可用的卫星数量。第三组是rtc时间。因为我们已经用了东八区补偿,所以显示的时间就是本地北京时间了。
2秒钟刷新一次数据。
(三)路径的存储,可以将经纬度和rtc数据保存在log.txt上。由于本地flash有限,你也可以加在tf卡上,这样可以长时间保存路径数据。
5.png
(四)提升空间:
一是可以增加一个按钮,驱动数据记录和停止。
二是可以将log.txt的数据格式,记录为google earth的kml格式文件,这样可以直接在谷歌数字地球中导入路径显示。
三是你可以把重复的数据进行过滤,这样可以节省log.txt存储空间。
这三个玩法就有待玩家进一步提升吧,别忘记了和大家分享啊。

(五)存在的问题
一是在运行中,出现过数据解析错误的现象,出现的时间不等,还有待进一步分析。

二是在笔记本电脑(win10)以及台式机(win7)上,在upy使用中,发现过个别库在运行时报错,同样的程序,同样版本0.20,在两个系统上可能出现:
4.png

这是在win7的upy 0.2上出现的,但是在win10上没有问题。可以和师兄们继续探讨。

注意:
(1)对于8266,可以使用两个uart口。其中uart1只能发送不能接收,uart0能接收,但是,repl操作是在uart0上的,所以您不能同时一边uart0与设备进行交互,同时又使用repl。
也就是说,不能在repl调试窗尝试uart0。
(2)汉字注释是为了便于玩家理解,建议运行时删除或改为英文
micropygps库,便于下载。

step5.rar (12.44 KB, 下载次数: 158)

imliu-bo  初级技师

发表于 2017-7-2 16:38:47

:lol抢个沙发  沧海师兄写的总是这么详细 同时还考虑到了 提升方向  必须赞一个  
回复

使用道具 举报

hnyzcj  版主

发表于 2017-7-2 19:18:25

回复

使用道具 举报

秦皇岛岛主  初级技师

发表于 2017-7-3 10:30:05

沧海师兄玩的确实高端。gps输出内容哦分析我还不了解呢。学习了
回复

使用道具 举报

johndavid  学徒

发表于 2022-8-31 14:46:57

micropyGPS.py 如何安装?楼主 upip无法安装。。。急切问一下 ,谢谢 直接上传这个文件到板子内部空间,无法import。。。
回复

使用道具 举报

yoyojacky  初级技匠

发表于 2022-8-31 16:23:17

不错, 加油加油!
回复

使用道具 举报

沧海笑  高级技师
 楼主|

发表于 2022-9-28 21:28:08

johndavid 发表于 2022-8-31 14:46
micropyGPS.py 如何安装?楼主 upip无法安装。。。急切问一下 ,谢谢 直接上传这个文件到板子内部空间,无 ...

下载后,直接传入板子,注意目录以及大小写。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail