8浏览
查看: 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中,可以得知这块开发板的麦克风的引脚如下:
FireBeetle 2 ESP32 P4 适配小智AI图1
注意,这个麦克风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功放模块引脚信息:
FireBeetle 2 ESP32 P4 适配小智AI图3
可以看到,如果要使用这个I2S功放模块,用左边的VCC、GND、LRC、BCLK、DIN即可,然后把喇叭接在最上面的白色座子上即可。

再结合 扩展板引脚信息:
FireBeetle 2 ESP32 P4 适配小智AI图2

我使用了两种方案:
##### 方案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接口使用,如下图:
FireBeetle 2 ESP32 P4 适配小智AI图4
对插的时候,让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
```
FireBeetle 2 ESP32 P4 适配小智AI图9


然后就可以执行编译命令了:
```
idf.py build
```

编译完成之后,就可以进行烧录运行了:
```
idf.py flash monitor
```

## 5. 在线烧录
如果没有编译环境的话,可以访问网址:https://web.esphome.io/ 进行烧录。
烧录前,请先下载附件文件并解压备用,然后检查功放模块是否按如下方式进行连接:


默认的固件,使用了ST7789_240X320_NO_IPS屏幕,但不接屏幕亦可使用。如果需要定制其他的屏幕,可以自行配置并编译代码,或者联系我代为定制编译。

### 1). 连接开发板
打开上述网址后,点 CONNECT ,然后选择开发板对应的设备进行连接:
FireBeetle 2 ESP32 P4 适配小智AI图12

### 2). 选择固件
点 INSTALL 选择固件:
FireBeetle 2 ESP32 P4 适配小智AI图13
FireBeetle 2 ESP32 P4 适配小智AI图14

### 3). 烧录固件
点击上一步的INSTALL,然后等待烧录完成即可使用:
FireBeetle 2 ESP32 P4 适配小智AI图15


## 6. 运行效果
### 1). 配网
首次运行的时候,会语音提示“进入配网模式”,显示如下的界面:
FireBeetle 2 ESP32 P4 适配小智AI图5

用手机连接Xiaozhi_开头的WiFi名称:
FireBeetle 2 ESP32 P4 适配小智AI图6

连接成功后,会自动打开配网页面:
FireBeetle 2 ESP32 P4 适配小智AI图7

根据当前网络情况,选择列表中对应的网络,输入密码,点击连接即可。
如果连接成功,会出现如下的界面:
FireBeetle 2 ESP32 P4 适配小智AI图8


开发板重启后,屏幕将会显示:
![文件待上传](assets/img_31.jpg)

### 2). 激活设备
如果是首次唤醒的话,还会语音提醒和显示激活码:
FireBeetle 2 ESP32 P4 适配小智AI图11


此时,可以到 https://xiaozhi.me 添加智能体并进行绑定。
FireBeetle 2 ESP32 P4 适配小智AI图10


### 4). 与小智AI对话
一切完成后,喊一声你好小智,就可以唤醒对话了:
![文件待上传](assets/img_32.jpg)

## 7. 补充说明
支持树莓派4B兼容的屏幕,以及兼容兼容树莓派4B的摄像头,正在适配中,适配完第一时间提供。

v1.8.4_df-p4-firebeetle2_ST7789_240X320_NO_IPS.zip

2.07 MB, 下载次数: 0

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail