今天了解到b站虾哥的小智机器人,正好自己手上有一块嘉立创的esp32开发板,于是产生了复刻的想法。
不过在烧录固件后,发现没有“xiaozhi”这一个WIFI;看了看虾哥的文档,让去看看串口打印内容,在把内容喂给AI后,发现是“根据日志显示,设备在启动过程中因 SPI Flash 容量不匹配导致断言失败,触发无限重启循环”。因为虾哥用的r16的板子,“生成的 partition-table.bin
占用 13MB Flash,超过配置的 8MB 上限”(不过烧录确实成功了,bin文件大概3.6m),所以需要重新配置一下“partitions.csv”。
如下图:
# 示例分区(需核对实际文件) nvs, data, nvs, 0x9000, 0x6000 phy_init, data, phy, 0xf000, 0x1000 factory, app, factory, 0x10000, 1M storage, data, spiffs, , 3M # 可能超限!
然而在编译过程中,工程还是会报错:“错误定位:ESP-IDF 项目编译时出现 隐式函数声明 和 语法错误,主要涉及 ESP_COMPILER_DIAGNOSTIC_PUSH_IGNORE
和 ESP_COMPILER_DIAGNOSTIC_POP
宏定义缺失,以及缺少分号问题。”
依旧使用ai,屏蔽报错代码,“// 替换 ESP_COMPILER_DIAGNOSTIC_POP 为标准 GCC 宏 #pragma GCC diagnostic pop”。
到这一步,工程便已经能成功编译;选择好com口烧录。
烧录完成后成功出现“xiaozhi” WIFI,手机连接上配置好网络就可以了。
不过因为我使用的是嘉立创的开发板,io口不一样,同时我现在就只有一块裸板,根本收不到小智的语言验证码、添加不了设备。那难道就到此结束了吗?
哎!既然串口会打印日志信息,那验证码什么的也会打印出来吗?
配置好波特率“115200”,打开串口。果然,一大堆信息;照例喂给AI让它看看。
果然有一行是6位数字,有可能是验证码。到小智的后台填上去试试。
滴!添加成功!
不过其实也没必要这样折腾,虾哥有丐版的固件,最低支持4MB SPI Flash。我这样还得改io口配置,功能是否正常也不清楚。
2025-5-18更新:
其实不用更改gpio,默认引脚完全可以用,复刻一下,配件不到20块,建议麦克风买好一点的,不然很难打断小智。