本帖最后由 江文卓 于 2026-3-4 18:19 编辑
大家好,我遇到了一个关于安信可AiPi-PalChatV1模组通过UART-MCP协议控制梁山派开发板(GD32F450)的问题,折腾很久未解决,特来求助。
硬件配置:
模组:AiPi-PalChatV1(基于BL602),烧录了支持UART-MCP的固件(尝试过V2.8和V3.0版本)。
开发板:立创梁山派(GD32F450ZGT6),运行的是适配STM32F429的`JLC_lsPi_MCP_LEDs`例程(基于emMCP库)。
连接:模组与开发板通过串口(USART2)连接,波特率115200,接线正确(TX-RX交叉,GND共地)。
STM32端软件:
- 使用emMCP库,注册了一个名为“开发板LED”的工具,包含5个布尔参数:`led1`、`led2`、`led3`、`led4`和`所有灯`,并绑定了回调函数。
- 串口接收采用DMA+空闲中断,在回调函数中将数据喂给emMCP库。
- 主循环中调用`emMCP_TickHandle(10)。
- 已测试:通过`strstr`匹配模组发来的`"1.WiFi connect OK"`字符串,能成功点亮板上的LED3和LED4,证明串口接收和硬件控制均正常。
现象:
- 当我对模组说“开灯”、“打开LED1”、“打开所有灯”等指令时,模组会语音回复类似“灯已打开”、“LED1已点亮”的内容,但开发板上的LED没有任何反应。
- 登录小智平台查看聊天历史,发现这些指令的回复都是普通的文本内容,没有任何工具调用的JSON记录(而之前说“放歌”时,平台有`search_music`等工具的调用记录)。
- WiFi连接成功的JSON指令(如`{"role":"AI board","msgType":"status","data":"1.WiFi connect OK"}`)能被STM32正确接收并通过`strstr`匹配点亮LED,说明串口通信链路是通的。
已做的排查:
1. 确认模组烧录了支持UART-MCP的固件(V2.8/V3.0均试过)。
2. 检查了STM32端工具定义,参数名称、类型均正确。
3. 用emMCP_printf打印串口数据,STM32能收到模组发来的各种状态信息(如WiFi连接成功),但未发现“开灯”指令对应的MCP调用数据。
4. 在小智平台上查看设备信息,未找到“开发板LED”工具的显示,也没有配置触发说法的入口(似乎工具根本没有注册到云端)。
核心疑问:
- 为什么云端没有将“开灯”等指令识别为工具调用,而只是生成随机文本回复?是因为STM32端的工具没有成功注册到云端吗?或者要WB2这边的程序也得开发?
- 如何确认STM32端通过emMCP_RegistrationTools()发送的工具列表是否被模组正确接收并上报?
- 是否需要在小智平台手动为工具添加触发说法?如果是,具体在哪里操作?目前平台界面中看不到任何工具列表。
希望有经验的大神指点迷津,感谢!
梁山派main函数工具调用
云平台历史对话
wificonnect状态信息
|