1. 项目背景与设计目标
在现代化办公环境中,保持职场清洁是一项持续性的挑战。传统人工清洁存在效率低、干扰工作等问题,而市面上的家用清洁机器人又难以满足大面积职场的需求。基于这个痛点,我决定开发一款专为职场环境设计的智能清洁机器人。
这个项目的核心目标是实现:
- 自主导航避障能力(应对桌椅、隔断等复杂障碍)
- 低噪音运行(不影响正常工作)
- 高效清洁覆盖(适应200-500㎡办公区域)
- 低成本可扩展(基于通用硬件平台)
选择STM32作为主控主要基于三点考量:
- 丰富的外设接口(可扩展多种传感器)
- 实时性能优异(响应延迟<10ms)
- 成熟的生态支持(开发工具链完善)
2. 硬件系统设计
2.1 主控选型对比
在方案论证阶段,我对比了三种常见方案:
| 方案 | 核心芯片 | 计算能力 | 外设资源 | 开发难度 | 成本 |
|---|---|---|---|---|---|
| 传统51方案 | AT89C51 | 8位1MIPS | 有限 | 简单 | 低 |
| ARM方案 | STM32F103 | 32位72MHz | 丰富 | 中等 | 中 |
| 嵌入式Linux | RK3399 | 64位 | 非常丰富 | 复杂 | 高 |
最终选择STM32F103C8T6(俗称"蓝莓派")的原因:
- 性价比突出(核心板仅25元左右)
- 支持硬件浮点运算(适合路径规划计算)
- 多达7个定时器(可同时控制多个电机)
- 丰富的社区资源(遇到问题容易解决)
2.2 关键模块设计
2.2.1 运动控制系统
采用双轮差速驱动+万向轮设计:
- 驱动电机:JG-37GB520编码电机(带霍尔编码器)
- 电机驱动:TB6612FNG双路驱动芯片
- 减速比:1:30(兼顾速度与扭矩)
实测运动参数:
- 最大速度:0.5m/s
- 最小转弯半径:35cm
- 越障高度:1.5cm
2.2.2 避障系统
使用红外+超声波复合方案:
- 红外传感器:TCRT5000(前向2个,侧向2个)
- 超声波:HC-SR04(前向1个)
- 检测范围:红外10-80cm,超声波2-400cm
特别优化了传感器布局:
- 前向45°斜装(减少盲区)
- 离地高度15cm(最佳检测位置)
- 采样频率20Hz(平衡响应与功耗)
2.2.3 清洁系统
创新采用双模清洁设计:
- 主刷系统:V型滚刷(处理颗粒物)
- 吸尘系统:无刷风扇(最大风量1.2m³/min)
- 尘盒设计:可拆卸式(容量0.8L)
3. 软件架构设计
3.1 主程序流程图
c复制void main() {
hardware_init(); // 硬件初始化
while(1) {
sensor_update(); // 传感器数据采集
obstacle_avoid(); // 避障决策
path_planning(); // 路径规划
motor_control(); // 电机控制
cleaning_ctrl(); // 清洁控制
battery_check(); // 电量监测
}
}
3.2 关键算法实现
3.2.1 避障算法
采用改进的向量场直方图(VFH)算法:
- 构建极坐标直方图(分16个扇区)
- 动态阈值过滤(排除误检测)
- 安全角选择(考虑机器人半径)
核心代码片段:
c复制void vfh_update() {
for(int i=0; i<16; i++) {
float dist = (ir_data[i] + us_data*0.3) / 1.3;
histogram[i] = 1.0 / (1.0 + exp(-k*(dist-d0)));
}
select_best_direction();
}
3.2.2 路径规划
实现覆盖式清扫算法:
- 将空间划分为0.5m×0.5m网格
- 采用蛇形遍历策略
- 实时记录已清扫区域(EEPROM存储)
优化点:
- 动态调整网格大小(根据障碍物密度)
- 断点续扫功能(低电量后恢复工作)
4. 系统调试与优化
4.1 硬件调试问题
遇到的主要问题及解决方案:
| 问题现象 | 原因分析 | 解决方案 |
|---|---|---|
| 电机偶尔卡顿 | PWM频率设置不当 | 将PWM频率从1kHz调整到5kHz |
| 红外传感器误触发 | 环境光干扰 | 增加软件滤波(中值+均值) |
| 电池续航不足 | 升压电路效率低 | 更换TPS61088同步整流方案 |
| 行走轨迹偏移 | 轮径存在误差 | 软件校准轮胎周长参数 |
4.2 软件调试技巧
几个实用的Keil调试技巧:
- 实时变量监控:使用Watch窗口观察关键变量
- 逻辑分析仪:通过SWD接口抓取PWM波形
- 性能分析:使用Cyclic Counter测量函数耗时
- 条件断点:在特定内存值变化时暂停
重要提示:调试电机时务必先断开机械连接,避免意外动作造成损坏
5. 实测性能数据
经过两周的办公室实测(面积300㎡):
| 指标 | 测试结果 |
|---|---|
| 清洁覆盖率 | 92.7% |
| 平均清洁时间 | 2小时15分钟 |
| 避障成功率 | 98.3% |
| 噪音水平(1m距离) | 52dB |
| 单次充电续航 | 4小时10分钟 |
6. 扩展改进方向
根据实际使用反馈,下一步计划:
- 增加WIFI模块实现远程监控
- 集成TOF传感器提升避障精度
- 开发自动充电对接功能
- 试验湿拖功能模块
这个项目最让我意外的是STM32的性能潜力 - 在精心优化后,它完全可以胜任这类实时控制任务。建议初学者可以从标准外设库入手,熟练后再迁移到HAL库开发。