🧹 扫地机嵌入式实战
30章 · 从驱动到联调
⚡ 风格 · 硬核落地
1
扫地机系统概述
硬件/软件/RTOS
MCU·传感器·电机·电池 · 驱动/中间件/应用层 · FreeRTOS/RT-Thread
2
开发环境搭建
工具链/IDE/调试
交叉编译 · Keil/IAR/VS Code · J-Link/ST-Link · Git入门
3
MCU外设驱动(一) GPIO
按键/LED/中断
GPIO驱动 · 按键输入与LED输出 · 中断服务函数规范
4
MCU外设驱动(二) 定时器
PWM/编码器
PWM生成(风机/边刷) · 输入捕获(编码器测速)
5
MCU外设驱动(三) ADC
电池/红外
电池电压检测 · 壁障/悬崖传感器模拟量采集
6
MCU外设驱动(四) 通信
UART/I2C/SPI
激光雷达(LDS) · 陀螺仪(IMU) · 电机驱动芯片
7
RTOS基础
任务/调度
任务创建删除 · 优先级与调度 · 状态切换
8
RTOS核心(一) 信号量
二值/计数
二值信号量(中断同步) · 计数信号量(资源管理)
9
RTOS核心(二) 互斥锁
优先级反转
互斥锁与优先级反转 · 递归互斥锁
10
RTOS核心(三) 消息队列
任务间数据
传感器数据上报 · 任务间传递
11
RTOS核心(四) 事件标志组
多条件触发
充电桩对接完成事件 · 多条件任务
12
RTOS核心(五) 软件定时器
周期性任务
心跳检测 · 传感器轮询
13
中间件层(一) 传感器抽象
统一接口
Init/Read/Calibrate · 屏蔽硬件差异
14
中间件层(二) 电机控制
PID/位置
速度闭环PID · 直线/转弯位置控制
15
中间件层(三) 电池管理
电量/充电机
电压法/库仑计 · 充电状态机(空闲/充电/充满/错误)
16
中间件层(四) 日志系统
串口/Flash
串口日志 · Flash存储 · DEBUG/INFO/ERROR等级
17
应用层(一) 行为决策
状态机
空闲/清扫/回充/被困/错误状态切换
18
应用层(二) 路径规划
弓字形/沿墙
随机碰撞 · 弓字形清扫 · 沿墙策略
19
应用层(三) 传感器融合
简单SLAM
激光雷达+陀螺仪+里程计 · 建图与定位
20
应用层(四) 回充算法
红外引导
红外引导+电流检测 · 自动回充对接
21
应用层(五) 避障与脱困
超声波/卡死
超声波/红外避障 · 轮子悬空/卡死检测与恢复
22
应用层(六) OTA升级
Bootloader
Bootloader设计 · 固件分区 · Wi-Fi/蓝牙升级
23
应用层(七) APP通信
二进制/JSON
自定义二进制协议(帧头/命令/校验) · JSON对比
24
低功耗设计
睡眠/唤醒
Stop/Standby · RTC/外部中断唤醒 · 功耗优化
25
内存管理
堆栈/泄漏/池
堆栈分析 · 内存泄漏检测 · 静态内存池
26
软件调试与测试
assert/单元/HIL
断言 · Unity/CMock · 硬件在环测试
27
代码规范与文档
命名/Doxygen
匈牙利/驼峰 · Doxygen注释 · 代码审查清单
28
持续集成CI
GitHub Actions
自动化构建 · PC-Lint/Cppcheck · 自动文档
29
项目实战(一) 工程框架
从零搭建
驱动层→中间件层→应用层代码组织
30
项目实战(二) 完整联调
全流程跑通
传感器→路径规划→电机控制→回充