智能两轮自平衡车项目学习计划
从 STM32 硬件底座到 PID 闭环、上下位机通信与 Python 视觉,最终完成整车联调。策略为「前期重跑通、后期重调参」——每次学习留下可运行代码、波形截图或简短总结。
5.25 — 6.27 · 项目专项
每三天一次
每次 1—2 小时
不含课业安排
📚 一、整体学习计划
学习框架 · 全周期
整体目标是从「认识 STM32 开发环境与基础外设」出发,逐步掌握姿态传感器读取、PID 闭环控制、上下位机通信与 Python 视觉辅助,最终完成智能两轮自平衡车的整车联调,实现平衡站立与基础循迹/跟随。5 月下旬以 STM32 底座与串口调试为主;6 月上旬以 PID 调参与通信协议为主;6 月中下旬以 OpenCV 视觉与整车集成为主。
| 核心模块 |
学习重点 |
阶段目标 |
| STM32 硬件底座 |
GPIO、定时器、中断、I2C/SPI/UART、CubeMX 工程 |
能独立驱动 IMU(如 MPU6050)并稳定输出姿态数据 |
| PID 控制算法 |
直立环、速度环、位置式/增量式 PID、上位机波形调参 |
能实现电机速度/位置闭环,并为自平衡控制打基础 |
| 通信与上位机 |
串口帧协议、PyQt6/Web Serial、可选 Wi-Fi/蓝牙 |
能实时下发控制指令并接收硬件状态,支撑调试与联调 |
| Python 视觉 |
OpenCV 预处理、色彩空间、边缘检测、简单目标追踪 |
能实现基于颜色或形状的目标检测,并输出偏差信息 |
| 整车集成联调 |
硬件+控制+通信+视觉协同、失败重试与参数管理 |
完成平衡站立演示,并具备基础循迹/跟随扩展能力 |
⏱️ 二、执行节奏与学习方法
每三天一次 · 1—2 小时
每次学习建议分为理论学习、板级/代码跟练和复盘记录三个环节,尽量留下可运行代码、波形截图或一段简短总结。
| 学习环节 |
执行方式 |
作用 |
| 理论学习 |
只看当前任务相关章节,不追求一次看完 |
避免被过多概念拖慢进度 |
| 代码跟练 |
每次至少完成一个小实验,保存到同一项目仓库 |
形成可复用的工程积累 |
| 工具调试 |
练习串口助手、逻辑分析仪、Vofa+/匿名上位机或 OpenCV 窗口 |
建立工程排错能力 |
| 复盘整理 |
用 5—8 句话写清今天学会了什么、哪里还不懂 |
便于写项目文档和技术总结 |
核心模块详解
🧩 模块一 · STM32 基础与硬件底座
核心色:蓝色系
阶段目标
掌握 ARM Cortex-M 内核架构与常用外设驱动。
关键任务
- 熟练配置 GPIO、定时器(Timer)、中断(EXIT)。
- 掌握 I2C, SPI, UART 串行通信协议。
- 学习使用 STM32CubeMX + Keil/VS Code 开发环境。
工程检验标准
通关条件
独立编写驱动读取 IMU 传感器(如 MPU6050)数据。
🎯 模块二 · PID 控制理论与算法实践
核心色:橘色系
阶段目标
理解闭环控制理论,具备工程调参能力。
关键任务
- 深入理解 P(比例)、I(积分)、D(微分)各环节对系统的影响。
- 编写位置式 PID 与增量式 PID 的 C++ 代码。
- 学习使用匿名上位机或 Vofa+ 进行波形实时调参。
工程检验标准
通关条件
实现电机的速度闭环控制与位置闭环控制。
🌐 模块三 · 交互通信与上位机开发
核心色:紫色系
阶段目标
打通软硬件数据链路,实现跨平台交互。
关键任务
- 设计可靠的串口通信协议(帧头、数据基、校验位)。
- 学习 Python PyQT6 或 Web Serial API 编写交互界面。
- 掌握基于 Wi-Fi/蓝牙的 Socket 网络通信。
工程检验标准
通关条件
开发一个可视化上位机,能实时下发控制指令并接收硬件状态。
🛰️ 模块四 · Python 进阶与图像处理
核心色:绿色系
阶段目标
引入视觉感知能力,为系统注入“眼睛”。
关键任务
- 深入 Python 高级特性(面向对象、多线程并发、高级数据结构)。
- 掌握 OpenCV 库:图像预处理、色彩空间转换、边缘检测。
- 了解传统特征匹配与简单目标追踪算法。
工程检验标准
通关条件
实现基于颜色或特定形状的摄像头目标追踪程序。
🏁 模块五 · 整车集成联调
核心色:金色系
阶段目标
硬件、控制、通信与视觉协同运转,完成可演示的整车系统。
关键任务
- 梳理硬件层、视觉层、通信层分工与数据流。
- 在支架或辅助轮上测试直立环参数,记录多组 Kp/Ki/Kd。
- 绘制系统框图,编写 README,说明各层接口与后续计划。
工程检验标准
通关条件
车身能短暂维持平衡或明显趋稳;团队成员能看懂数据流与接口。
📅 三、5 月学习计划(5.25 — 5.31)
STM32 底座
5 月下旬完成从「点亮 LED、串口打印」到「定时器中断」的过渡,学习重点放在 CubeMX 工程、基础外设与串口调试上。
| 日期 |
学习主题 |
学习任务与验收标准 |
| 5 月 25 日 |
开发环境与首灯实验 |
用 CubeMX 建工程,点亮一颗 LED,熟悉下载烧录流程。验收标准:能重复编译、下载并看到 LED 按预期闪烁。 |
| 5 月 29 日 |
串口通信入门 |
配置 UART,串口打印一句文字,电脑端用串口助手接收。验收标准:波特率、引脚与接线正确,数据稳定可读。 |
| 5 月 31 日 |
定时器与中断基础 |
用定时器产生周期中断,在中断里翻转 LED 或计数。验收标准:能说明中断与主循环的分工。 |
📅 四、6 月学习计划(6.1 — 6.27)
控制 · 通信 · 视觉 · 联调
6 月掌握 PID 调参、通信协议、视觉初体验并向整车联调推进。上半月重控制与通信,下半月重视觉与集成;每模块结束做通关检验再进入下一阶段。
| 日期 |
学习主题 |
学习任务与验收标准 |
| 6 月 1 日 |
PID 概念入门 |
弄清 P、I、D 分别管什么,阅读一篇入门文章或示例。验收标准:用自己的话解释三项作用,并写出最简单 PID 计算函数(可先不接电机)。 |
| 6 月 4 日 |
PID 代码与打印验证 |
实现位置式或增量式 PID 函数,用固定目标值打印输出验证。验收标准:输入变化时输出方向符合预期。 |
| 6 月 7 日 |
电机驱动与速度环 |
驱动电机(或电机驱动模块),尝试速度闭环。验收标准:能转起来,并用上位机或串口观察速度反馈。 |
| 6 月 11 日 |
直立环思路与波形调参 |
结合 IMU 角度,理解直立环结构;用 Vofa+ 或匿名上位机看波形。验收标准:能在仿真/静态支架上观察角度与输出关系。 |
| 6 月 15 日 |
串口协议设计 |
设计帧头、数据域、校验位的简单协议,定时发送角度/速度占位值。验收标准:收发双方解析一致。 |
| 6 月 19 日 |
Python 读取下位机数据 |
用 Python 脚本或串口助手读取并显示协议数据。验收标准:能实时刷新关键字段。 |
| 6 月 23 日 |
上位机界面 + 颜色识别 |
① 用 PyQt6 或 Web Serial 做简单界面:显示状态、下发指令,能按钮控制模式切换或参数下发。② 识别画面中一种明显颜色(如红色贴纸),在窗口标出中心,能输出目标偏差或坐标。 |
| 6 月 27 日 |
平衡控制联调 |
在支架或辅助轮上测试直立环参数,记录多组 Kp/Ki/Kd。验收标准:车身能短暂维持平衡或明显趋稳。 |
🔗 五、课程与资料链接表
项目驱动优先
按「项目驱动优先、官方文档查缺补漏」使用下列资源,不必逐章从头学完。
✅ 六、阶段性成果与验收标准
5 月底 · 6 月中旬 · 6 月底
| 时间节点 |
成果名称 |
验收标准 |
| 5 月底 |
硬件底座 demo |
LED、串口、定时器中断正常;能稳定读取 IMU 并输出 |
| 6 月中旬 |
控制与通信 demo |
PID 函数可验证;串口协议与 Python/上位机互通 |
| 6 月底 |
整车路线初版 |
视觉能标定目标;系统框图与 README 说明各层接口与后续计划 |
📝 七、每次学习记录模板
可复制填写
每次学习结束后保留简短记录,内容包括本次目标、实际完成、运行结果、遇到的问题、解决办法和下次任务。后续做项目汇报、比赛文档时可直接复用。
本次日期
填写学习日期,例如 6 月 7 日
本次主题
填写学习内容,例如 直立环波形调参
完成内容
写清完成了哪些实验、命令或代码提交
问题记录
写清报错、卡点或未理解的概念
解决方式
写清查了哪份资料、改了哪段代码
下次任务
写清下一次要继续完成什么
🌟 项目目标:智能两轮自平衡车
上述学习与 5—6 月日程均服务于该目标:融合硬件、算法、通信与视觉,在真实系统中协同运转。可按周任务灵活微调,与文档版学习计划保持同步。
硬件层
STM32 读取陀螺仪,通过直立环/速度环 PID 控制两轮电机维持平衡。
视觉层
树莓派/Jetson 或 PC 端运行 Python OpenCV,识别前方的特定轨道或手势。
通信层
通过交互通信将视觉处理结果下发给 STM32,实现自主寻迹或手势跟随。