XIAO ESP32S3 sense 通过 ESPHome 连接 Home Assistant(支持所有端口)
本教程将逐步介绍如何将 Seeed Studio XIAO ESP32S3 与运行在 Home Assistant 上的 ESPHome 连接,并在将 Grove 模块连接到 XIAO ESP32S3 后发送传感器数据/控制设备。让我们开始吧!
什么是 ESPHome 和 Home Assistant?

ESPHome 是一个旨在让管理 ESP 开发板尽可能简单的工具。它读取 YAML 配置文件并创建自定义固件,然后将其安装到您的 ESP 设备上。在 ESPHome 配置中添加的设备或传感器将自动显示在 Home Assistant 的用户界面中。ESPHome 可以帮助您连接设备并将数据发送到 Home Assistant 设备。
硬件准备
如果您想完整地跟随本教程,您需要准备以下物品。
Seeed Studio XIAO ESP32S3 Sense | Seeed Studio 扩展板 | Home Assistant 设备 |
---|---|---|
![]() | ![]() | ![]() |
使用的传感器
软件准备
安装 Home Assistant
确保您已经安装并运行了 Home Assistant。您可以按照这个wiki获取在ODYSSEY-X86 SBC上安装 Home Assistant 的分步指南,或者按照这个链接获取在Seeed Mini Router上使用 Home Assistant 的详细说明。
在 Home Assistant 上安装 ESPHome
ESPHome 作为 Home Assistant 插件提供,可以通过插件商店简单安装。

- 步骤 1. 点击 INSTALL

- 步骤 2. 启用所有选项并点击 START

如果 ESPHome 成功加载,您将看到以下窗口

开始使用
一旦所有软件和硬件都准备就绪,我们现在就可以开始了。
1. 将Seeed Studio XIAO ESP32S3 (Sense)添加到 ESPHome
- 步骤 1. 点击 + NEW DEVICE

- 步骤 2. 点击 CONTINUE

- 步骤 3. 为设备输入一个名称,并输入WiFi凭据,如网络名称和密码。然后点击 NEXT

- 步骤 4. 选择 ESP32-S3 并点击

- 步骤 5. 点击 SKIP,因为我们将手动配置这个开发板

- 步骤 6. 点击新创建的开发板下方的 EDIT

- 步骤 7. 这将打开一个 YAML 文件,该文件将用于设置所有开发板配置。按如下方式编辑 esp32 下的内容
esphome:
name: esp32s3
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
注意: 这里我们使用最新版本的 Arduino core for ESP32 和 ESP32 support for PlatformIO
- 步骤 8. 点击 SAVE,然后点击 INSTALL

- 步骤 9. 将 USB Type-C 线缆的一端连接到 Seeed Studio XIAO ESP32S3,另一端连接到 reRouter CM4 1432 的其中一个 USB 端口

- 步骤 10. 点击 Plug into the computer running ESPHome Dashboard

- 步骤 11. 选择已连接的端口。它很可能是
/dev/ttyACM1 因为 /dev/ttyACM0
已连接到 reRouter CM4 1432

最好使用 2.4GHz Wi-Fi
现在它将下载所有必要的开发板包并将 ESPHome 固件刷入 XIAO ESP32S3。如果刷写成功,您将看到以下输出。如果您看到错误,请尝试重启您的 xiao esp32S3 或按住 BOOT 按钮进入引导加载程序模式并连接 XIAO ESP32S3。

- 步骤 12. 上面的窗口显示来自连接开发板的实时日志。点击 STOP 关闭它

- 步骤 13. 如果您看到开发板状态为 ONLINE,这意味着开发板已成功连接到 WiFi

现在您可以断开 XIAO ESP32S3 与 reRouter CM4 1432 的连接,只需通过 USB 线缆为其供电。这是因为从现在开始,如果您想要向 XIAO ESP32S3 刷写固件,您可以简单地通过 OTA 方式进行,无需通过 USB 线缆连接到 X86 开发板。
-
- 点击 三个点 并点击 Install

-
- 选择 Wirelessly,它将无线推送更改到开发板

- 步骤 14. 转到 Settings 并选择 Devices & Services

- 步骤 15. 您将看到 ESPHome 作为已发现的集成。点击 CONFIGURE

- 步骤 16. 点击 SUBMIT

- 步骤 17. 点击 FINISH

2. 将 Grove 模块与 ESPHome 和 Home Assistant 连接
现在我们将 Grove 模块连接到 Seeed Studio XIAO ESP32S3 (sense),这样我们就可以使用 Home Assistant 显示传感器数据或控制设备!
开发知识
XIAO 扩展板
为了将 Grove 模块与 Seeed Studio XIAO ESP32S3 一起使用,我们将使用 Seeed Studio Expansion Base for XIAO 并将 XIAO ESP32S3 连接到其上。
之后,开发板上的 Grove 连接器可用于连接 Grove 模块

引脚定义
当将 Grove 模块连接到 Seeed Studio XIAO 的 Grove Shield 上的 Grove 连接器时,您需要按照下图使用适当的内部引脚编号。

例如,如果您想将 Grove 模块连接到 D0 端口,您需要在 ESPHome 上将引脚定义为 GPIO1。您可以通过点击这里找到更多详细信息。
Grove 与 ESPHome 兼容性列表
目前 ESPHome 支持以下 Grove 模块
查看这里
现在我们将从上表中选择 6 个 Grove 模块,并解释如何将它们与 ESPHome 和 Home Assistant 连接。
3. Grove 连接和数据传输
现在我们将选择几个 Grove 模块,并解释如何将它们与 ESPHome 和 Home Assistant 连接。
Grove - 温湿度传感器 (BME680)
设置配置
-
步骤 1. 将 Grove - 温度、湿度、压力和气体传感器 (BME680) 连接到 Seeed Studio Expansion Base for XIAO 上的其中一个 I2C 连接器
-
步骤 2. 在我们之前创建的 xiao-esp32s3-bme680.yaml 文件中,更改文件并通过 OTA 推送到 XIAO ESP32S3
# ESPHome 配置
esphome:
# ESP32-S3 设备名称
name: esp32s3
# PlatformIO 构建选项
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# ESP32 配置
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# 启用日志记录
logger:
# 启用 Home Assistant API
api:
# 空中升级配置
ota:
# Wi-Fi 配置
wifi:
ssid: "your wifi name"
password: "your password"
# 在 wifi 连接失败时启用备用热点(强制门户)
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# 强制门户配置
captive_portal:
# BME680 传感器的 I2C 配置
i2c:
sda: GPIO5
scl: GPIO6
# BME680 传感器配置
sensor:
- platform: bme680
temperature:
name: "BME680 Temperature"
oversampling: 16x
pressure:
name: "BME680 Pressure"
humidity:
name: "BME680 Humidity"
gas_resistance:
name: "BME680 Gas Resistance"
address: 0x76
update_interval: 60s
您可以在这里了解更多关于 BME680 组件 的信息。它允许您使用基于 BME280、BME680、BMP085、BMP280、AHT10、AHT20 和 AHT21 的传感器。这里我们添加了 I²C 总线组件,因为 AHT20 使用 I2C 协议进行通信。
在仪表板上可视化
- 步骤 1. 在 Home Assistant 的概览页面上,点击 3 个点并点击 Edit Dashboard

- 步骤 2. 点击 + ADD CARD

- 步骤 3. 选择 By ENTITY,输入 temperature 并选择 Temperature 旁边的 复选框

-
步骤 4. 对 Humidity、Gas Resitance 和 Pressure 重复相同操作
-
步骤 5. 点击 CONTINUE
-
步骤 6. 点击 ADD TO DASHBOARD
现在您的 Home Assistant 仪表板将如下所示

- 步骤 7. 您也可以将传感器数据可视化为仪表。在 BY CARD 下点击 Gauge

- 步骤 8. 从下拉菜单中选择 Temperature

-
步骤 9. 点击 SAVE
-
步骤 10. 对 Humidity、Gas Resitance 和 Pressure 重复相同操作
-
现在您的仪表板将如下所示

Grove -智能空气质量传感器 (SGP41)
- 步骤 1. 将 Grove - 智能空气质量传感器 (SGP41) 连接到 Seeed Studio Expansion Base for XIAO 上的其中一个 I2C 连接器

- 步骤 2. 在我们之前创建的 xiao-esp32S3.yaml 文件中,修改文件并通过 OTA 推送到 XIAO ESP32S3 sense
# ESPHome 配置
esphome:
# ESP32-S3 设备名称
name: esp32s3
# PlatformIO 构建选项
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# ESP32 配置
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# 启用日志记录
logger:
# 启用 Home Assistant API
api:
# 无线更新配置
ota:
# Wi-Fi 配置
wifi:
ssid: "your wifi name"
password: "your password"
# 在 wifi 连接失败时启用备用热点(强制门户)
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# 强制门户配置
captive_portal:
# SPI 配置
spi:
clk_pin: GPIO8
mosi_pin: GPIO10
miso_pin: GPIO9
# BME680 传感器的 I2C 配置
i2c:
sda: GPIO5
scl: GPIO6
scan: True
id: bus_a
frequency: 1MHz
# SGP4X 传感器配置
sensor:
- platform: sgp4x
voc:
id: sgp41_voc
name: "VOC Index"
nox:
id: sgp41_nox
name: "NOx Index"
- 步骤 3. 带补偿的示例 compensation(可选):包含用于补偿的传感器的块。如果未设置,将使用默认值。 我们将使用温湿度传感器(BME680)对智能空气质量传感器(SGP41)进行补偿。 以下是更新后的 xiao-esp32S3.yaml 文件:
# ESPHome 配置
esphome:
# ESP32-S3 设备名称
name: esp32s3
# PlatformIO 构建选项
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# ESP32 配置
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# 启用日志记录
logger:
# 启用 Home Assistant API
api:
# 无线更新配置
ota:
# Wi-Fi 配置
wifi:
ssid: "your wifi name"
password: "your password"
# 如果 wifi 连接失败,启用后备热点(强制门户)
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# 强制门户配置
captive_portal:
# SPI 配置
spi:
clk_pin: GPIO8
mosi_pin: GPIO10
miso_pin: GPIO9
# BME680 传感器的 I2C 配置
i2c:
sda: GPIO5
scl: GPIO6
scan: True
id: bus_a
frequency: 1MHz
# BME680 传感器配置
sensor:
- platform: bme680
temperature:
id: bme680_temp
name: "BME680 Temperature"
oversampling: 16x
pressure:
name: "BME680 Pressure"
humidity:
id: bme680_hum
name: "BME680 Humidity"
gas_resistance:
name: "BME680 Gas Resistance"
address: 0x76
# SGP4X 传感器配置
- platform: sgp4x
voc:
name: "VOC Index"
nox:
name: "NOx Index"
compensation:
humidity_source: bme680_hum
temperature_source: bme680_temp
注意: 此传感器需要 90 个周期来收集足够的数据样本,目前无法避免警告。

在仪表板上可视化
与之前相同。

OV2640/OV3660 摄像头(XIAO ESP32S3 Sense)
设置配置
-
步骤 1. 将 OV2640 或 OV660 摄像头外部板连接到 xiao esp32s3 sense
-
步骤 2. 在我们之前创建的 xiao-esp32s3-camera.yaml 文件中,更改文件并通过 OTA 推送到 XIAO ESP32S3 sense
# ESPHome 配置
esphome:
# ESP32-S3 设备名称
name: esp32s3
# PlatformIO 构建选项
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# ESP32 配置
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# 启用日志记录
logger:
# 启用 Home Assistant API
api:
# 空中升级配置
ota:
# Wi-Fi 配置
wifi:
ssid: "your wifi name"
password: "your password"
# 在 wifi 连接失败时启用备用热点(强制门户)
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# 强制门户配置
captive_portal:
# ESP32 摄像头配置
esp32_camera:
id: espcam
name: My Camera
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
resolution: 800x600
# ESP32 摄像头 Web 服务器配置
esp32_camera_web_server:
- port: 8080
mode: stream
- port: 8081
mode: snapshot
注意:更多信息请阅读这里
在仪表板上可视化
- 步骤 1. 在 Home Assistant 的概览页面上,点击 3 个点并点击 Edit Dashboard

- 步骤 2. 点击 + ADD CARD

- 步骤 3. 选择 By ENTITY,输入 Camera 并选择 My Camera

- 步骤 4. 点击 Add to Dashboard

- 步骤 5. 在仪表板上查看网络流时,它处于空闲模式,每分钟只刷新几帧。当我们点击卡片时,它会转换为活动模式,通常刷新率在每秒一到十帧之间。在本教程中,刷新率约为每秒四帧。

PDM 麦克风用于语音助手
设置配置
- 步骤 1. 在我们之前创建的 xiao-esp32s3-microphone.yaml 文件中,修改文件并通过 OTA 推送到 XIAO ESP32S3 sense
# ESPHome 配置
esphome:
name: esp32s3
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# ESP32 配置
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# 启用日志记录
logger:
# 启用 Home Assistant API
api:
# 无线更新配置
ota:
# Wi-Fi 配置
wifi:
ssid: "your wifi name"
password: "your password"
# 在 wifi 连接失败时启用备用热点(强制门户)
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# 强制门户配置
captive_portal:
# 状态 LED 灯配置
light:
- platform: status_led
id: light0
name: "Voice Assistant State"
pin:
number: GPIO21
inverted: true
# I2S 音频配置
i2s_audio:
i2s_lrclk_pin: GPIO46 # 注意:标记为"无用"
i2s_bclk_pin: GPIO42
# 使用 I2S 音频的麦克风配置
microphone:
- platform: i2s_audio
id: echo_microphone
i2s_din_pin: GPIO41
adc_type: external
pdm: true
# 语音助手配置
voice_assistant:
microphone: echo_microphone
# 二进制传感器配置(启动开关)
binary_sensor:
- platform: gpio
pin:
number: GPIO2
mode:
input: true
pullup: true
name: Boot Switch
internal: true
on_press:
- voice_assistant.start:
- light.turn_off: light0
on_release:
- voice_assistant.stop:
- light.turn_on: light0
注意:更多信息请阅读这里。
在仪表板上可视化
- 步骤 1. 在Home Assistant的概览页面上,点击3个点并点击编辑仪表板

- 步骤 2. 点击**+ 添加卡片**

- 步骤 3. 选择按实体,然后选择Esp32S3 Assist in progress、Esp32S3 Assist in progress、Esp32S3 Finished speaking detection、Status和voice assistant state


- 步骤 4. 点击添加到仪表板

- 步骤 5. 当您按下Seeed Studio XIAO扩展底板上的按钮(D1)时,esp32s3上的用户定义LED(GPIO2)将点亮,您可以通过语音助手与esphome对话。

注意: 更多信息请阅读这里。
XIAO 6x10 RGB矩阵
设置配置
-
步骤 1. 首先您需要将6x10 RGB矩阵连接到XIAO,详情请参见此Wiki。
-
步骤 2. 复制下面的.yaml信息并通过OTA推送到XIAO ESP32S3。
esphome:
name: sixtyled
friendly_name: sixtyled
esp32:
board: seeed_xiao_esp32s3
variant: esp32s3
framework:
type: arduino
version: latest
platform_version: 6.4.0
# 启用日志记录
logger:
# 启用Home Assistant API
api:
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# 在wifi连接失败时启用回退热点(强制门户)
ap:
ssid: "Sixtyled Fallback Hotspot"
password: "MoLTqZUvHwWI"
captive_portal:
light:
- platform: esp32_rmt_led_strip
rgb_order: GRB
pin: GPIO1
num_leds: 60
rmt_channel: 0
chipset: ws2812
name: "XIAO LEDS"
在仪表板上可视化
- 步骤 1. 打开路径
设置 - 设备和服务 - ESPHome - sixtyled(您设置的名称)
将卡片添加到仪表板。

- 步骤 2. 在Home Assistant的概览页面上,点击3个点并点击编辑仪表板

- 步骤 3. 点击**+ 添加卡片**

- 步骤 4. 选择按实体,输入xiao并选择sixtyled XIAO LEDS旁边的复选框

- 步骤 5. 点击继续和添加到仪表板

- 步骤 6. 随后,您可以在"概览"部分找到一个卡片,您可以在其中控制XIAO的6x10 RGB矩阵。在这里,您可以切换其开/关状态并自定义其颜色和亮度。

✨ 贡献者项目
技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。