乐于分享
好东西不私藏

平衡小车调试麻烦?我用AI写了个PC端上位机

平衡小车调试麻烦?我用AI写了个PC端上位机
文末有彩蛋
最开始是2016年前后,想着做个平衡小车。当时用的STM8S+MPU6050+TB6612+HC-05蓝牙模块+N20电机,大致这些吧(莫名喜欢N20这种小型的直流减速电机)。
当时主要有两个问题,一个是电池电压低,用的是一片3.7V的锂电池,充满电电压4.2V。这个电压驱动电机,动力略显不足。
另一个问题是HC-05的蓝牙模块,从功能上来说没有任何问题。但是体积相比小车略大,看起来不和谐。
2026年初,意法半导体发布了STM32C5系列,用的是ARM Cortex-M33的内核,性能有很大的提升。刚好有朋友能申请到样片,问我有没有兴趣升级一下我的平衡小车。
我想了想,确实想试试最新的C5系列,于是同意了。同时把之前的问题解决了一下。电池供电由3.7V改为7.4V,电机的动力能有很大提升;蓝牙串口由HC的模块改为SO-8的KT6368芯片,占用空间大幅度降低。
其实整体难度不大,毕竟已经走过一遍流程了。唯一一个麻烦的地方在于:电池电压提升后,电机要重新选型、适配,然后重新调试PID参数。想到之前反复弯腰、起身、修改参数、烧录程序的情况,我不禁咽了咽口水。
买蓝牙芯片KT6368的时候,卖家倒是送了一个安卓端的APP。我也试了下,能用是能用,就是每次点开的时候弹出一堆广告:
随即转念一想,AI时代,写个上位机不就行了!
于是打开opencode,用免费的deepseek v4 flash就开始搞了。
首先,把我的需求说了一下,并让它给我出个方案。
整体架构和通信协议也做了制定,部分信息如下:
当时用的模型是DeepSeek V4 flash的预览版,因为担心模型能力不足,所以动用了superpowers这个技能,让它帮我尽量完善的考虑问题。
设计文档、实现计划都完成了。
第二步,编写MCU的配套命令解析。
小车本身支持红外遥控,现使用蓝牙串口的方式进行调试的话,需要编写相应的协议,规范两者之间的通信,然后针对命令进行解析。
写完它还帮我编译了一下,遇到错误自动检查、修复,好省心啊~~~
第三步,创建 WPF 项目。
说实话,到这一步我已经看不懂了,放手让它操作就完了。
中间好像出了点小问题,但是很快修复了。前后花了大概20分钟左右吧,于是我得到了这样一个上位机:
第四步,连接蓝牙。
先在电脑上和小车的蓝牙配对:
这时,设备管理器里面能看到蓝牙对应的串口:
一片KT6368会生成两个虚拟串口,只有其中一个能通信,需要自己测试。我这里有六个串口,是因为我先后连接了三片KT6368。
这时,上位机那里就能看到这些串口,然后选中目标串口(可能要尝试一两次),点击连接即可。连接成功,就能看到如图:
位置1那里,提示串口连接成功;位置2那里,实时刷新数据。这时,就可以开心的调参数了。
第五步,调试角度环。
市面上大部分平衡小车的电机都比较暴力,所以调试PID参数时,一般只需要P和D即可。但我这里使用的N20直流减速电机,力矩可能偏小一些,所以只靠P和D是不够的。刚开始可能还能站住,用手轻轻一推,就向一侧摔倒了,如图:
加入参数I之后,效果明显好很多,可以直接站立,手推也不倒:
此时的PID参数如下:
第六步,找到机械平衡角。
即便小车能平稳站立,但是也经常会向一个方向移动。这说明水平角度0°,并不是小车的机械平衡角,需要微调。
这里的话,我通过微调参数v,也就是机械平衡角,时刻观察小车。确认小车不会固定向某一个方向持续移动,说明此时是小车的机械平衡角。把这个角度记好,写入程序中。
然后加入重心环,就可以用蓝牙遥控了。至此,上位机的功能完美发挥!
其实,中间过程中,我想过把调参的工作完全交给AI,也做了一些尝试,例如实时回传一些角度数据。让AI分析当前小车的状态,评估角度环的PID参数应该如何调整。
但实测下来,效果并不理想,可能是我还没找到更合适的方法吧!
但不管怎样,整个过程已经加速、简化了很多!希望这篇日志能给大家一些启发吧,打完收工!如果需要上位机的粉丝,可以在AI电堂后台回复“260824”获取。
互动活动

在AI电堂公众号后台回复关键字“电堂”,参与STM32C5抽奖活动,完成助力任务,中奖概率更高!

活动时间即日起-9月1日12:00;
END

往期推荐
RECOMMEND
1
硬件电路设计:过流保护及外围电路详解
2
WRC机器人台上扎堆炫技,数据厂商台下闷声淘金
3
不会AI的嵌入式工程师,手把手教你系统跑通第一个STM32 AI模型(多图预警,建议收藏备用)
4
从连接芯片到 Agent 入口:乐鑫的护城河如何在 AI 时代重构
5
复读机→MP4→平板→AIoT,这家公司永远在“下一站”等你

点赞

分享

推荐