这是一台巴掌大的自平衡小车,也是一个反复打磨、不断升级的小项目。
从最初追求低成本和极简结构,到后来更换主控、升级电机、调整算法,它经历了多次迭代。如今,基于 STM32C5 打造的「地心一号Pro」终于完成。它依然保持着小巧、简洁的设计,但动力更强、转向更灵活,运行也更加稳定。对于喜欢单片机、想亲手做点有趣项目的人来说,这是一台既好玩,又能帮助理解嵌入式开发的小车。
从初版到Pro
「地心一号」的初版诞生于 2018 年。当时想法非常直接:用尽可能低的成本,做一台尽可能小的自平衡车。于是,第一版选择了 STM8 作为主控。
后来,我又把主控换成 STM32G030,希望借此改善小车的性能。遗憾的是,升级并没有带来预期中的明显变化。这台小车能站起来,也能跑,但总觉得还差一点意思。

直到前段时间 STM32C5 发布,经过重新评估,看到了升级的可能。它延续了入门级 MCU 亲民的价格定位,却提供了更充裕的性能和资源。于是,「地心一号」的 Pro 版本升级开始了。
为什么选择 STM32C5

这次使用的主控是 STM32C542KCT6。STM32C5 把 Arm® Cortex®-M33 内核带到了入门级 MCU 产品线,Flash 容量最高可达 1MB,并集成浮点运算单元、硬件除法模块和增强型 DSP 指令。它的外设与通信接口也比较丰富,同时支持主流编译器和 Trace 调试功能。
项目配置使用的是 STM32CubeMX2。它延续了熟悉的外设配置能力,但界面风格有了明显变化,刚上手时需要适应一下。实际多操作几次以后,整个配置过程依旧比较顺手。ST 也提供了相关文档、视频等资料,非常有参考价值。
「地心一号」Pro 版的目标依然是:尽可能控制成本,把车身做得足够小。STM32C5 的性能配置放在这样一台巴掌大的自平衡小车上,确实有点「大马拉小车」的意思。不过,对于嵌入式爱好者的自制项目来说,适当的性能余量并不是浪费。平衡控制、转向控制和无线调试都需要实时处理,资源更充足,开发和调试时也能从容一些。以后如果想增加显示界面、传感器或其他功能,也不必因为硬件性能不足而重新设计整套方案。
如果用一句话来评价,STM32C5 算得上入门级 MCU 里的「夯中夯」。
从供电到电机,动力要真正匹配
主控升级之后,供电也从 4.2V 提高到 8.4V,小车有了更充足的动力。蓝牙部分采用串口蓝牙芯片,相比过去外挂独立模块,连接和使用都更方便。
真正花时间的,其实是电机选型。供电电压提高以后,原来的电机自然不再合适。起初,我选择了一款 6V、每分钟 300 转的电机,但扭矩不足,用手轻轻一碰,小车就会来回摇晃;随后换成每分钟 350 转的型号,表现还是不够理想;最后,改用大减速比、大功率、每分钟 500 转的电机,小车才终于站得更稳,动作也更有底气。
这个过程也再次说明,对平衡车来说,转速、扭矩、减速比和供电必须一起考虑,只有整套动力系统真正匹配,控制算法的作用才能有效发挥。
姿态获取没有想象中复杂
姿态传感器依旧选择了熟悉的 MPU6050。因为 STM32C5 性能更强,一度想换一种思路,尝试通过 DMP 获取姿态数据,希望让处理过程更轻松。结果调试下来,小车反而更飘。折腾了两天之后,我还是换回原来的方案。
这次经历挺有意思:问题不一定出在主控芯片上,周边模块、数据质量和整套控制链路同样会影响最终效果。新方案听起来更先进,但放进具体项目里,稳定、可控、适合当前系统,往往比「看起来更高级」重要。
最关键的还是 PID 调参
硬件搭好之后,真正决定小车能否稳稳站住的,还是 PID 调参。为了让这个过程更直观,我借助 Vibe Coding 做了一个上位机,通过蓝牙与小车连接。
在上位机里,可以控制小车前进、后退和左右转向,也能实时调整 PID 参数以及车身静止时的平衡角度。我还增加了转向环,用来控制左右轮的转速差,让转向动作更稳定。

调试和驾驶则分开处理:蓝牙上位机主要负责参数调整与状态验证,日常操控交给红外遥控器。前进、后退、左转、右转和停止这些基本动作,都可以直接完成。这样既方便调参,也保留了拿起遥控器就能玩的简单体验。
做项目也是在为下一次创意留空间
回头看这一路的迭代,「地心一号Pro」并不只是一台性能更强的小车。它把主控选择、电机匹配、姿态获取、闭环控制和上位机调试串成了一个完整项目。每个环节都不算遥远,但能让我们理解一套嵌入式系统是怎样配合起来的。
在 AI 时代,获取知识比过去容易了许多,我们更应侧重考量把时间放在哪个方向,又选择什么平台承载自己的想法。用 STM32C5 做自平衡小车,也许没有完全吻合嵌入式开发「刚好够用」的理念,但它给后续增加功能、继续折腾留下了空间。对希望从一个小项目出发,逐步深入单片机开发的人来说,这种余量本身就很有价值。
这就是「地心一号Pro」的故事。