main
RTKConfig-32C3
基于 ESP32-C3 的 RTK 差分转发设备工程,支持 BASE 和 ROVER 两种工作模式。
BASE模式:读取UM982输出的 RTCM 差分数据,并上传到服务器。ROVER模式:连接NTRIP caster获取差分数据,写入UM982,同时回传GGA。
当前固件版本:v2.1.5
1. 项目概述
这个工程用于把 ESP32-C3 做成一台小型 RTK 差分接入设备,核心能力包括:
- 同时工作在
AP + STA模式 - 提供本地 Web 配置页面
- 保存配置到
Preferences / NVS - 支持 BASE / ROVER 双模式切换
- 支持 OTA 检查、下载和升级
- 支持路由器、服务器、NTRIP、串口等状态可视化
项目当前主要服务于 UM982 模块接入场景。
2. 工作模式
2.1 BASE 模式
BASE 模式下,设备会:
- 从
UM982串口读取 RTCM 原始字节流 - 通过
STA连上外部路由器 - 连接目标 TCP 服务器
- 先发送:
BASE <station_id>\n
- 再持续上传 RTCM 数据
适用于“基站把差分上传到上位服务器”的场景。
2.2 ROVER 模式
ROVER 模式下,设备会:
- 从 Web 配置里读取
NTRIP caster地址、端口、挂载点、账号和密码 - 通过
STA连上外部路由器 - 以
NTRIP Client方式连接 caster - 从服务器接收差分数据并写入
UM982 - 从
UM982串口读取 NMEA,并只回传GGA
适用于“流动站通过 NTRIP 获取差分修正”的场景。
3. 主要功能
- 支持
BASE / ROVER一键切换 - 支持
SoftAP本地热点配置 - 支持
STA自动重连和退避重试 - 支持 TCP / NTRIP 自动重连
- 支持串口状态、网络状态、差分状态可视化
- 支持 OTA 在线检查和升级
- 支持分页面配置保存
4. 硬件与串口
4.1 默认硬串口引脚
UART1RX = GPIO1TX = GPIO0
4.2 默认串口参数
- 波特率:
115200
4.3 调试串口
UART0 / Serial- 用于下载、调试和启动日志输出
UART1 / UM982- 固定用于连接
UM982 - 固定引脚为
RX = GPIO1、TX = GPIO0 - 不提供用户修改入口
- 固定用于连接
5. 默认参数
5.1 SoftAP
- SSID:
ClearRTKConfig-xxxxxx- 后缀由芯片 MAC 后 24 bit 自动生成
- Password:
Bone1644
5.2 BASE 默认值
- 站点编号:
GD_SZ_001 - 服务器地址:
107.173.157.41:9000
5.3 ROVER 默认值
NTRIP port默认值:2101- 其余
NTRIP项默认留空,需用户自行配置
6. Web 页面结构
当前 Web 页面主要分为以下区域:
运行状态- 显示 Wi‑Fi、服务器、GNSS 串口、差分数据四张状态卡
- 支持在这里执行“重启设备”
基础设置- BASE:站点编号、服务器地址
- ROVER:NTRIP 地址、挂载点、账号、密码
网络设置- 路由器名称、路由器密码
串口设置- 波特率、RX、TX
固件升级- 检查更新、开始升级、查看升级状态
右上角模式标识可直接点击切换 BASE / ROVER,切换后设备会立即重启。
7. 状态语义
首页重点展示四类状态:
Wi‑Fi服务器/NTRIPGNSS 串口差分数据
状态颜色语义:
- 绿色:当前正常
- 黄色:等待中、未配置或短暂过渡
- 红色:明确失败、长期无数据或链路异常
7.1 Rover 特殊判断
ROVER 模式下,如果:
GGA正在正常回传- 但长时间没有收到 RTCM 下发
页面会明确提示:
GGA 正常回传,但没有收到差分
并将差分状态判为红色。
8. 配置保存逻辑
当前固件已经针对分页面保存做了防误清空处理:
- 后端不会先直接覆盖整份
config - 本次请求未提交的字段会保留旧值
- 所有字段校验通过后,才会整体写回并保存
这意味着:
- 在“基础设置”页保存,不会误清空网络和串口参数
- 在“网络设置”页保存,不会误清空基础和串口参数
- 在“串口设置”页保存,不会误清空基础和网络参数
9. 网络与重连策略
9.1 Wi‑Fi 重连
STA 断线后会按原因退避重试:
- 找不到 AP:更长重试间隔
- 鉴权失败:更长重试间隔
- 连接失败:中等重试间隔
这样可以尽量减少 AP + STA 共存时对热点侧稳定性的影响。
9.2 TCP / NTRIP 重连
BASE通过 TCP 连接服务器ROVER通过NTRIP连接 caster- 如果长时间没有有效差分数据,会主动断开并交给重连逻辑接管
9.3 前端轮询退避
Web 页面默认每 2s 轮询一次状态。
如果连续失败 3 次:
- 会临时退避到每
5s轮询一次 - 一旦恢复成功,再回到
2s
10. OTA 升级
固件支持通过 release 方式在线检查和升级。
升级流程:
- 通过 Gitea API 获取最新 release
- 找到
.bin资产 - 下载固件
- 写入 flash
- 自动重启
当前 OTA 相关地址:
- Gitea Base URL:
http://107.173.157.41:3000 - Latest Release API:
http://107.173.157.41:3000/api/v1/repos/clear/RTKConfig-32C3/releases/latest
11. 构建与烧录
11.1 编译
platformio run
11.2 烧录
platformio run -t upload
如果要指定端口,例如:
platformio run -t upload --upload-port COM12
12. 目录说明
src/main.cpp- 主程序逻辑
platformio.ini- PlatformIO 工程配置
13. 现场使用建议
- 先确认
UM982的输出模式和串口参数已经配置正确 BASE模式重点检查:- 是否有 RTCM 输出
- 是否成功连上目标服务器
ROVER模式重点检查:- NTRIP 地址、端口、挂载点、账号密码
- 是否有
GGA回传 - 是否持续收到差分下发
- 升级期间不要断电
- 模式切换后设备会自动重启,页面需要重新连接
14. 品牌信息
Web 页面底部当前显示:
Powered By Clear492@数字植物实验室
Release 通过 API 发布,不保留本地 JSON 模板。