【XIAO ESP32S3 sense 通过 ESPHome 与 Home Assistant 连接】

news/2024/7/6 4:43:00 标签: Arduino, Homeassistant, esp32, 树莓派, ESPhome

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. 开始

一旦所有的软件和硬件都真正到位,我们现在可以开始了。

  1. 将 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作为主心骨,接下来就是学习其他外设有机衔接从而完成功能,进而丰富我们的生活。🛹🛹🛹

从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。🤣🤣🤣

  1. 我会持续更新对应专栏博客,非常期待你的三连!!!🎉🎉🎉
  2. 如果鹏鹏有哪里说的不妥,还请大佬多多评论指教!!!👍👍👍
  3. 下面有我的🐧🐧🐧群推广,欢迎志同道合的朋友们加入,期待与你的思维碰撞😘😘😘

✨ 贡献者项目

  1. 该项目由 Seeed Studio Contributor Project 提供支持。
  2. 感谢 Zachary 的努力,您的作品将被展出。
  3. XIAO ESP32S3 sense connecting with Home Assistant via ESPHome(all ports supported)

http://www.niftyadmin.cn/n/5404618.html

相关文章

大唐杯学习笔记:Day3

1.1 SA组网和NSA组网 SA组网(非独立组网)是指使能5G网络不需要其他移动通信系统的辅助,可以独立进行工作。NSA组网(独立组网)是指使能5G网络需要其他移动通信系统的辅助,如果辅助缺失,那么5G网络不可以独立进行工作,通常而言5G网络建设阶段,NSA组网方式是在表明5G网络的使用需…

外包干了6个月,技术退步明显

先说一下自己的情况,本科生,19年通过校招进入广州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

西安-腾讯云-Python面试经验--一面凉经

自我介绍手撕链表排序操作系统 a. 线程和进程区别 b. 线程安全 c. 如何保证线程安全 d. 线程崩溃,会不会影响所在的进程 e. 什么是守护进程,僵尸进程,孤儿进程 f. 如何产生一个守护进程 g. 如何避免僵尸进程或者孤儿进程redis a. 持久化方式有…

【Linux系统化学习】线程概念

目录 线程的概念 线程的引出 什么是线程 理解线程比进程更加的轻量化 线程的优点 现成的缺点 线程异常 线程用途 Linux进程VS线程 线程的简单现象 线程的概念 有关操作系统的书籍或者课本都会这样描述线程: 线程是比进程轻量化的一种执行流线程是进程内部…

服务器数据恢复-异常断电导致服务器硬盘离线的数据恢复案例

服务器数据恢复环境: dell某型号服务器中有一组通过raid卡组建的raid10,该raid阵列中一共有4块磁盘。上层部署XenServer虚拟化平台,作为网站服务器使用。 服务器故障: 服务器异常断电导致服务器上的一台虚拟机不可用。需要恢复这…

酷开科技,让酷开系统成为现代生活的变革者

电视,从问世就一直受到人们的追捧。还记得小时候一家人围坐在电视机前的场景,小小的黑白屏幕,牢牢的吸引着大家的目光。随着科技的不断进步,我们的生活也发生了翻天覆地的变化。而电视,也从笨重的黑白电视变成了轻薄的…

类构造完成,Bean注入之后执行方法

PostConstruct 容器执行之后执行 PreDestory 在容器销毁之前执行

npm install 报错解决方法

npm install 报错是在使用 Node.js 的包管理工具 npm 安装依赖时常见的问题。以下是一些常见的报错和相应的解决方法: 本地 node 和 npm 版本不匹配 使用 node -v 和 npm -v 查看本地 node 和 npm 的版本。如果版本不匹配,可以去 node 官网重新下载安装包…