ESP-SPARKBOT AI 智能机器人:v1.2 全流程复刻指南
一、开源项目介绍
项目地址:ESP-SparkBot - 立创开源硬件平台
ESP-SparkBot 是⼀款基于 ESP32-S3,集成语⾳交互、图像识别、遥控操作和多媒体功能于⼀体的智能设备。它不仅可以通过语⾳助⼿实现⼤模型对话、天⽓查询、⾳乐播放等互动,还使⽤⼩度⼿机 APP 完成蓝牙配⽹、⾳⾊切换、⾳乐播放及其他智能服务。同时,ESP-SparkBot 内置加速度传感器,⽀持摇⾊⼦和 2048 游戏等娱乐交互功能。硬件⽅⾯,其磁吸式设计⽀持模块扩展,可轻松转换为遥控⼩⻋,实现摄像头实时传输和⼿机操控。此外,设备⽀持本地 AI 处理,可以运⾏⼈脸识别和动作检测功能。还可以通过投屏模块实现⾼清视频播放和游戏运⾏,展⽰强⼤的性能和多功能性。
二、成品效果演示
esp-sparkbot唤醒乐鑫AI
esp-sparkbot-小智AI
三、PCB 板子下单
打开这个网址 ESP-SparkBot - 立创开源硬件平台,点击“打开设计图”,
只需要打印三个板子:选中一个板子,点击“下单”->“PCB下单”,注意每个板子都需要单独下单
需要注意的是板子厚度选 1.0,
如果是 Touch_FPC,则选中软板并且需要补强,
四、BOM 下单
直接点击链接进入网页加购物流,大部分物流在嘉立创购买,少数在某宝某猫,快递费比较贵。
五、3D 打印外壳
从官网下载 STL 3D 打印文件,可以找某宝打印,我这里是找的嘉立创3D打印,材料树脂 9600,
六、焊接工具
- 水口钳:剪拼板的PCB板使用
- PCB夹:固定使用
- 电烙铁套装:焊电路板
- 热风枪:焊电路板
- 锡浆:焊电路板(建议买带针筒的锡浆,少量多次使用,避免锡浆快速氧化过期)
- 工作台隔热垫
- 镊子+贴片元件盒:收纳电子元器件
- 飞线:挑软的买
- 个人防护:KN95口罩、护目镜(在通风环境下作业,锡烟有害健康)
- 补充:万用表、type-c充电线、助焊膏/助焊剂、洗板水、吸锡条、B-700胶水
七、整合资料包
我把所有资料都整合一个压缩包了,有需要的朋友可以私信我,也可以点这里直接下载。
八、官方固件仓库
git clone https://gitee.com/esp-friends/esp_sparkbot.git
刷固件之前,注意看 README 文档说明。
九、基础固件编译(命令行方式)
这里我使用的 ESP-IDF 版本是 5.4.0,官方使用的版本是 5.2.3,参考官方文档 固件烧录指南
1、设置芯片
idf.py set-target esp32s3
2、配置 menuconfig
idf.py menuconfig
输入指令,回车,进入配置页面,
按下 shift 旁边的 “/” 按键进入搜索,输入 bmi,
可以看到目前使用的是 BMI220 姿态传感器芯片,当前我使用的是 BMI270 芯片,所以这里需要按一下方向键↓,然后回车,
设置完毕,按 esc 回退到主菜单,接下来设置三个 token 和配网,选中 Example Configuration,回车进入配置页面,
第一个配置百度语音识别 token,第二个配置百度大模型 token,第三个配置天气 token,第四第五配置联网的 wifi 和密码,
- BAIDU_AUDIO_ACCESS_TOKEN:百度音频服务的 ACCESS_TOKEN,通过百度控制台中的语音技术的 API Key 和 Secret Key 申请,详情参考:获取 access_token
- BAIDU_LLM_ACCESS_TOKEN:大语言模型服务的 ACCESS_TOKEN,通过百度控制台中的大语言模型应用的 API Key 和 Secret Key 申请,详情参考:获取 access_token。 注意:大语言模型和语音服务使用的是两种不同的 access_token
- QWEATHER_REQUEST_KEY:和风天气的 request key, 用于在桌面钟界面显示天气和温度信息
- EXAMPLE_WIFI_SSID:连接 Wi-Fi 的 SSID
- EXAMPLE_WIFI_PASSWORD:连接 Wi-Fi 的密码
可以通过 idf.py menuconfig 手动配置上方参数,也可以直接在 Kconfig.projbuild 中修改 default 值 注意:如果 sdkconfig 文件已经生成,则 Kconfig.projbuild 不再生效。可以删除 sdkconfig 或运行 idf.py menuconfig 指令修改。
输入真正的 token 之后回车保存,直到所有配置都配置完毕,一直按 esc 键返回,最后按 y 键确认配置,
注意:百度的 token 有效期是 30 天,过期后需要重新获取 token
3、编译
idf.py build
4、一键烧录
要先确认设备的串口号,可以用这个命令,
ls /dev/tty*
此时,未给设备上电,因此还没串口号,接下来按住 boot 键再接电源,
刷出串口号 /dev/ttyACM0 就是设备的串口号,为了避免权限问题,先赋权,
sudo chmod 777 /dev/ttyACM0
最后输入烧录指令,
idf.py -p /dev/ttyACM0 flash monitor
从控制台日志中可以看到,烧录完成,并且网络和 api 调用都正常。如果编译完成后显示“waiting for download...” 则需要重启设备。至此,烧录完成,可以愉快玩耍了!
esp-sparkbot唤醒乐鑫AI
十、USB 固件编译(VS Code方式)
USB 扩展屏示例可以将 ESP-SparkBot 开发板作为一块 windows 的副屏,支持以下功能:
- 支持 480*480@60FPS 的屏幕刷新速率
- 支持音频的输入和输出
注意:因为 S3 使用 USB FS,所以带宽资源相对优先,若想提升体验可以更换为支持 USB HS 的 [ESP32-P4]
烧录完成后,需要重新连接设备,然后在声音输出设置看到新输出 Analog Output,选中即可,
esp-sparkbot-音频输出
很遗憾,现在固件只支持 Windows10 及 Windows11,在 Deepin 下无法测试分屏效果。
USB 拓展屏方案可以参照官方文档,USB Device 方案 - - — ESP-IoT-Solution latest 文档
十一、烧录小智AI固件
参考 手把手教你用ESP32-S3打造智能聊天机器人-立创实战派_esp32小智-CSDN博客
Step1、下载固件包
# 下载地址
https://github.com/78/xiaozhi-esp32/releases
# v1.5.0
https://github.com/78/xiaozhi-esp32/releases/download/v1.5.0/v1.5.0_esp-sparkbot.zip
下载完之后,解压,得到一个 bin 文件,这就是烧录所需要的固件包了,
Step2、在线烧录固件
# 在线烧录网站
https://espressif.github.io/esp-launchpad/
打开这个网址,然后用 USB 连接开发板到电脑,点击 “Connect” 菜单,在弹窗中选择开发板的串口,这样就可以连接上开发板。
接着点击菜单“DIY”,选择刚下载的固件文件路径,填写烧录地址为 0x0,点击“Program”开始烧录。
烧录完成,需要重启设备,
显示“waiting for download”,拔掉电源重新上电即可。进入配网模式后,设置 wifi 的账号密码,在后台配置小智 AI 就可以使用了。
esp-sparkbot-小智AI
十二、常见问题与解决方案
1、编译报错
main/app/app_audio_record.c 文件编译报错,
//ESP_LOGI(TAG, LOG_BOLD(LOG_COLOR_GREEN) "Wakeword detected");
ESP_LOGI(TAG, "Wakeword detected");
只需改写一下日志输出代码即可,官方 5.2.3 版本不会报错,这里报错的是 5.4.0 版本。
2、屏幕只亮背光
修改代码,spi mode 从 2 修改为 0,代码路径在 components/esp_sparkbot_bsp/esp_sparkbot_bsp.c,
const esp_lcd_panel_io_spi_config_t io_config = {
.dc_gpio_num = BSP_LCD_DC,
.cs_gpio_num = BSP_LCD_SPI_CS,
.pclk_hz = BSP_LCD_PIXEL_CLOCK_HZ,
.lcd_cmd_bits = LCD_CMD_BITS,
.lcd_param_bits = LCD_PARAM_BITS,
.spi_mode = 0,
.trans_queue_depth = 10,
};
重新编译烧录之后,如果还是只亮背光,则检查电容电阻与屏幕的硬件焊接,
3、摄像头方向错误
修改宏定义文件 components/esp_sparkbot_bsp/include/bsp/esp_sparkbot_bsp.h ,
#define BSP_CAMERA_VFLIP 0
#define BSP_CAMERA_HMIRROR 1
将翻转宏定义 BSP_CAMERA_VFLIP 的值从 1 改为 0 ,将镜像宏定义 BSP_CAMERA_HMIRROR 的值从 0 改为 1 ,然后重新编译烧录固件。
4、没有声音输出
检查NS4150B元件是否焊接成功,并且检查喇叭是否焊接成功,喇叭是否损坏?
5、没有识别声音
检测麦克风、ES8311芯片是否焊接成功。
6、没有识别串口
注意,首次上电需要检查 Type C 是否短路,并且先按 boot 键再接 USB 上电,若未能识别出串口,则检查 PCB 板子电路、ESP32S3 芯片是否焊接成功。
7、Type C 上电失败
这种情况通常表现为 LED 灯用万用表测的时候是亮灯,但是 Type C 上电后 LED 灯不亮,此时需要检查 Type C 与元器件的方向是否正确,
8、bmi270 初始化失败
检查姿态传感器芯片 bmi270 的焊接,建议先焊接芯片的引脚,再焊接 PCB 引脚,然后使用助焊膏固定芯片,最后热风枪吹,焊接完成后别忘了用洗板水清理助焊膏。
9、温馨提示
- 谨慎使用洗板水,不要把板子浸透,否则板子内部可能会短路。
- PCB 上标注 NC 的元器件代表着Normal Close 常闭,请勿焊接。
- USB 投屏功能只能在 Windows 系统下支持,其他系统未支持。
- 百度 TOKEN 有效期只有 30 天,过期了需要手动刷新。
- 如果BOM材料断货了,替代材料寻找方法:类型->型号->规格,检查下用途跟PCB电路图对得上。
- 头部两个板子插接需注意方向,接反极大可能烧板!!!
- 打板时板厚选择 1mm。
- 板子涉及拼板,打板回来需要自己剪开并打磨。
- 电池需备注接 1.25 红黑插头。
- 注意使用的芯片是 ESP32-S3-WROOM-1-N16R8。
- 首次上电前先用万用表测试一下 TypeC 元件是否存在短路。
- 注意屏幕焊接,容易折断。
- 注意安装电池时镊子只捅一边,同时捅两边的话会短路。
- 注意在通风条件下焊接,电烙铁跟热风枪都很高温,需小心使用工具。
- 电容电阻较多,注意不要搞混,同时有些元器件有方向要求,注意方向焊接。
- 元器件较小,建议在白天采光好的环境下焊接,可加购一个放大镜焊接。
- B站有保姆级焊接教程,可以先学习一下大体焊接流程与技巧。
- 小白建议补充锡浆/锡膏/加热台/回流炉/回流曲线/助焊剂/助焊膏等焊接知识。
- 万用表检查短路,通常是蜂鸣档,黑笔接GND,红笔接电源,不响则代表正常,响了就要检查一下哪里短路了。
十三、学习交流
如果你在复刻途中遇到困难,点击下方名片,或者私信我,一起学习交流。
参考资料
- ESP-SparkBot - 立创开源硬件平台
- esp_sparkbot: 本仓库用于存放 ESP_SparkBot 的相关例程和 3D 建模。ESP_SparkBot 是一款基于 ESP32-S3的大模型 AI 桌面机器人,开发环境为 ESP-IDF,详情请参考 README。
- Docs