【得捷电子Follow me第1期】迷你GPS信号接收仪
[复制链接]
一、项目概述
本项目目标为制作一个迷你GPS信号接收仪。
首先是项目需求介绍,也就是最终有哪些功能,以及界面长啥样,接下来先介绍这两方面内容。
1.1 功能需求
目标功能有:
-
显示温度
-
显示时间
-
显示日期
-
GPS信息
-
网络信息
1.2 界面需求
由于屏幕分辨率太低了,128x64;初步测试可以显示16x8的字符。
简单起见,纯文本界面吧。
显示8行文本:
-
温度
-
时间
-
日期
-
卫星信号
-
速度
-
纬度
-
经度
-
IP地址
二、硬件部分
紧接着是硬件部分介绍,包括有哪些硬件组件,以及主控芯片分配哪些接口和引脚资源用于控制这些硬件组件。
2.1 硬件组件简介
项目使用到的硬件有:
-
Raspberry Pi Pico w开发板
-
树莓派Pico扩展板——GROVE SHIELD FOR PI PICO V1.0
-
GPS扩展板——GROVE - GPS (AIR530)
-
OLED扩展板——GROVE - OLED DISPLAY 0.96"
-
蜂鸣器扩展板——GROVE BUZZER
2.2 芯片资源分配
主控芯片资源使用情况:
分别使用了这些资源用于控制外设:
三、软件部分
随后是软件部分介绍,包括整个项目功能划分为哪些模块,以及各个模块的功能,包括三方模块和新开发的模块。
3.1 软件组件简介
软件部分,一共包含四个模块,两个三方模块,两个新开发模块,整体结构如下图:
3.2 软件组件功能
如上图所示,四个模块主要功能分别为:
-
gps_viewer.py,主体功能实现代码
-
main.py,开机自动运行实现代码
-
MicroGPS,GPS消息解析
-
ssd1306,OLED屏幕驱动
其中,新增模块需要实现的具体功能有:
3.3 三方模块安装
本项目使用了两个三方模块,需要将两个两个模块安装到Pico W开发板的文件系统上后续才可以正常使用。模块安装到Pico W开发板的步骤为:
-
连接可以访问公网的WIFI热点;
-
使用mip模块,安装三方模块;
以下是一段交互式REPL命令执行记录,记录了安装ssd1306模块和micropyGPS模块的过程。
首先连接可以访问公网的Wi-Fi热点(后续需要联网下载模块到板子上):
然后,导入mip模块,再使用mip.install('ssd1306'),安装ssd1306模块:
接下来安装MicroGPS模块:
可以看到,前面几行代码连接到了一个WiFi热点,接下来导入了mip模块(MicroPython自带的),然后:
PS:由于 micropyGPS 原始仓是GitHub的,国内网络环境访问不太稳定,我在Gitee上克隆了一份,这里安装的是我的克隆版。
3.4 新增模块实现
新增模块的实现,主要功能都在gps_viewer.py里面,另外一部分在main.py里面。其中,gps_viewer.py的代码较多,详见本帖子附件文件。
读取和解析GPS消息代码实现如下:
ADC获取温度代码:
获取IP地址:
显示GPS信息:
绘制整个界面:
main.py文件的内容比较简单,用于实现如下:
四、功能展示
最终功能界面如下图所示:
OLED屏幕大小有限,只能显示8行8像素高度的字体,8行已经全部用上了。
五、心得体会
参加本次活动,最大的体会是——使用MicroPython进行简单功能模块的开发非常简单、便捷。如果使用C语言实现同样的功能,必然需要编写更多的代码,更多的代码行,通常也就意味着需要花费更多时间在编译和调试、运行上。
六、参考链接
-
树莓派官方的Pico Python SDK文档: https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-python-sdk.pdf
-
树莓派官方的Pico 的MicroPython示例代码仓:
-
树莓派Pico W MicroPython固件:https://micropython.org/download/rp2-pico-w/rp2-pico-w-latest.uf2
-
MicroPython time模块参考文档: https://docs.micropython.org/en/latest/library/time.html
-
MicroPython ADC模块参考文档: https://docs.micropython.org/en/v1.20.0/library/machine.ADC.html
-
MicroPython Pin模块参考文档: https://docs.micropython.org/en/v1.20.0/library/machine.Pin.html
-
MicroPython I2C模块参考文档: https://docs.micropython.org/en/v1.20.0/library/machine.I2C.html
-
MicroPython UART模块参考文档: https://docs.micropython.org/en/v1.20.0/library/machine.UART.html
-
MicroPython ssd1306模块相关文档: https://docs.micropython.org/en/latest/esp8266/tutorial/ssd1306.html
-
MicroGPS模块开源代码仓:
七、项目视频
https://training.eeworld.com.cn/video/36919
本贴附件:
mini_gps_viewer.zip
(2.91 KB, 下载次数: 3)
|