8| 0
|
[ESP8266/ESP32] FireBeetle 2 ESP32 P4 适配小智AI |
本帖最后由 HonestQiao 于 2025-8-4 07:37 编辑 小智AI已经能够支持ESP32-P4芯片了,所以拿到FireBeetle 2 ESP32 P4开发板后,第一时间做了小智AI的适配。 下面分享具体的适配步骤。 如果只是想要烧录FireBeetle 2 ESP32 P4开发板的小智AI固件,可以直接快进到 **5. 在线烧录** ## 1. 开发板适配 首先,从 https://github.com/78/xiaozhi-esp32 下载小智AI官方的源码,并安装小智AI官方说明,完成ESP-IDF环境搭建。 然后,根据小智AI新增开发板的规则,建立 main/boards/df-p4-firebeetle2 目录,做为FireBeetle 2 ESP32 P4开发板的专属适配文件目录。 在该目录中,放置了三个文件,分别是:(具体见 https://github.com/HonestQiao/xi ... s/df-p4-firebeetle2 ) ### 1). 开发板配置文件:config.json ``` { "target": "esp32p4", "builds": [ { "name": "df-p4-firebeetle2", "sdkconfig_append": [ "CONFIG_IOT_PROTOCOL_MCP=y" ] } ] } ``` 这个文件用于描述开发板的芯片类型(target)、SKU名称(name)、以及默认的编译参数(sdkconfig_append) ### 2). 源码头文件:config.h 在这个头文件中,配置如下的信息: #### 1. 音频输入和输出的采样率 直接配置为24000即可: ``` #define AUDIO_INPUT_SAMPLE_RATE 24000 #define AUDIO_OUTPUT_SAMPLE_RATE 24000 ``` #### 2. 麦克风的信号引脚 从官方WiKi中,可以得知这块开发板的麦克风的引脚如下: ![]() 注意,这个麦克风WiKi说明了,是:**MIC: MEMS PDM麦克风**,不是小智里面常用的I2S麦克风INMP441。 所以具体配置如下: ``` #define AUDIO_I2S_MIC_GPIO_SCK GPIO_NUM_12 #define AUDIO_I2S_MIC_GPIO_DIN GPIO_NUM_9 ``` #### 3. 音频输出功放模块的引脚 因为这次一起提供了扩展板,并提供了 MAX98357 I2S功放模块,所以我直接在扩展板上安排连接的引脚。 根据WiKi提供的MAX98357 I2S功放模块引脚信息: ![]() 可以看到,如果要使用这个I2S功放模块,用左边的VCC、GND、LRC、BCLK、DIN即可,然后把喇叭接在最上面的白色座子上即可。 再结合 扩展板引脚信息: ![]() 我使用了两种方案: ##### 方案0: 使用扩展板52、51、50引脚即可 | 扩展板引脚 | I2S功放模块引脚 | 说明 | |---|---|:--| | 52 | DIN | AUDIO_I2S_SPK_GPIO_DOUT | | 51 | BCLK | AUDIO_I2S_SPK_GPIO_BCLK | | 50 | LRC | AUDIO_I2S_SPK_GPIO_LRCK | | GND | GND | 接地 | | 3V3 | VCC | 供电 | 使用该方案,可以自由接线。 ##### 方案1:使用扩展板SPI接口引脚 | 扩展板引脚 | I2S功放模块引脚 | 说明 | |---|---|:--| | 30 | DIN | AUDIO_I2S_SPK_GPIO_DOUT | | 29 | BCLK | AUDIO_I2S_SPK_GPIO_BCLK | | 28 | LRC | AUDIO_I2S_SPK_GPIO_LRCK | | GND | GND | 接地 | | 3V3 | VCC | 供电 | 默认使用该方案,是因为给I2S功放模块焊上母座后,可以直接插在扩展板的SPI接口使用,如下图: ![]() 对插的时候,让SPK+引脚落空即可,这样子其他的引脚都能对上,一插即合。 根据实际需要,选择对应的方案,具体配置信息如下: ``` #define AUDIO_I2S_SPK_USE_SPI_PORT 1 // 0:使用自定义引脚 1: 使用扩展板SPI接口引脚 #if ( AUDIO_I2S_SPK_USE_SPI_PORT != 1 ) #define AUDIO_I2S_SPK_GPIO_DOUT GPIO_NUM_52 #define AUDIO_I2S_SPK_GPIO_BCLK GPIO_NUM_51 #define AUDIO_I2S_SPK_GPIO_LRCK GPIO_NUM_50 #else #define AUDIO_I2S_SPK_GPIO_DOUT GPIO_NUM_30 #define AUDIO_I2S_SPK_GPIO_BCLK GPIO_NUM_29 #define AUDIO_I2S_SPK_GPIO_LRCK GPIO_NUM_28 #endif ``` #### 4. LED和按钮配置 根据功能引脚定义,直接使用如下引脚即可: ``` #define BUILTIN_LED_GPIO GPIO_NUM_3 #define BOOT_BUTTON_GPIO GPIO_NUM_35 ``` #### 5. 屏幕引脚配置 FireBeetle 2 ESP32 P4开发板支持树莓派4B兼容的DSI屏幕,不过还在适配中,所以先提供了常见屏幕的支持,如果ST7789、ST7735、ST7796、ILI9341、GC9A01,也可以根据实际情况自定义屏幕。 屏幕部分需要的引脚较多,使用了扩展板顶部的引脚(连续),具体配置如下: ``` #define DISPLAY_CLK_PIN GPIO_NUM_4 #define DISPLAY_MOSI_PIN GPIO_NUM_5 #define DISPLAY_RST_PIN GPIO_NUM_20 #define DISPLAY_DC_PIN GPIO_NUM_21 #define DISPLAY_CS_PIN GPIO_NUM_22 #define DISPLAY_BACKLIGHT_PIN GPIO_NUM_23 ``` 具体的屏幕参数的定义,请查看config.h文件本身了解即可。 ### 3). 开发板适配核心代码:df_p4.cc 在 该文件中,定义了FireBeetle 2 ESP32 P4开发板对应的类: DfrobotFireBeetle2ESP32P4,包括屏幕(InitializeLcdDisplay)、按钮(InitializeButtons)初始化调用,以及LED(GetLed)、音频(GetAudioCodec)、屏幕(GetDisplay)、背光(GetBacklight)的调用接口。 因为FireBeetle 2 ESP32 P4开发板使用的是PDM麦克风,所以音频部分,使用了NoAudioCodecSimplexPdm。 ## 2. Kconfig 配置文件适配 ### 1). 开发板列表中添加 DFRobot FireBeetle 2 ESP32-P4 ``` choice BOARD_TYPE config BOARD_TYPE_DF_K10 bool "DFRobot 行空板 k10" depends on IDF_TARGET_ESP32S3 config BOARD_TYPE_DF_S3_AI_CAM bool "DFRobot ESP32-S3 AI智能摄像头模块" depends on IDF_TARGET_ESP32S3 config BOARD_TYPE_DF_P4_FIREBEETLE2 bool "DFRobot FireBeetle 2 ESP32-P4" depends on IDF_TARGET_ESP32P4 endchoice ``` ### 2). 屏幕类型中,添加 BOARD_TYPE_DF_P4_FIREBEETLE2 ``` choice DISPLAY_LCD_TYPE depends on BOARD_TYPE_BREAD_COMPACT_WIFI_LCD || BOARD_TYPE_BREAD_COMPACT_ESP32_LCD || BOARD_TYPE_ESP32_CGC || BOARD_TYPE_ESP32P4_NANO || BOARD_TYPE_ESP32P4_WIFI6_Touch_LCD_XC || BOARD_TYPE_BREAD_COMPACT_WIFI_CAM || BOARD_TYPE_DF_P4_FIREBEETLE2 prompt "LCD Type" default LCD_ST7789_240X320 ``` 添加上述部分后,在配置屏幕菜单中,就可以选择对应的屏幕了。 ## 3. CMakeLists.txt 项目构建配置 直接添加如下配置即可: ``` elseif(CONFIG_BOARD_TYPE_DF_K10) set(BOARD_TYPE "df-k10") elseif(CONFIG_BOARD_TYPE_DF_S3_AI_CAM) set(BOARD_TYPE "df-s3-ai-cam") elseif(CONFIG_BOARD_TYPE_DF_P4_FIREBEETLE2) set(BOARD_TYPE "df-p4-firebeetle2") ``` ## 4. 配置编译 进过以上的适配后,就可以进行编译了。 在编译之前,首先需要设置芯片类型: ``` idf.py set-target esp32p4 ``` 再运行配置选择开发板和屏幕类型: ``` idf.py menuconfig ``` ![]() 然后就可以执行编译命令了: ``` idf.py build ``` 编译完成之后,就可以进行烧录运行了: ``` idf.py flash monitor ``` ## 5. 在线烧录 如果没有编译环境的话,可以访问网址:https://web.esphome.io/ 进行烧录。 烧录前,请先下载附件文件并解压备用,然后检查功放模块是否按如下方式进行连接: 默认的固件,使用了ST7789_240X320_NO_IPS屏幕,但不接屏幕亦可使用。如果需要定制其他的屏幕,可以自行配置并编译代码,或者联系我代为定制编译。 ### 1). 连接开发板 打开上述网址后,点 CONNECT ,然后选择开发板对应的设备进行连接: ![]() ### 2). 选择固件 点 INSTALL 选择固件: ![]() ![]() ### 3). 烧录固件 点击上一步的INSTALL,然后等待烧录完成即可使用: ![]() ## 6. 运行效果 ### 1). 配网 首次运行的时候,会语音提示“进入配网模式”,显示如下的界面: ![]() 用手机连接Xiaozhi_开头的WiFi名称: ![]() 连接成功后,会自动打开配网页面: ![]() 根据当前网络情况,选择列表中对应的网络,输入密码,点击连接即可。 如果连接成功,会出现如下的界面: ![]() 开发板重启后,屏幕将会显示:  ### 2). 激活设备 如果是首次唤醒的话,还会语音提醒和显示激活码: ![]() 此时,可以到 https://xiaozhi.me 添加智能体并进行绑定。 ![]() ### 4). 与小智AI对话 一切完成后,喊一声你好小智,就可以唤醒对话了:  ## 7. 补充说明 支持树莓派4B兼容的屏幕,以及兼容兼容树莓派4B的摄像头,正在适配中,适配完第一时间提供。 |
v1.8.4_df-p4-firebeetle2_ST7789_240X320_NO_IPS.zip
2.07 MB, 下载次数: 0
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed