01 · 项目定位
不是“纯太阳能开车”,而是一套能源闭环
尘光一号定位为“基于 ESP32 的火星基地新能源智能巡检车”。它不承诺完全靠太阳能驱动车辆,更合理的工程表达是下面这个闭环——这也是答辩时最重要的能源管理亮点。
02 · 总体架构
双 ESP32:一个管“跑得稳”,一个管“看得清”
车辆运动控制必须稳定、实时、安全;而显示、网页、传感器和能源数据比较复杂。把它们拆到两块 ESP32,能避免复杂的展示逻辑影响 A 板的运动安全。
让车跑得稳、停得住
- 控制 6 个 TT 编码器电机、3 块 TB6612FNG 驱动
- 读取左右代表轮编码器,做轮速检测与直线修正
- 读取五路循迹、前方避障、坑洞检测、MPU6050 姿态
- 接收 2.4G 八通道遥控,执行手动 / 自动 / 急停
- 所有运动与安全的最终裁决都在 A 板
把状态看清、讲清
- 读取 PMS5003T 粉尘温湿度、BMP280 气压、BH1750 光照
- 读取 INA219 太阳能电压电流功率、电池电压
- 读取 TCRT5000 积尘传感器、4 路光敏电阻
- 控制 2 个舵机二维追光、5V 风扇除尘、TFT 显示
- 建立 BLE 网页地面站,通过 UART 与 A 板通信
03 · 实现状态
哪些已经做好,哪些还在路上
截至文档 v0.1.0 的真实进度。对外展示与答辩时,只宣称“已实现”的能力,骨架占位与规划中的功能不当作已具备——这是工程诚信,也是这台车后续升级的路线图。
| 能力 | 状态 | 说明 |
|---|---|---|
| 双 ESP32 心跳 + A/B UART 双向通信 | ● 已实现 | 已实现 |
| BLE 网关:广播 / 遥测通知 / 命令转发 | ● 已实现 | 已实现 |
| 网页地面站:遥测 / 控制 / CSV / 演示 / 日志 | ● 已实现 | 已实现 |
| 命令急停 / SAFE 默认态 / 超时与失联停车 | ● 已实现 | 已实现 |
| 风扇 + 追光器状态回传 | ● 已实现 | 已实现(仅状态) |
| 电机驱动(六电机差速) | ◐ 骨架占位 | 骨架占位:当前为虚拟 PWM 日志,不驱动真电机 |
| 电池 / 太阳能 / PM2.5 等能源环境数据 | ◐ 骨架占位 | 固件现报 0,演示数据由网页提供 |
| 避障 / 坑洞 / 姿态安全字段 | ◐ 骨架占位 | 协议字段在,尚未接入安全裁决 |
| 风扇除尘 / 追光执行 | ◐ 骨架占位 | 命令只改状态位,未驱动风扇与舵机 |
| 物理急停 / 低电量保护 / 编码器测速 | ○ 规划中 | 规划中 |
| 2.4G 接管 / 自动循迹 / 防侧翻 | ○ 规划中 | 规划中 |
| 太阳能追光执行 / TFT 显示 / Wi-Fi 服务 | ○ 规划中 | 规划中 |
04 · 硬件清单
车上都装了些什么
底盘运动系统
| 模块 | 数量 | 说明 |
|---|---|---|
| 六轮越野底盘 | 1 | 火星车底盘 |
| TT 霍尔编码减速电机 | 6 | 推荐 1:90 减速比 |
| TB6612FNG 驱动模块 | 3 | 每块控制一对左右电机 |
| 五路数字循迹模块 | 1 | 模拟预设巡检路线导航 |
| 2.4G 八通道串口遥控 | 1 | 手动遥控、急停、模式切换 |
安全与地形识别
| 模块 | 数量 | 说明 |
|---|---|---|
| MPU6050 | 1 | 坡度、侧倾、防侧翻 |
| VL53L0X | 2 | 前方避障 + 前下方坑洞检测 |
| 蜂鸣器 / 报警 LED | 1 | 急停、倾斜、低电量报警 |
环境与能源系统
| 模块 | 数量 | 说明 |
|---|---|---|
| PMS5003T | 1 | PM1.0/2.5/10、温湿度 |
| BMP280 / BH1750 | 各 1 | 气压 / 光照强度 |
| INA219 | 1 | 太阳能电压、电流、功率 |
| TCRT5000 / 光敏 LDR | 1-2 / 4 | 积尘检测 / 二维追光方向 |
| 12V3W 太阳能板 + CN3791 | 1 + 1 | 发电与 2S MPPT 补能 |
| SG90/MG90S 舵机 + 5015 风扇 | 2 + 1 | 追光 / 除尘 |
05 · 安全保护
循迹、避障与防侧翻
地形风险识别
五路数字循迹模拟预设巡检路线,可识别左偏、居中、右偏、丢线和特殊标记。两个 VL53L0X 分别朝正前方和前下方,识别岩石与坑洞落差。
姿态阈值(防侧翻)
| 状态 | 判断(MPU6050 Roll) |
|---|---|
| 正常 | Roll < 15° |
| 警告 | Roll 15°–25° |
| 危险 | Roll 25°–35° |
| 急停 | Roll > 35° |
06 · 网页地面站
蓝牙怎么把状态送到网页
网页端连接 BLE 名称前缀 ESP32-rover 的 B 板,显示模式、急停、左右轮 PWM、障碍/坑洞、姿态、电池、太阳能功率、PM2.5、风扇状态,并支持手动控制、模式切换、急停、风扇与追光开关、运行日志和 CSV 导出。
遥测包(B 板 → 网页)
ROVER,<seq>,<ms>,<mode>,<estop>, <left_pwm>,<right_pwm>,<battery_v>, <solar_w>,<pm25>,<pitch>,<roll>, <obstacle>,<pit>,<fan>,<tracker>
控制命令(网页 → B 板)
CMD,<seq>,MODE,<MANUAL|AUTO|SAFE> CMD,<seq>,DRIVE,<forward>,<turn> CMD,<seq>,ESTOP,1 CMD,<seq>,CLEAR_ESTOP,1 CMD,<seq>,FAN,<0|1> CMD,<seq>,TRACKER,<0|1>
07 · 搭建路线
推荐的分阶段搭建顺序
开发优先级是“先让车能安全跑,再让车能自动跑,最后做能源环境与展示系统”。每个阶段都有明确的通过标准,过了再进下一阶段。
08 · 演示流程
火星基地新能源巡检任务
- 火星车开机,网页地面站连接 ESP32-rover。
- 网页显示自检信息、电池电压、当前模式。
- 进入自动巡检模式,小车沿预设路线前进。
- 遇到障碍物,小车减速或停止。
- 前下方传感器检测到坑洞,小车停止并报警。
- MPU6050 检测坡度,倾角过大触发防侧翻保护。
- 模拟沙尘使 PM2.5 / 积尘升高,太阳能功率下降。
- 启动风扇除尘,功率恢复;启动追光,功率进一步提升。
- 评委在网页端看到完整状态,并可演示急停与人工接管。
09 · 自检
学完后你应该能回答
1 为什么尘光一号要用双 ESP32,而不是一块板全部完成?
运动控制需要稳定、实时、安全;网页蓝牙、能源环境传感器和展示逻辑比较复杂。拆成 A 板和 B 板后,A 板专心处理电机、循迹、避障、姿态和急停,B 板负责 BLE 地面站、能源环境数据和展示,复杂展示逻辑不会拖慢运动安全裁决。
2 网页地面站为什么不能直接控制电机?
网页运行在浏览器里,连接状态和指令时序都可能不稳定。更安全的链路是“网页 → B 板 → A 板 → 电机驱动”,最后由 A 板根据急停、超时、姿态、避障等条件决定是否执行。这样即使网页误触或蓝牙短暂异常,车辆仍有本地安全边界。
3 为什么说它不是“纯太阳能开车”,而是能源闭环?
课堂演示中主电池负责稳定供电,太阳能板用于补能和能源管理演示。真正的亮点是测量光照、太阳能电压电流功率、积尘影响,再通过追光和除尘让功率变化可观察,形成“检测 → 判断 → 执行 → 功率恢复”的闭环。
4 为什么安全逻辑的最终裁决必须放在 A 板?
A 板离电机和安全传感器最近,能在本地快速停车。BLE、网页和 B 板都属于上层链路,可能延迟或断开;如果急停、防侧翻、避障裁决依赖上层链路,车辆就可能在通信异常时继续运动。
5 为什么六轮底盘还需要编码器反馈?
相同 PWM 不代表相同轮速。电机个体差异、地面摩擦和负载都会让左右轮速度不同,车辆可能跑偏。编码器能读出实际轮速,程序再根据目标速度和实际速度差修正 PWM,让直行和转向更可控。
6 答辩时为什么要如实区分“已实现、骨架占位、规划中”?
工程展示不是只看想象图,而是看哪些能力已经能跑、哪些只有接口和日志、哪些还在路线图里。把状态讲清楚,评委才能相信项目进度,也能看出后续升级路径。
打开网页地面站,连上真实的火星车
网页地面站通过 Web Bluetooth 直连 ESP32-rover,提供任务驾驶舱、操控台与部件原理三视图,支持演示模式与遥测 CSV 导出。真实上车前请先完成供电、共地、急停与串口日志检查。
育才物理创新实验室 · 尘光一号火星车开发文档 v0.1.0 · 本页如实标注能力实现状态,对外展示仅宣称“已实现”项。
