产品形态是:基于陀螺仪惯性导航(Gyro Navigation)的智能扫地机器人。这是科沃斯/小米早期入门款(如小米扫拖一体机青春版)的经典技术方案。
一、 核心设计原则
- 绝不碰Linux/AI:纯MCU裸机/RTOS开发,所有算法用C语言实现,调试靠串口/J-Link,不依赖Python环境。
- 传感器选型保守:只用I2C/SPI/UART标准接口器件,避开需要复杂时序或模拟调校的器件。
- 电机驱动用集成方案:不自研分立MOS FOC板(容易炸管且难调),选用集成栅驱+运放的芯片或成熟模块。
- 导航降级为“惯导+碰撞”:不做SLAM建图,采用“陀螺仪航迹推算 + 弓字形遍历 + 碰撞修正”的成熟消费级算法。
二、 硬件选型清单
2.1 主控与传感器
| 组件 |
型号 |
单价(¥) |
在系统中的核心作用 |
选型理由(对新手友好度) |
| 主控MCU |
STM32F405RGT6 (LQFP64) |
28 |
系统“大脑”:运行IMU姿态解算、电机PID闭环、传感器数据融合、路径规划及所有外设调度 |
Cortex-M4 168MHz+自带FPU(惯导必需),6路UART,高级定时器支持FOC/PWM,资料极多且社区活跃 |
| IMU |
ICM-42688-P (TDK InvenSense) |
18 |
感知机器人三维姿态(Roll/Pitch/Yaw)和加速度,为航迹推算提供绝对方向基准,防止纯编码器Yaw漂移 |
6轴I2C/SPI接口,内置DMP硬件姿态解算极大降低算法难度,噪声低于MPU6050,有官方STM32驱动库 |
| 地检ToF×4 |
VL53L1X (ST) |
48 |
实时测量底盘四角离地高度,检测楼梯/悬崖/门槛跌落风险,触发紧急停机或绕行保护 |
I2C数字接口直接输出毫米级距离值,ST官方提供完整HAL库和API,无需模拟电路调校,抗环境光干扰强 |
| 碰撞开关×2 |
KFC-A02微动+弹簧杠杆 |
6 |
物理接触式避障兜底:当所有电子传感器失效时,撞击瞬间触发GPIO中断立即停车/后退 |
纯机械GPIO中断逻辑最简单可靠,是安全冗余的最后一道防线,必加 |
| 超声波×2 |
HC-SR04P (防水版) |
16 |
前方+侧方中远距离补盲:检测玻璃门、透明桌腿等ToF/激光难以识别的物体,辅助局部避障 |
GPIO触发测距,代码示例遍地都是,防水版适应商场/家庭潮湿环境,成本极低 |
| 轮速编码器×2 |
AB相磁编码器 MT6701 |
18 |
精确测量左右轮转速和转角,为差速运动学提供速度输入,参与航迹推算的位置积分 |
SPI/I2C输出14bit角度值,磁性原理抗灰尘油污(商场地面脏),比光电编码器可靠,分辨率满足惯导需求 |
| 电池电压检测 |
分压电阻+STM32内部ADC |
0 |
实时监控4S锂电池组总电压,用于低电量报警、过放保护及剩余续航估算 |
零额外成本,仅需两个电阻分压到3.3V以内,软件加滑动平均滤波即可,入门ADC最佳练手 |
| 电流检测×2 |
ACS712ELCTR-05B-T |
16 |
实时监测左右电机工作电流,实现堵转检测、过流保护及负载异常诊断 |
霍尔原理隔离采样,模拟输出接ADC,比采样电阻方案安全且不影响电机回路,5A量程匹配轮电机 |
| 蜂鸣器 |
无源蜂鸣器+三极管驱动 |
2 |
人机交互声音反馈:开机提示音、故障报警、低电量提醒、任务完成通知 |
PWM驱动可调节频率和音调,单GPIO+三极管电路极简,状态提示比纯LED更直观 |
| LED状态灯×4 |
WS2812B Mini |
4 |
可视化状态指示:不同颜色/呼吸模式表示待机、清扫、充电、故障、WiFi连接等状态 |
单线串行协议,STM32 TIM+DMA驱动不占CPU,开源代码丰富,4颗灯珠可组合多种视觉效果 |
| WiFi模块(可选) |
ESP8266-01S (AT固件) |
12 |
远程通信桥梁:接收手机APP启停指令、上报电量/位置/故障状态,不参与本地导航计算 |
UART AT指令通信将网络协议栈卸载到模块端,极大降低主控负担,仅做透传通道,调试简单 |
| 小计 |
|
215 |
— |
— |
2.2 运动与清洁系统
| 组件 |
型号 |
单价(¥) |
在系统中的核心作用 |
选型理由(对新手友好度) |
| 驱动轮模组×2 |
Nidec 36BLDC-5765 拆机/库存 |
70 |
机器人移动执行单元:集成电机+减速箱+编码器+霍尔,直接输出差速运动所需的扭矩和转速,是导航算法的物理载体 |
扫地机专用一体化模组,淘宝大量拆机件性价比高;自带霍尔省去传感器安装;24V额定电压匹配系统电源;免去机械装配和同轴度调试的巨坑 |
| 电机驱动×2 |
DRV8313PWPR (TI) |
12 |
主控与驱动轮之间的功率桥梁:将STM32的3.3V PWM/EN信号放大为24V大电流驱动BLDC,并实现六步换相逻辑 |
三相集成栅驱+内置MOS,QFN封装体积小;TI官网提供完整STM32 FOC/六步换相参考设计和GUI工具;比自己搭分立MOS桥简单10倍,大幅降低硬件翻车风险 |
| 万向轮×2 |
3寸尼龙万向轮(带轴承) |
16 |
底盘第三支撑点:承受机身重量并保持水平姿态,使两个驱动轮始终贴地,保证差速运动学模型成立 |
标准工业件,螺丝固定即可;带轴承减少摩擦阻力;尼龙材质耐磨且不伤地板;无需任何电子控制,纯机械兜底 |
| 主刷电机 |
RS-555 12V减速电机(皮带传动) |
22 |
地面垃圾清扫动力源:通过皮带带动主刷滚筒旋转,将灰尘/毛发卷入尘盒,是清洁功能的核心执行器 |
成熟有刷直流电机,仅需一路PWM调速+H桥驱动;不需要FOC或换相逻辑;12V电压可从24V降压获取;代码和控制难度远低于无刷电机 |
| 边刷电机×2 |
N20 JGA25-370 6V减速 |
16 |
沿边聚拢辅助:将墙角/家具边缘的垃圾扫向主刷吸口区域,弥补主刷无法触及的清洁死角 |
微型减速电机体积极小,嵌入底盘边缘不占空间;6V低压安全,LDO供电即可;直接PWM调速,控制逻辑与主刷相同可复用代码;扫地机行业标配验证可靠 |
| 风机 |
36BLDC-5765 无刷风机 |
45 |
负压吸尘动力源:高速旋转产生持续气流,将主刷扬起的灰尘吸入尘盒并经过滤网排出,决定清洁效果上限 |
24V高速无刷风机,六步换相即可驱动(不需FOC);与驱动轮共用DRV8313驱动方案,代码和硬件可复用;STM32 TIM互补PWM+霍尔换相资料丰富;比有刷风机寿命长、噪音低 |
| 水泵 |
3V微型隔膜泵 |
12 |
拖地供水控制:按需将水箱中的水定量泵出到拖布上,实现湿拖功能的水路开关 |
GPIO+单个N-MOS管即可控制通断,是最简单的执行器;3V低压可直接从3.3V LDO取电;隔膜泵自吸能力强,不怕水箱位置低于出水口;零反馈开环控制,代码仅一行GPIO翻转 |
| 尘盒+滤网 |
通用扫地机配件(淘宝) |
35 |
垃圾收集与气固分离容器:容纳吸入的灰尘毛发,HEPA滤网拦截微尘防止二次污染,是风路系统的终端 |
直接购买现成改装件,尺寸标准化;省去注塑开模的高昂成本和漫长周期;滤网可更换维护;卡扣设计便于拆装清理,原型阶段最优解 |
| 拖布支架 |
弹簧压板+魔术贴 |
8 |
被动拖地执行机构:通过弹簧恒压将拖布紧贴地面,魔术贴方便更换清洗,实现零电控的机械拖地 |
纯机械结构零电子成本;弹簧自适应地面起伏保证拖地压力均匀;魔术贴兼容市面通用拖布耗材;无需电机/传感器/算法,可靠性极高 |
| 水箱 |
150ml PP塑料瓶+接头 |
6 |
拖地用水储存容器:为水泵提供水源,容量决定单次拖地续航面积 |
标准PP材质食品级安全耐老化;瓶身透明便于观察余量;标准螺纹接头配硅胶管即插即用;成本极低且易于替换,比定制水箱灵活得多 |
| 底盘结构 |
亚克力激光切割+3D打印连接件 |
80 |
整机机械骨架:承载所有电子元器件和执行器,定义轮距/离地间隙/传感器安装位,是运动学模型的物理基础 |
嘉立创/淘宝激光切割5mm亚克力精度高(±0.1mm)、交期快(1-3天);3D打印连接件可快速迭代修改;成本低适合原型验证;透明底板便于观察内部走线和调试 |
| 外壳 |
3D打印PLA/PETG |
60 |
整机防护与人机界面:保护内部电路免受灰尘/碰撞/水汽侵入,同时承载LED/按键/蜂鸣器等交互元素 |
淘宝代工打印省去自备打印机成本;分体设计(顶盖/侧围/底壳)便于反复拆装调试;PETG材质韧性好不易脆裂;外观可定制颜色/纹理提升完成度 |
| 小计 |
|
385 |
— |
— |
2.3 电源与PCB
| 组件 |
型号 |
单价(¥) |
在系统中的核心作用 |
选型理由(对新手友好度) |
| 电池组 |
4S2P 18650 (亿纬/力神国产) |
110 |
整机唯一能量来源:为驱动轮、风机、主控及所有传感器提供持续稳定的24V直流供电,容量直接决定单次清扫续航时长 |
国产一线电芯一致性高、内阻低,支持3C持续放电满足电机峰值需求;4S2P配置74Wh能量密度适中,兼顾续航与重量;淘宝供应链成熟,可定制尺寸和输出接口 |
| BMS |
4S 10A 同口保护板(DW01+8205) |
10 |
电池安全守门员:实时监测每节电芯电压,防止过充/过放/短路/过流,被动均衡延长电池组寿命,避免起火风险 |
DW01+8205是锂电保护黄金组合,电路成熟可靠;10A持续电流覆盖双轮+风机同时工作的峰值负载;同口设计充放电共用接口简化布线;带均衡功能减缓电芯不一致老化 |
| DC-DC 24V→12V |
LM2596S-ADJ 模块 |
5 |
中压执行器供电枢纽:将24V主电源降压至12V,为主刷电机和边刷电机提供稳定工作电压,隔离高低压负载干扰 |
成品模块自带电感/电容/二极管,焊接即用无需调试;LM2596经典方案资料遍地,输出电压可调适配不同电机额定值;3A输出能力充裕;成本极低适合原型验证 |
| DC-DC 24V→5V |
MP1584EN 模块 |
4 |
低压数字系统供电核心:高效转换24V至5V,为STM32外围电路、所有I2C/SPI传感器、WiFi模块及LED灯珠提供干净电源 |
MP1584开关频率1.5MHz远高于LM2596,纹波小不干扰敏感传感器;效率>90%发热极低,无需额外散热片;3A输出可同时带载MCU+4个ToF+IMU+WS2812;体积小巧节省PCB空间 |
| DC-DC 24V→3.3V |
AMS1117-3.3 LDO |
1 |
MCU核心精准供电:将5V进一步稳压至3.3V,为STM32F405内核及GPIO提供低噪声、低纹波的纯净电源 |
LDO线性稳压无开关噪声,避免干扰ADC采样和IMU信号;输入5V压差仅1.7V,功耗≈0.3W发热可控;SOT-223封装手焊友好;成本几乎为零,是MCU供电的行业标准方案 |
| 充电座 |
红外对管+弹簧触点模组 |
30 |
自主回充物理接口:红外引导机器人对准充电极片,弹簧触点保证接触可靠,实现无人值守自动补能 |
淘宝扫地机通用配件,机械结构已验证百万次插拔寿命;自带导向槽降低对接精度要求;红外通信协议简单,STM32 UART即可解析;省去自行设计触点和弹片的机械坑 |
| 充电管理 |
TP4056×4并联 + CN3791 |
15 |
智能充电控制中枢:CN3791管理适配器/太阳能输入的MPPT或恒压逻辑,TP4056×4并联实现4S电池组CC/CV精准充电 |
CN3791支持宽输入电压(7-28V),兼容多种充电器;TP4056单节充电IC成熟可靠,4片并联均流至4A充电电流;分离式设计比集成4S充电芯片更易调试和替换故障单元 |
| 底板PCB |
4层板 12×12cm (嘉立创) |
35 |
整机电气互联骨架:集成DRV8313驱动电路、三级电源树、传感器接口及电机连接器,替代飞线提升可靠性和EMC性能 |
嘉立创4层板首单优惠含SMT贴片,到手即焊核心器件;4层结构提供完整地平面,降低电机PWM高频噪声对传感器的干扰;统一接口定义减少接线错误;12×12cm尺寸匹配亚克力底盘 |
| 接插件/线材 |
PH2.0/XH2.54/硅胶线/热缩管 |
20 |
模块化连接纽带:PH2.0用于传感器/电机等小电流信号,XH2.54用于电源/大电流回路,硅胶线耐弯折,热缩管绝缘防护 |
标准化接插件支持反复插拔调试,避免焊接损坏;PH2.0防呆设计防止传感器反接;硅胶线柔软耐温200°C,适应电机附近高温环境;热缩管提供专业级绝缘,比电工胶带可靠美观 |
| 散热片 |
铝制散热片+导热垫 |
5 |
功率器件热管理:将DRV8313和LDO产生的热量快速传导至空气,防止过热降频或热关断导致电机停转 |
DRV8313满载时结温可达120°C,散热片可降低30-40°C;导热垫填补芯片与散热片间隙,热阻远低于空气;铝制轻量不影响底盘重心;粘贴式安装无需螺丝,适配QFN/LDO封装 |
| 小计 |
|
245 |
— |
— |
📊 BOM成本汇总
| 分类 |
金额 |
| 主控与传感器 |
¥215 |
| 运动与清洁 |
¥385 |
| 电源与PCB |
¥245 |
| 总计 |
¥845 |
| 预留余量(18%) |
¥155 |
| 缓冲后上限 |
¥1,000 |
✅ ¥155余量用途:更换损坏器件、升级电池容量、购买调试工具(如逻辑分析仪)、或应对价格波动。严格控制在1000元内完全可行。
三、 软件架构(STM32F405 + FreeRTOS)
┌─────────────────────────────────────────────────────┐
│ FreeRTOS 任务调度 (STM32F405) │
│ │
│ Task1: Motion_Control (最高优先级, 1kHz) │
│ ├── 差速运动学: v_l/v_r → 轮速目标 │
│ ├── PID速度环: 编码器反馈 → PWM输出 │
│ └── 斜坡加减速: 防止急停急启打滑 │
│ │
│ Task2: Navigation (50Hz) │
│ ├── IMU读取: ICM-42688 DMP直接输出四元数/Yaw │
│ ├── 航迹推算: x += v*cos(yaw)*dt, y += v*sin(yaw)*dt │
│ ├── 弓字形路径生成器: 预设间距0.3m往返 │
│ ├── 碰撞修正: 撞墙→后退→旋转→继续 │
│ └── 回充逻辑: 低电→搜索红外信标→PID对准 │
│ │
│ Task3: Sensor_Monitor (200Hz) │
│ ├── VL53L1X轮询: 4路跌落检测(<50mm报警) │
│ ├── 超声波测距: 前方<200mm减速, <80mm停车 │
│ ├── 电流检测: >2A持续500ms→堵转反转脱困 │
│ └── 电池电压: <13.2V触发回充 │
│ │
│ Task4: Cleaning_Control (100Hz) │
│ ├── 主刷/边刷PWM调速 │
│ ├── 风机六步换相(TIM1互补PWM+霍尔中断) │
│ ├── 水泵GPIO开关 │
│ └── 尘盒满检测(电流阈值判断) │
│ │
│ Task5: Communication (事件驱动) │
│ ├── UART接收ESP8266 AT指令 │
│ ├── 打包状态数据上报(里程/电量/故障码) │
│ └── LED状态更新 │
│ │
│ ISR: 外部中断 │
│ ├── EXTI: 碰撞开关触发 → 置标志位唤醒Nav任务 │
│ ├── TIM: 编码器捕获 / FOC电流采样 │
│ └── DMA: UART收发完成 │
└─────────────────────────────────────────────────────┘
四、 关键技术点与学习资源
| 技术点 |
难度 |
推荐学习路径 |
避坑指南 |
| FreeRTOS移植 |
⭐⭐ |
STM32CubeMX自动生成FreeRTOS工程 → 跑通LED闪烁 → 加队列/信号量 |
不要用CMSIS-RTOS V1,直接用V2;堆大小设够(≥10KB) |
| ICM-42688 DMP |
⭐⭐⭐ |
TDK官方EMD库 + STM32 I2C HAL → 配置DMP输出Yaw → 验证静止漂移<1°/min |
务必用DMP! 自己写姿态解算至少耗2个月,DMP硬件解算解放MCU |
| DRV8313 FOC |
⭐⭐⭐⭐ |
SimpleFOC库(STM32版) 或 TI InstaSPIN参考 → 先跑开环验证 → 再闭环调参 |
初始上电限流1A防炸;先用万用表测PWM波形正常再接电机 |
| 弓字形遍历 |
⭐⭐ |
参考开源项目"OpenVacuum"或"ARDUINO_ROBOT_VACUUM" → 理解状态机切换 |
不要追求完美覆盖,先保证"能走完一个弓字不卡死" |
| 风机六步换相 |
⭐⭐ |
STM32 AN4220应用笔记 + BLDC_HALL例程 → 霍尔中断触发换相 |
先低压(12V)调试,确认换相顺序正确再升24V |
| VL53L1X驱动 |
⭐ |
ST官方X-CUBE-TOF包 → 复制vl53l1x_api.c/h → I2C初始化 → 读距离 |
注意I2C地址冲突(4个传感器需改地址),用TCA9548A I2C Switch(¥5)解决 |
五、 从0到1实施路线(16周,匹配你的工作节奏)
Week 1-2: 环境搭建与最小系统
├── STM32CubeMX创建F405+FreeRTOS工程
├── 点亮LED + 串口printf + I2C扫描
├── ICM-42688 DMP调通,串口输出稳定Yaw角
└── 里程碑: MCU能稳定读取姿态 ✅
Week 3-5: 电机驱动与底盘运动
├── DRV8313 PCB打样焊接 + 空载PWM测试
├── SimpleFOC移植到F405,开环验证电机转动
├── 闭环速度环调参(PID),编码器反馈验证
├── 差速运动学实现,键盘遥控直线/转弯
└── 里程碑: 底盘可控移动,直线10m偏差<10cm ✅
Week 6-9: 传感器融合与基础导航
├── VL53L1X ×4 + 超声波×2 驱动调通
├── 航迹推算算法实现(IMU Yaw + 编码器里程)
├── 碰撞检测+后退旋转修正逻辑
├── 简易弓字形状态机(前进→到头→横移→反向)
└── 里程碑: 在2m×2m区域内自主弓字清扫不撞墙 ✅
Week 10-12: 清洁系统与回充
├── 主刷/边刷/风机/水泵控制集成
├── 堵转检测+反转脱困逻辑
├── 红外回充信标发射端制作(555定时器+IR LED)
├── 接收端PID对准算法调试
└── 里程碑: 完整清扫流程+自动回充成功率>80% ✅
Week 13-16: 联调优化与可靠性
├── FreeRTOS任务优先级调整+堆栈溢出检测
├── 72小时连续运行压力测试
├── 故障注入测试(拔传感器/堵转/低电)
├── ESP8266 WiFi状态上报联调
├── 整理文档/BOM/原理图/代码注释
└── 里程碑: 可演示的原型机 + 完整技术文档 ✅
六、 建议
- 先买开发板验证,别急着画PCB:花¥80买块F405核心板 + ¥30买DRV8313模块 + ¥18买ICM-42688模块,用杜邦线搭起来先跑通电机控制和IMU。确认算法可行再画板子,避免PCB改版浪费时间和钱。
- 善用STM32CubeMonitor:实时查看FreeRTOS任务负载、堆栈使用、变量波形,比printf调试高效10倍,尤其调PID和惯导时必备。
- 记录调试日志:每天花10分钟写调试笔记(现象→原因→解决),这既是你的成长记录,也是未来面试/晋升的素材。
- 不要追求完美,追求“可工作”:1000元预算+1年经验,目标是做出一个能稳定运行、功能完整、代码规范的原型,而不是对标万元级产品。弓字形覆盖率70%就够好,回充成功率80%就够好。
- 安全第一:BLDC电机24V/10A有危险,调试时务必串联灯泡限流或使用可调电源限流模式;电池操作戴护目镜;PCB大电流走线要铺铜+开窗上锡。