此文章仅发布之前公开的 树莓派PICO/RP2040 GPS系统硬件用代码,并且记录更新日志以及提供免费下载...

这是P哥为 RetroMagic LCD/GPS 开发套件提供的一套演示代码,请勿做商业用途,仅限个人观摩参考!
这是一个极具挑战性的项目,因为RP2040虽然是M0架构双核处理器,但是由于只有264KB可用内存...
并且有一部分外部电路需要和配套软件同步设计,当然我们也会保留第三方硬件支持,只是说自己设计的电路可以极大减少插线需求...
所以要完整再现我设想的功能,对多核心计算+调用,中文+英文字幕载入,TF卡读写操作,屏幕快速刷新和缓存...
都要靠这264KB内存中完成,所以这波代码完成后对喜欢开发的兄弟,绝对是有帮助的。
日常情况下大家大部分就是读取一个GPS信息显示,完成,从未有人再ARM单片机上做如此复杂的,需要大量协同代码工作的东西...
其实常用的STM32, 51等单片机做显示是没问题,但是若是复杂操作的时候,RP2040的双核心,可定制GPIO引脚都会发挥威力...
请期待吧,我们来完成这个几乎不可能的事情!!!
软件支持的功能说明(RP2040 + GPS模块 实现):
1、所需字库(完成),12x12英文大小写+数字+符号;系统需要用到的16x16点阵中文字库;
2、时间显示(完成) 来自GPS卫星系统误差只有ns级别,绝对精确;
3、坐标显示(完成) 纬度和经度小数点后保持5位,米级定位,可直接把 纬度(英文逗号)经度 复制到GoogleEarth等软件查看准确位置;
4、海拔显示(完成) 来自多个GPS卫星信息计算得到,卫星链接越多越精准;
5、速度显示(未完成) 因为后面的显示状态可能导致这个信息位置会调整,所以其实已经有了只是没展示出来;
6、卫星显示(完成) 根据GPS模块支持情况,目前会统计 GPS、Beidou、Galileo、QZSS等卫星系统 当前在用数量/已扫描到数量;
7、内存显示(完成)根据当前功能运行时,动态显示目前RP2040 CPU内置运行内存264K还剩下多少可用;
软件支持的功能说明 附加1(RP2040 + GPS模块 + RTC实时时钟模块 实现):
(未完成,正在写代码)
实时时钟保持,再GPS卫星信号不好(比如城市楼宇间,洞子里面)的时候保持时钟精度,而不是靠大概1秒增加一次计数...
为了这个功能,目前P哥开发了2个不同尺寸的高精度模块,正在测试,这个单列文章说明...
有兴趣的可以点击 RTC时钟超mini版 or RTC时钟标准版 查看;
软件支持的功能说明 附加2(RP2040 + GPS模块 + RTC实时时钟模块 + TF存储模块 实现):
(未完成 目前再抓取地理信息中 预处理这些分片后会达到数十万级别的数据需要时间)
地理围栏状态显示,地理围栏可以把地图的行政区域划分成多个块,用当前GPS坐标+速度测算...
动态计算加载当前和周围20-50KM距离内的行政区域,让LCD可以显示当前所在地方;
山川河流信息显示,若是资源足够将会增加 通过GPS判断,显示你附近一定距离内有什么山脉 河流 古迹 等等信息;
为了不违反法律,用返查算法查询公开数据库来显示当前位于的省市区,也不渲染几何图形和道路,合理避开了地图测绘这种政策;
轨迹记录,因为有了TF卡的大容量存储存在,我们可以采用标准GPX格式来记录你的行程,并且这一开放格式...
你可以导入比如Google Earth 创建你的个人经历,可以分享给手持GPS的徒步爱好者...
软件支撑平台说明:
1、此软件用树莓派PICO RP2040开发板 或 RetroMagic LCD/GPS 开发套件支持;
2、所有代码均为MicroPython语言写成;
3、GPS模块可用标准的 UART口的、输出NMEA0183协议的GPS模块,3.3V供电,接线方式如下:
TX = GP1
RX = GP0
SDA = GP18(电子罗盘用 若无可以不接)
SCL = GP19(电子罗盘用 若无可以不接)
5、LCD屏幕采用ST7789核心 170x320 分辨率(纵向屏右转90度接口在右侧 卧式使用),接线方法如下:
目前LCD已经集成到RP2040 LCD/GPS套件中,自备则注意是1.9寸 170x320分辨率 ST7789驱动,3.3V供电,必须按下描述接线
GND = GND
VCC = 3.3V
SCL = GP2(SPI0 SCK)
SDA = GP3(SPI0 TX)
RES = GP4
DC = GP5
CS = GP6
BLK = GP7 (PWM背光控制 通常0-65535级亮度)
6、地理所属区域显示、山川河流古迹显示,轨迹记录等等... 需要存储到TF卡,TF卡读卡器组件接线方法如下:
这个地方需要注意,在中国区为了避开地图测绘相关规定,我们只显示地理位置位于X省X市X区,等于反查而不能搞高精度的地图!切记!
目前TF卡插已经集成到RetroMagic LCD/GPS套件中,若是自己用开发板搞自己购买,但是必须按下描述接线
PIN5 CLK = GP10
PIN3 MOSI = GP11
PIN7 MISO = GP12
PIN2 CS = GP13
PIN9 SWITCH = GP08 (TF卡插入检测开关信号,若无则不接)
源代码下载链接: 暂未公布,等P哥的定制 RP2040 LCD/GPS 开发板硬件出来就会公开;
写在最后这里的是更新日志,方便大家知道我最近做了什么改动,因为前期搞了3个月了 所以老的就不写了:
若是有兴趣的兄弟,可以加QQ群1013874323,备注:RP2040开发板... 微信群就不做了,对我们这种目的来说不方便;
2025-11-07 花了2天时间,把原来2000多个汉字的字库扩展到标准6768个汉字 仅有224KB;显示改为二分法读取 飞快;RP2040目前空闲内存做到了204KB左右;
2025-11-05 集成1.9寸170x320分辨率的RP2040开发板生产中,到手测试没问题就准备发布代码了;目前代码正在优化内存消耗问题(又腾出了12KB可用);
2025-11-02 终于...生成字库、编辑字库工具完成!之前因为调试没打算放出,现在准备打包成EXE一起提供方便大家微调;
2025-11-01 目前16x16点阵抓取字库工具包正在开发 - 对字库内某一个字做点阵编辑。方便单独修正自动生成的一些不完美地方;
2025-10-31 为了让新开发板有其他用途,P哥正在完全重建12x12英文样式和16x16中文字库结构,以及重写控制函数,方便其他目的时调用;
16x16点阵字库和之前不兼容,但是读取速度更快,下面是生成字库之后判断是否正常的工具界面(PC端)
目前抓取了2400多个汉字点阵,容量是79KB,用BIN二级制存储,加载速度极快几乎是ms级别的;
2025-10-30 目前我已经让字符视觉更易读,但依旧给大家做了个EXE工具,针对驱动代码内置的英文点阵字库可以自己修改;
2025-10-29 因为不想用第三方显示代码,然后对字库漂亮程度存疑,所以正在重建一个12x12点阵生成代码工具 用Direct2D+ClearType方式;
2025-10-28 重建了12x12英文常用字库之后,重新校准主显示高度没有对齐问题;
2025-10-27 重建12x12英文字库,试图让它显示更清楚,放弃掉以前8x8字库拉伸12x12显示太粗的问题;
2025-10-24 RP2040 LCD/GPS开发板开始生产,比初版增加了TF卡槽链接,待到货后测试,以便后续深度开发计划;
2025-10-22 开始设计锂电池供电模块+分压检测电路,后面用RP2040 GPIO引脚判断电压,以便后续可以显示锂电池电量或告警;
2025-10-19 全部GPIO引脚重新整理,方便即将到来的RP2040 LCD/GPS开发板统一;
2025-10-18 因为内存不能占用太多,但SPI一个一个点传输会导致闪烁,所以做了个局部双缓冲然后SPI一并发送;
2025-10-16 修改了16x16点阵中文字库,用cleartype渲染笔画更简洁,减少扭动感觉;
2025-10-11 主功能代码完成,现在需要处理16x16中文和12x12英文+字符美观问题;