ARTICLE · 1291272
用AI调试单片机,我终于不用一直在中间传话了
用AI写单片机代码,现在模型能力已经可以用溢出来形容了。
但是代码写完,下载到板子上跑起来,发现功能不对,这时候怎么让 AI 帮我们调试?
很多工程师应该都碰到过这种情况。
AI 给出一个排查方向,我们去操作上位机、看数据,再把结果告诉它。它分析完,让我们改点东西,再测一次。
一来一回,AI 是帮忙分析了,但是人得一直守在电脑前面,操作设备、复制数据、描述现象。
如果问题比较复杂,要反复测很多次,这个过程还是挺折腾的。
最近调了一个无刷电机项目,客户改了电机和硬件,我就想借这个项目,跟大家分享一下,我现在是怎么让 AI 自己操作上位机、获取运行数据,再根据数据继续排查的。
如果你平时也在用 AI 开发单片机,想让它参与实际调试,可以参考下这个思路。
先说这个项目遇到的问题。
客户这个新电机,设定转速在 1000 rpm 以内时,会转一下停一下。转速上到 1000 rpm以上,这种转一下停一下的现象就没有了,不过转速还是会有波动。
做过电机的应该都知道,这种情况可以先从PI参数入手排查。不同转速下电机的响应不一样,一套参数在高转速下能跑,到了低转速不一定合适。
不过,这个电机还有一个特殊的地方。
样机是客户自己手搓出来的,转的时候,能明显感觉到内部摩擦力比较大。机械这块可能也会对低速运行有影响,所以最后能调到什么程度,现在还不好说。
我的想法是,先把软件这边能调的参数调一调,让电机大体跑顺一点。同时电流响应不能太慢,不然加力也会比较慢。
这就是这次交给 AI 的任务。

先说下我早期是怎么用 AI 调试的。
那时候还没有现在这么方便的 AI Agent,基本靠最古老的搬运法。
比如程序跑起来以后,串口输出了一堆日志,我复制给 AI,电机出现了什么现象,我再用文字描述给它。
AI 看完以后,给我一个排查方向,我去操作、测试,测出来再把结果搬回来。
有时候 AI 让我看某个变量,我还得先去想办法把这个变量打印出来,再重新运行程序,把数据发给它。
如果一次就能定位问题,那还好。
但实际做项目,很多问题都要反复排查。AI 每次给一个建议,我就得操作一次,再把结果交代一次,光是在中间传话,就要花不少时间。
还有一个问题,就是我们看到的现象,不一定每次都能表达准确。
比如电机转速不稳定,我跟 AI 说它一会儿快一会儿慢,这只能算一个大概的描述。
它到底是在目标转速附近波动,还是转速冲上去以后又掉下来?掉下来时电流是什么状态?这些细节不说清楚,AI 也只能根据我给的信息去猜。
如果我描述得不准确,它还可能顺着错误的信息,往另一个方向排查。
所以后来我一直在想,能不能让 AI 自己去获取设备的运行数据,再结合代码和实际现象分析?这样我就不用每次都在中间搬来搬去。
经过多次迭代,我在自己的单片机 AI 工作流里面做了调试相关的 Skill。遇到问题时,我把现象和目标告诉它,让它调用工作流,结合实际数据去排查、修改和验证。

但是这次调电机,还有一个地方不太好操作,就是上位机。
AI 怎么操作上位机?
调电机经常要用上位机发指令,比如设定转速、启动、停止,再观察电机反馈的数据和曲线。
如果这些操作都要我自己来,数据还要我转给 AI,那前面说的问题还是没解决。
现在很多 AI 工具也有操控电脑和浏览器的功能,不过用过的应该有体会,有些电脑操作是真慢,点个按钮都要等半天。调试的时候反复来几次,体验就不太好了。
我现在的做法是,把上位机做成网页形式,然后让 AI 通过浏览器去操作。
这里给大家推荐一个最近发现的宝藏Agent浏览器,叫 Ego Lite。
它有配套的 Skill,可以指导 AI 怎么操作这个浏览器。我的单片机工作流里面也有调试 Skill,两个配合起来,就可以让 AI 一边操作网页版上位机,一边按照工作流的调试过程去分析和验证。
这个上位机可以发送 CAN 指令,控制电机运行。同时也能看到转速、电流等运行数据,主要是工程阶段用。
上位机里面还做了一个霍尔 3D 监测页面,可以结合霍尔信号,辅助检查霍尔安装有没有问题。
下面这张图展示的是监测界面,截图时设备还没有连接。

这次我把目标告诉 AI,让它先git备份代码,再调用我的工作流,使用 Ego 浏览器打开上位机,观察数据并继续调试。

这样做的好处是,AI 可以直接通过上位机操作电机,也能获取运行数据作为分析依据,我不用每测一次就把数据复制过去,再重新解释一遍。
当然,这里面不只是打开一个浏览器就完事了。
上位机要能和设备正常通信,AI 也要知道可以操作哪些功能、该看哪些数据。像这次我除了说明电机的现象,还告诉了它我的目标:低速要尽量稳定,同时电流响应不要太慢。
目标说清楚,后面它拿到实际数据,才有东西可以对照。

它还问了我一个问题:电机现在是空载可以连续转,还是已经接了有行程限制的负载?
这个还是有必要确认的。因为 AI 后面要操作电机,如果接了推杆之类有行程限制的负载,测试条件就不一样了。
我告诉它,当前电机是空载,可以连续转动。让它继续放心大胆造吧,别给我啰嗦了。
设备连接好以后,它先通过实际采样复现了问题。
在 500 rpm 的测试中,反馈速度反复变化,目标 Iq 也多次降到 0。
在 1000 rpm 时,反馈速度还有比较明显的波动。
这些数据可以帮助我们判断下一步往哪里查,但当时还不能直接确定,问题就只有 PI 参数这一个原因。

后面 AI 继续根据运行数据测试、分析和调整。过程中,它也发现过一次测试的初始状态不一致,这次的数据就不能直接拿来和前面的结果比较,需要先把测试条件弄清楚。
到截图里汇报的那个阶段,电机的稳态转速有改善,但启动响应还没有稳定达到我提出的 500 毫秒左右的目标,更低转速下重复启动也还不一致。
所以这时候还不能说已经完全调好了,只能说部分现象有改善,后面还需要继续验证。

而且前面也说了,这个电机本身机械摩擦比较大,软件参数调整能改善多少,也得结合实际运行情况来看。
这个方法,大家怎么用到自己的项目里?
如果你也想让 AI 参与设备调试,可以试试把上位机做成网页,让 AI 通过 Ego Lite 操作页面、读取数据。
如果不能做成网页版,上位机提供mcp接口,也能让AI Agent去用。















































































