XIAO ESP32S3 sense 通过 ESPHome 与 Home Assistant 连接
- 1. 什么是 ESPHome 和 Home Assistant?
- 2. 软件准备
- 3. 开始
- 4. 将 Grove 模块与 ESPHome 和 Home Assistant 连接
- 5. Grove 连接和数据传输
- 6. Grove -智能空气质量传感器 (SGP41)
- 7. OV2640 相机 (XIAO ESP32S3 Sense)
- 8. 用于语音助手的 PDM 麦克风
- 9. 总结
本 教程将逐步介绍如何将 Seeed Studio XIAO ESP32S3 与 Home Assistant 上运行的。
ESPHome 连接,并在将 Grove 模块连接到 XIAO ESP32S3 后发送传感器数据/控制设备。那么,让我们开始吧!
1. 什么是 ESPHome 和 Home Assistant?
ESPHome 是一个工具,旨在使管理您的 ESP 板尽可能简单。它读取 YAML 配置文件并创建安装在 ESP 设备上的自定义固件。在 ESPHome 配置中添加的设备或传感器将自动显示在 Home Assistant 的 UI 中。ESPHome 可以帮助您连接数据并将其发送到家庭助理设备。
硬件准备
如果要按照本教程完成所有操作,则需要准备以下内容。
Grove 传感器
Grove - 温湿度传感器 (BME680)
Grove - 智能空气质量传感器 (SGP41)
2. 软件准备
安装家庭助理
【树莓派安装Homeassistant及基本配置】
3. 开始
一旦所有的软件和硬件都真正到位,我们现在可以开始了。
- 将 Seeed Studio XIAO ESP32S3 (Sense) 添加到 ESPHome
步骤 1。单击 + NEW DEVICE
第2步。点击继续
第 3 步。输入设备的名称,然后输入 WiFi 凭据,例如网络名称和密码。然后单击“下一步”
第 4 步。选择 ESP32-S3,然后单击
第 5 步。单击 SKIP,因为我们将手动配置此板
第 6 步。单击新创建的看板下的“编辑”
第 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 内核来支持 ESP32 和 ESP32 对 PlatformIO 的支持
第 8 步。单击“保存”,然后单击“安装”
第 9 步。将 USB Type-C 电缆的一端连接到 Seeed Studio XIAO ESP32S3,另一端连接到电脑 上的一个 USB 端口
第 10 步。单击插入运行 ESPHome Dashboard 的计算机
第 11 步。选择连接的端口。它很可能连接到/dev/ttyACM1 because /dev/ttyACM0
提示 最好使用 2.4GHz Wi-Fi
现在,它将下载所有必要的板包,并将 ESPHome 固件刷新到 XIAO ESP32S3中。如果闪烁成功,您将看到以下输出。如果您看到错误,请尝试重新启动 xiao esp32S3 或按住 BOOT BUTTON 并连接 XIAO ESP32S3 进入引导加载程序模式。
第 12 步。上面的窗口显示来自所连接板的实时日志。单击“停止”将其关闭
第 13 步。如果您看到主板状态为 ONLINE,则表示主板已成功连接到 WiFi
提示 现在,您可以断开 XIAO ESP32S3与 reRouter CM4 1432 的连接,只需通过 USB
电缆为其供电即可。这是因为从现在开始,如果要将固件烧录到XIAO ESP32S3,只需OTA即可,而无需通过USB线连接到X86板。
单击三个点,然后单击“安装”
选择“无线”,它将以无线方式将更改推送到开发板
第 14 步。转到“设置”,然后选择“设备和服务”
第 15 步。您将看到 ESPHome 作为已发现的集成。单击 CONFIGURE
第 16 步。点击提交
第 17 步。单击“完成”
4. 将 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 模块连接到 Grove Shield for Seeed Studio XIAO 上的 Grove 连接器时,您需要按照下图使用适当的内部引脚号。
例如,如果要将 Grove 模块连接到 D0 端口,则需要将 ESPHome 上的引脚定义为 GPIO1。您可以点击这里找到更多详细信息。
Grove 与 ESPHome 的兼容性列表
目前,ESPHome 支持以下 Grove 模块
点击这里
现在我们将从上表中选择 6 个 Grove 模块,并解释它们如何与 ESPHome 和 Home Assistant 连接。
5. Grove 连接和数据传输
现在我们将选择几个 Grove 模块,并解释它们如何与 ESPHome 和 Home Assistant 连接。
Grove - 温湿度传感器 (BME680)
设置配置
步骤 1。将 Grove - 温度、湿度、压力和气体传感器 (BME680) 连接到 Seeed Studio 扩展底座上的一个 I2C 连接器,用于 XIAO
第2步。在我们之前创建的 xiao-esp32s3-bme680.yaml 文件中,修改文件并推送到 XIAO ESP32S3
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
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"
# Captive portal configuration
captive_portal:
# I2C configuration for BME680 sensor
i2c:
sda: GPIO6
scl: GPIO7
# BME680 sensor configuration
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 协议进行通信。
下载方式可以采用ESphome如下
在仪表板上可视化
步骤 1。在家庭助理的“概述”页面上,单击 3 个点,然后单击“编辑仪表板”
第2步。单击 + 添加卡
第 3 步。选择“按实体”,键入 temperature,然后选中“温度”旁边的复选框
第 4 步。对湿度、气体电阻和压力重复相同的操作
第 5 步。点击继续
第 6 步。单击“添加到仪表板”
现在,您的家庭助理仪表板将如下所示
第 7 步。您还可以将传感器数据可视化为仪表。单击“BY CARD”下的“仪表”
第 8 步。从下拉菜单中选择温度
第 9 步。单击保存
第 10 步。对湿度、气体电阻和压力重复相同的操作
现在,您的仪表板将如下所示
6. Grove -智能空气质量传感器 (SGP41)
步骤 1。将 Grove - 智能空气质量传感器 (SGP41) 连接到 Seeed Studio 扩展底座上的一个 I2C 连接器,用于 XIAO
第2步。在我们之前创建的 xiao-esp32S3.yaml 文件中,修改文件并推送到 OTA 到 XIAO ESP32S3 sense
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
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"
# Captive portal configuration
captive_portal:
# SPI configuration
spi:
clk_pin: GPIO8
mosi_pin: GPIO10
miso_pin: GPIO9
# I2C configuration for BME680 sensor
i2c:
sda: GPIO6
scl: GPIO7
scan: True
id: bus_a
frequency: 1MHz
# Sensor configuration for SGP4X
sensor:
- platform: sgp4x
voc:
id: sgp41_voc
name: "VOC Index"
nox:
id: sgp41_nox
name: "NOx Index"
第 3 步。带补偿的示例 补偿(可选):包含用于补偿的传感器的块。如果未设置,将使用默认值。 我们将使用温度和湿度传感器 (BME680) 补偿智能空气质量传感器 (SGP41)。 以下是更新后的 xiao-esp32S3.yaml 文件:
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
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"
# Captive portal configuration
captive_portal:
# SPI configuration
spi:
clk_pin: GPIO8
mosi_pin: GPIO10
miso_pin: GPIO9
# I2C configuration for BME680 sensor
i2c:
sda: GPIO6
scl: GPIO7
scan: True
id: bus_a
frequency: 1MHz
# BME680 sensor configuration
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 sensor configuration
- platform: sgp4x
voc:
name: "VOC Index"
nox:
name: "NOx Index"
compensation:
humidity_source: bme680_hum
temperature_source: bme680_temp
注意:该传感器将花费 90 个圆圈来收集足够的数据样本,并且到目前为止无法避免警告。
在仪表板上可视化
和以前一样。
7. OV2640 相机 (XIAO ESP32S3 Sense)
设置配置
步骤 1。将 OV2640 摄像头外板连接到 xiao esp32s3 sense
第2步。在我们之前创建的 xiao-esp32s3-camera.yaml 文件中,修改文件并将其推送到 XIAO ESP32S3 sense
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
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"
# Captive portal configuration
captive_portal:
# Configuration for the ESP32 Camera
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
# Configuration for the ESP32 Camera Web Server
esp32_camera_web_server:
- port: 8080
mode: stream
- port: 8081
mode: snapshot
注意:欲了解更多信息,请阅读此处。
在仪表板上可视化
步骤 1。在家庭助理的“概述”页面上,单击 3 个点,然后单击“编辑仪表板”
第2步。单击 + 添加卡
第 3 步。选择“按实体”,键入“相机”,然后选择“我的相机”
第 4 步。单击“添加到仪表板”
第 5 步。在仪表板上查看 Web 流时,它处于空闲模式,每分钟仅刷新几帧。当我们单击卡时,它会过渡到活动模式,通常刷新率在每秒 1 到 10 帧之间。在本教程中,刷新率约为每秒 4 帧。
8. 用于语音助手的 PDM 麦克风
设置配置
步骤 1。在我们之前创建的 xiao-esp32s3-microphone.yaml 文件中,修改文件并推送到 XIAO ESP32S3 sense
# Configuration for 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
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
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"
# Captive portal configuration
captive_portal:
# Configuration for the status LED light
light:
- platform: status_led
id: light0
name: "Voice Assistant State"
pin:
number: GPIO21
inverted: true
# Configuration for I2S audio
i2s_audio:
i2s_lrclk_pin: GPIO46 # Note: labeled as "useless"
i2s_bclk_pin: GPIO42
# Configuration for the microphone using I2S audio
microphone:
- platform: i2s_audio
id: echo_microphone
i2s_din_pin: GPIO41
adc_type: external
pdm: true
# Configuration for the Voice Assistant
voice_assistant:
microphone: echo_microphone
# Configuration for the binary sensor (Boot Switch)
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。在家庭助理的“概述”页面上,单击 3 个点,然后单击“编辑仪表板”
第2步。单击 + 添加卡
第 3 步。选择按实体,然后选择 Esp32S3 Assist in progress、Esp32S3 Assist in progress、Esp32S3 Finished speak detection、Status 和 voice assistant 状态
第 4 步。单击“添加到仪表板”
第 5 步。当您按下 Seeed Studio Expansion Base for XIAO 上的按钮 (D1) 时,esp32s3 上的用户定义的 LED (GPIO2) 将亮起,您可以通过语音助手与 esphome 通话。
注意:欲了解更多信息,请阅读它。
9. 总结
通过XIAO ESP32S3 sense 通过 ESPHome 与 Home Assistant 连接,我们可以让ESP32作为主心骨,接下来就是学习其他外设有机衔接从而完成功能,进而丰富我们的生活。🛹🛹🛹
从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。🤣🤣🤣
- 我会持续更新对应专栏博客,非常期待你的三连!!!🎉🎉🎉
- 如果鹏鹏有哪里说的不妥,还请大佬多多评论指教!!!👍👍👍
- 下面有我的🐧🐧🐧群推广,欢迎志同道合的朋友们加入,期待与你的思维碰撞😘😘😘
✨ 贡献者项目
- 该项目由 Seeed Studio Contributor Project 提供支持。
- 感谢 Zachary 的努力,您的作品将被展出。
- XIAO ESP32S3 sense connecting with Home Assistant via ESPHome(all ports supported)