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: esp32s3platformio_options:build_flags: -DBOARD_HAS_PSRAMboard_build.arduino.memory_type: qio_opiboard_build.f_flash: 80000000Lboard_build.flash_mode: qio esp32:board: esp32-s3-devkitc-1framework: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 failsap: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 devicename: esp32s3# PlatformIO build optionsplatformio_options:build_flags: -DBOARD_HAS_PSRAMboard_build.arduino.memory_type: qio_opiboard_build.f_flash: 80000000Lboard_build.flash_mode: qio # Configuration for ESP32
esp32:board: esp32-s3-devkitc-1framework: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 failsap:ssid: "Xiao-Esp32s3 Fallback Hotspot"password: "MoLTqZUvHwWI"# Captive portal configuration
captive_portal:# I2C configuration for BME680 sensor
i2c:sda: GPIO6scl: GPIO7# BME680 sensor configuration
sensor:- platform: bme680temperature:name: "BME680 Temperature"oversampling: 16xpressure:name: "BME680 Pressure"humidity:name: "BME680 Humidity"gas_resistance:name: "BME680 Gas Resistance"address: 0x76update_interval: 60s
您可以在此處了解有關 BME680 組件的更多信息。它允許您使用基于 BME280、BME680、BMP085、BMP280、AHT10、AHT20 和 AHT21 的傳感器。這里我們添加 I2C 總線組件,因為 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 devicename: esp32s3# PlatformIO build optionsplatformio_options:build_flags: -DBOARD_HAS_PSRAMboard_build.arduino.memory_type: qio_opiboard_build.f_flash: 80000000Lboard_build.flash_mode: qio # Configuration for ESP32
esp32:board: esp32-s3-devkitc-1framework: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 failsap:ssid: "Xiao-Esp32s3 Fallback Hotspot"password: "MoLTqZUvHwWI"# Captive portal configuration
captive_portal:# SPI configuration
spi:clk_pin: GPIO8mosi_pin: GPIO10miso_pin: GPIO9# I2C configuration for BME680 sensor
i2c:sda: GPIO6scl: GPIO7scan: Trueid: bus_afrequency: 1MHz# Sensor configuration for SGP4X
sensor:- platform: sgp4xvoc:id: sgp41_vocname: "VOC Index"nox:id: sgp41_noxname: "NOx Index"
第 3 步。帶補償的示例 補償(可選):包含用于補償的傳感器的塊。如果未設置,將使用默認值。 我們將使用溫度和濕度傳感器 (BME680) 補償智能空氣質量傳感器 (SGP41)。 以下是更新后的 xiao-esp32S3.yaml 文件:
# Configuration for ESPHome
esphome:# Name of the ESP32-S3 devicename: esp32s3# PlatformIO build optionsplatformio_options:build_flags: -DBOARD_HAS_PSRAMboard_build.arduino.memory_type: qio_opiboard_build.f_flash: 80000000Lboard_build.flash_mode: qio # Configuration for ESP32
esp32:board: esp32-s3-devkitc-1framework: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 failsap:ssid: "Xiao-Esp32s3 Fallback Hotspot"password: "MoLTqZUvHwWI"# Captive portal configuration
captive_portal:# SPI configuration
spi:clk_pin: GPIO8mosi_pin: GPIO10miso_pin: GPIO9# I2C configuration for BME680 sensor
i2c:sda: GPIO6scl: GPIO7scan: Trueid: bus_afrequency: 1MHz# BME680 sensor configuration
sensor:- platform: bme680temperature:id: bme680_tempname: "BME680 Temperature"oversampling: 16xpressure:name: "BME680 Pressure"humidity:id: bme680_humname: "BME680 Humidity"gas_resistance:name: "BME680 Gas Resistance"address: 0x76# SGP4X sensor configuration- platform: sgp4xvoc:name: "VOC Index"nox:name: "NOx Index"compensation:humidity_source: bme680_humtemperature_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 devicename: esp32s3# PlatformIO build optionsplatformio_options:build_flags: -DBOARD_HAS_PSRAMboard_build.arduino.memory_type: qio_opiboard_build.f_flash: 80000000Lboard_build.flash_mode: qio # Configuration for ESP32
esp32:board: esp32-s3-devkitc-1framework: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 failsap:ssid: "Xiao-Esp32s3 Fallback Hotspot"password: "MoLTqZUvHwWI"# Captive portal configuration
captive_portal:# Configuration for the ESP32 Camera
esp32_camera:id: espcamname: My Cameraexternal_clock:pin: GPIO10frequency: 20MHzi2c_pins:sda: GPIO40scl: GPIO39data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]vsync_pin: GPIO38href_pin: GPIO47pixel_clock_pin: GPIO13resolution: 800x600# Configuration for the ESP32 Camera Web Server
esp32_camera_web_server:- port: 8080mode: stream- port: 8081mode: 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: esp32s3platformio_options:build_flags: -DBOARD_HAS_PSRAMboard_build.arduino.memory_type: qio_opiboard_build.f_flash: 80000000Lboard_build.flash_mode: qio # Configuration for ESP32
esp32:board: esp32-s3-devkitc-1framework: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 failsap:ssid: "Xiao-Esp32s3 Fallback Hotspot"password: "MoLTqZUvHwWI"# Captive portal configuration
captive_portal:# Configuration for the status LED light
light:- platform: status_ledid: light0name: "Voice Assistant State"pin:number: GPIO21inverted: 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_audioid: echo_microphonei2s_din_pin: GPIO41adc_type: externalpdm: true# Configuration for the Voice Assistant
voice_assistant:microphone: echo_microphone# Configuration for the binary sensor (Boot Switch)
binary_sensor: - platform: gpiopin: number: GPIO2mode:input: truepullup: truename: Boot Switchinternal: trueon_press:- voice_assistant.start:- light.turn_off: light0on_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)