Skip to main content

Conexión de XIAO ESP32S3 Sense con Home Assistant a través de ESPHome (todos los puertos compatibles)

Esta guía paso a paso mostrará cómo conectar el Seeed Studio XIAO ESP32S3 con ESPHome ejecutándose en Home Assistant y enviar los datos de los sensores/controlar dispositivos después de conectar los módulos Grove al XIAO ESP32S3. ¡Comencemos!

¿Qué son ESPHome y Home Assistant?


ESPHome es una herramienta que tiene como objetivo hacer que la gestión de tus placas ESP sea lo más sencilla posible. Lee un archivo de configuración YAML y crea un firmware personalizado que instala en tu dispositivo ESP. Los dispositivos o sensores añadidos en la configuración de ESPHome aparecerán automáticamente en la interfaz de usuario de Home Assistant. ESPHome puede ayudarte a conectar y enviar los datos a los dispositivos de Home Assistant.

Preparación del Hardware

Si deseas seguir este tutorial en su totalidad, necesitarás preparar lo siguiente.

Seeed Studio XIAO ESP32S3 SenseSeeed Studio Expansion BoardDispositivos Home Assistant

Sensores Utilizados

Preparación del Software

Instalar Home Assistant

Asegúrate de que Home Assistant esté instalado y funcionando. Puedes seguir esta guía para una instalación paso a paso de Home Assistant en una placa ODYSSEY-X86 SBC o este enlace para una instrucción detallada sobre cómo usar Home Assistant con un Seeed Mini Router.

Instalar ESPHome en Home Assistant

ESPHome está disponible como un Complemento de Home Assistant y se puede instalar fácilmente a través de la tienda de complementos.

  • Paso 1. Haz Click en INSTALL
  • Paso 2. Habilita todas las opciones y haga click en START

Verás la siguiente ventana si ESPHome se ha cargado correctamente.

Empezando

Una vez que todo el software y hardware estén listos, podemos comenzar.

1. Añadir Seeed Studio XIAO ESP32S3 (Sense) a ESPHome

  • Paso 1. Haz clic en + NEW DEVICE.
  • Paso 2. Click en CONTINUE
  • Paso 3. Ingresa un Nombre para el dispositivo e introduce las credenciales de WiFi, como el Nombre de la red y la Contraseña. Luego haz clic en NEXT.
  • Paso 4. Selecciona ESP32-S3 y haz click
  • Paso 5. Click SKIP Porque configuraremos esta tarjeta manualmente
  • Paso 6. Click EDIT bajo el dispositivo recién creado
  • Paso 7. Esto abrirá un archivo YAML, el cual se utilizará para configurar toda la placa. Edita el contenido bajo esp32 de la siguiente manera:
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"

Note: Here we are using the latest version of Arduino core for ESP32 and ESP32 support for PlatformIO

  • Paso 8. Haz clic en SAVE y luego haz clic en INSTALL.
  • Paso 9. Conecta un extremo de un cable USB Type-C al Seeed Studio XIAO ESP32S3 y el otro extremo a uno de los puertos USB del reRouter CM4 1432.
  • Paso 10. Click Plug into the computer running ESPHome Dashboard
  • Paso 11. Selecciona el puerto conectado. Es probable que sea /dev/ttyACM1 porque /dev/ttyACM0 está conectado al reRouter CM4 1432.

tip

Mejor usar Wi-Fi 2.4GHz

Ahora se descargarán todos los paquetes necesarios para la placa y se flasheará el firmware de ESPHome en el XIAO ESP32S3. Si el flasheo es exitoso, verás la siguiente salida. Si ves algún error, intenta reiniciar tu XIAO ESP32S3 o entra en modo de arranque manteniendo presionado el BOTÓN BOOT y conecta el XIAO ESP32S3.

  • Paso 12. La ventana anterior muestra los registros en tiempo real de la placa conectada. Ciérrala haciendo clic en STOP.
  • Paso 13. Si ves el estado de la placa como ONLINE, significa que la placa está conectada correctamente a WiFi.
tip

Ahora puedes desconectar el XIAO ESP32S3 del reRouter CM4 1432 y alimentarlo solo a través de un cable USB. Esto se debe a que a partir de ahora, si deseas flashear el firmware en el XIAO ESP32S3, podrás hacerlo simplemente de forma OTA sin necesidad de conectarlo a la placa X86 mediante un cable USB.

    1. Haz clic en los tres puntos y selecciona Install.
    1. Selecciona Wirelessly y se enviarán los cambios a la placa de manera inalámbrica.
  • Paso 14. Ve a Settings y selecciona Devices & Services
  • Paso 15. Verás ESPHome como una integración descubierta. Haz click en CONFIGURE.
  • Paso 16. Click SUBMIT
  • Paso 17. Click FINISH

2. Conectar Módulos Grove con ESPHome y Home Assistant

Ahora conectaremos los módulos Grove al Seeed Studio XIAO ESP32S3 (sense) para poder mostrar los datos de los sensores o controlar los dispositivos usando Home Assistant.

Conocimientos para el Desarrollo

Placa de Expansión XIAO

Para utilizar los módulos Grove con Seeed Studio XIAO ESP32S3, utilizaremos una Placa de Expansión Seeed Studio para XIAO y conectaremos el XIAO ESP32S3 en ella.

Después de eso, los conectores Grove en la placa se pueden usar para conectar los módulos Grove.

Definiciones de Pines

Necesitas seguir el gráfico a continuación para usar los números de pines internos apropiados al conectar los módulos Grove a los conectores Grove en la placa de expansión Grove Shield para XIAO.


Por ejemplo, si deseas conectar un módulo Grove al puerto D0, debes definir el pin en ESPHome como GPIO1. Puedes encontrar más detalles haciendo clic aquí.

Lista de Compatibilidad de Grove con ESPHome

Actualmente, los siguientes módulos Grove son compatibles con ESPHome:

Consulta aquí

Ahora seleccionaremos 6 módulos Grove de la tabla anterior y explicaremos cómo se pueden conectar con ESPHome y Home Assistant.

3. Conexión Grove y Transmisión de Datos

Ahora seleccionaremos varios módulos Grove y explicaremos cómo se pueden conectar con ESPHome y Home Assistant.

Grove - Sensor de Temperatura y Humedad (BME680)

Configuración del Setup
  • Paso 1. Conecta el Grove - Sensor de Temperatura, Humedad, Presión y Gas (BME680) a uno de los conectores I2C de la Placa de Expansión Seeed Studio para XIAO.

  • Paso 2. Dentro del archivo xiao-esp32s3-bme680.yaml que creamos anteriormente, realiza los cambios en el archivo y envíalo OTA al 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

Puedes aprender más sobre el componente BME680 aquí. Este componente permite usar sensores basados en BME280, BME680, BMP085, BMP280, AHT10, AHT20 y AHT21. Aquí añadimos el componente I²C Bus porque el AHT20 se comunica usando el protocolo I2C.

Visualizar en el Panel de Control
  • Paso 1. En la página de vista general de Home Assistant, haz clic en los 3 puntos y selecciona Edit Dashboard
  • Paso 2. Click + ADD CARD
  • Paso 3. Selecciona By ENTITY, escribe temperature y marca la casilla junto a Temperature.
  • Paso 4. Repite lo mismo para Humidity, Gas Resistance y Pressure.

  • Paso 5. Haz clic en CONTINUE.

  • Paso 6. Haz clic en ADD TO DASHBOARD.

Ahora tu panel de control de Home Assistant debería verse como a continuación.

  • Paso 7. También puedes visualizar los datos del sensor como medidores. Haz clic en Gauge bajo BY CARD.
  • Paso 8. Selecciona Temperature del menú desplegable.
  • Paso 9. Haz clic en GUARDAR.

  • Paso 10. Repite lo mismo para Humidity, Gas Resistance y Pressure.

Ahora tu panel de control debería verse como a continuación.


Grove - Sensor de Calidad del Aire Inteligente (SGP41)

  • Paso 2. Dentro del archivo xiao-esp32S3.yaml que creamos antes, modifica el archivo y luego envíalo de manera OTA a 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"
  • Paso 3. Ejemplo con compensación
    compensation (Opcional): El bloque que contiene los sensores usados para la compensación. Si no se configura, se utilizarán los valores predeterminados.
    Usaremos el Sensor de Temperatura y Humedad (BME680) para compensar el Sensor de Calidad del Aire Inteligente (SGP41).
    Aquí está el archivo actualizado 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

Nota: Este sensor costará 90 círculos para recopilar suficientes muestras de datos y la advertencia no puede ser evitada por el momento.

Visualizar el Dashboard

La misma que antes.


Cámara OV2640 (XIAO ESP32S3 Sense)

Configuración de Instalación
  • Paso 1: Conecte la placa externa de la cámara OV2640 a la XIAO ESP32S3 Sense.

  • Paso 2: Dentro del archivo xiao-esp32s3-camera.yaml que creamos anteriormente, modifique el archivo y envíelo por OTA a la 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

Nota: Para más información, lee esto.

Visualizar en el Panel de Control
  • Paso 1: En la página de resumen de Home Assistant, haga clic en los 3 puntos y seleccione Editar Panel de Control.
  • Paso 2. Click + ADD CARD
  • Paso 3. Selecciona By ENTITY, escribe Camera y selecciona My Camera

  • Paso 4. Click Add to Dashboard

  • Paso 5: Al ver la transmisión web en el panel de control, se encuentra en modo inactivo, actualizándose solo unos pocos fotogramas por minuto. Transita a modo activo cuando hacemos clic en la tarjeta, con una tasa de actualización que normalmente varía entre uno y diez fotogramas por segundo. En este tutorial, la tasa de actualización es aproximadamente de cuatro fotogramas por segundo.

Micrófono PDM para Asistente de Voz (Voice Assistant)

Configuración Inicial
  • Paso 1: Dentro del archivo xiao-esp32s3-microphone.yaml que creamos antes, modifica el archivo y súbelo OTA a 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

Nota: Para más información, lee esto

Visualizar en el Dashboard
  • Paso 1: En la página de Overview de Home Assistant, haz clic en los tres puntos y selecciona Edit Dashboard.
  • Paso 2. Click + ADD CARD
  • Paso 3: Selecciona By ENTITY, luego selecciona Esp32S3 Assist in progress, Esp32S3 Assist in progress, Esp32S3 Finished speaking detection, Status y voice assistant state.
  • Paso 4. Click Add to Dashboard

  • Paso 5. Cuando presionas el Botón (D1) en la Seeed Studio Expansion Base para XIAO, el LED definido por el usuario (GPIO2) se encenderá en el ESP32S3 y podrás interactuar con ESPHome a través del asistente de voz.

Nota: Para más información, por favor lee

Matriz RGB 6x10 para XIAO

Configuración Inicial
  • Paso 1. Primero necesitas conectar la matriz RGB 6x10 al XIAO, consulta esta Wiki para más detalles.

  • Paso 2. Copia la información .yaml de abajo y cárgala de manera OTA al 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

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password

# Enable fallback hotspot (captive portal) in case wifi connection fails
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"

Visualizar en el Panel de Control
  • Paso 1. Abre la ruta Ajustes - Dispositivos y servicios - ESPHome - sixtyled (el nombre que configuraste) para agregar la tarjeta al panel de control.
  • Paso 2. En la página de Vista General de Home Assistant, haz clic en los 3 puntos y selecciona Editar Panel de Control.
  • Paso 3. Click + ADD CARD
  • Paso 4. Selecciona By ENTIDAD, escribe xiao y marca la casilla junto a sixtyled XIAO LEDS.
  • Paso 5. Click CONTINUE y luego Add to Dashboard
  • Paso 6. Posteriormente, podrás encontrar una tarjeta en la sección "Overview" donde podrás controlar la matriz RGB 6x10 para XIAO. Aquí podrás alternar su estado de encendido/apagado y personalizar su color y brillo.

✨ Proyecto de Colaboradores

Soporte Técnico y Discusión de Producto

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte soporte en diversas formas para garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.

Loading Comments...