Icono del sitio Home Assistant Fácil

ESP32 audio altavoz inteligente DIY

esp32 audio altavoces inteligentes diy
Crea un altavoz inteligente con un ESP32, ESPHome y Home Assistant

En este tutorial vamos a utilizar un circuito ESP32 audio para poder crear un altavoz inteligente DIY que nos permita enviar notificaciones desde Home Assistant.

La idea es poder reutilizar esos altavoces viejos que quizás tengas por casa guardados y que ya no utilizas para nada, para darlos una segunda vida. En este tutorial vas a ver cómo hacerlo paso a paso.

Capítulos ESP32 audio y altavoz inteligente DIY

A continuación te dejo los capítulos del vídeo por si quieres ir a tiro hecho.

00:00 Introducción

01:00 Mini curso gratuito de Home Assistant

01:43 Esquema general altavoces inteligentes DIY

02:56 Material y esquema general de conexión ESP32 y DAC 1334

03:58 Código ESPHOme para crear altavoces inteligentes DIY

09:43 Integración altavoz inteligente en Home Assistant

14:30 Automatización poner una radio en altavoz inteligente DIY

18:11 Reproducir archivos mp3 en altavoz inteligente DIY

21:31 Mensaje personalizado de Home Assistant en altavoz inteligente DIY

31:21 Despedida

Idea general del altavoz inteligente DIY

La idea es bastante simple, a partir de unos altavoces que tengan un conector jack vamos a hacer un altavoz inteligente DIY. Esto es gracias a que vamos a utilizar un ESP32 audio con un DAC externo 1334.

El esquema general serial el siguiente.

El ESP32 se conecta al DAC 1334 a través del protocolo I2S, ahora veremos qué es esto. Luego los altavoces se conectan al DAC a través del conector jack. Gracias a que el ESP32 es capaz de conectarse a la WiFi, recibirá los mensajes de Home Assistant que serán reproducidos a través del altavoz.

De esta forma, utilizando ESP32 audio podemos hacer unos altavoces inteligentes DIY.

Pero empecemos por el principio, qué es eso de I2S y cómo conectar el altavoz a un ESP32.

Qué es I2S

I2S, conocido también como Inter-IC Sound, Integrated Interchip Sound es un ,o IIS, es un estándar eléctrico de bus serial usado para interconectar circuitos de audio digital.

Es similar al protocolo SPI pero destinado a comunicar dispositivos de audio y fue introducido por Philips en 1986. Y aunque este protocolo es la leche porque permite conectar múltiples dispositivos utilizando un único bus de comunicación, el lío que montaron con los nombres de las señales también fue la leche.

Cada dispositivo necesita al menos tres señales para funcionar:

Para que el sistema pueda funcionar se necesita al menos un esclavo y un maestro. Este último será el encargado de orquestar todas las comunicaciones entre los diferentes dispositivos conectados al bus gracias a las señales de reloj y en nuestro caso utilizaremos el ESP32.

En cuando al esclavo vamos a utilizar un conversor digital a analógico o DAC (de las siglas en inglés Digital to Analog Converter) que nos permite sacar un señal de audio en esterero.

Veamos los componentes y el esquema del circuito que vamos a utilizar para crear un altavoz inteligente DIY.

Esquema circuito ESP32 audio

El material que vamos a utilizar es el siguiente:

Las conexiones entre los dos componentes son las siguientes.

Salvo los pines de alimentación, el resto de pines los puedes conectar como quieras siempre y cuando luego en el código los modifiques. En mi caso he utilizado los siguientes:

Una vez conectado vamos a ver el código de ESPHome para poder reproducir sonidos a través del altavoz.

ESP32 audio con ESPHome

Para poder reproducir sonidos a través de los altavoces conectados al DAC y al ESP32 audio, es necesario programar la placa. Si bien hay muchas librerías de Arduino que nos permiten hacer esto, en esta ocasión vamos a utilizar ESPHome para poder integrar el altavoz en Home Assistant.

Los componentes de ESPHome que vamos a utilizar son el I2S Audio y el I2S Audio Media Player. Después de lanzar el asistente de ESPHome para crear el código por defecto, el resultado es este.

El siguiente paso es añadir el código de los componentes I2S Audio y I2S Audio Media Player.

Si por lo que sea has utilizado otros pines diferentes, aquí es donde debes modificarlos. Sube el código a la placa porque el siguiente paso es integrar el altavoz en Home Assistant.

Integrar altavoz inteligente DIY en Home Assistant

De momento lo que hemos hecho es programar el ESP32 para que sea capaz de reproducir audio a través del DAC-1334. Pero esto no hace que nuestro altavoz sea inteligente. Lo que realmente va a hacer que sea útil es integrarlo dentro de Home Assistant.

Una vez se conectado el altavoz inteligente DIY a la red WiFi de tu casa a través de las capacidades WiFi del ESP32 audio, aparecerá una notificación de forma automática.

Entra y haz clic en chekit out.

Esto te lleva a la página de integraciones donde verás una nueva integración de ESPHome con el altavoz inteligente DIY. Haz clic en CONFIGURAR.

Te pedirá la clave de cifrado que has puesto en el archivo de configuración de ESPHome.

Una vez validado, aparecerá un nuevo dispositivo en la integración ESPHome. Haz clic sobre él.

Esto abrirá el dispositivo.

El siguiente paso es probar el altavoz inteligente DIY a través de las Herramientas para desarrolladores y Servicios.

Busca el servicio tts y selecciona el que nos permite habar, tts.speak.

Haz clic en el botón + Elige entidad.

En este punto pueden aparecer varios tipos de entidades, elige una de ellas. Este es el servicio que nos va a permitir convertir el texto en voz. Luego veremos cómo configurar un servicio que funciona en local.

Luego selecciona la Entidad de reproductor multimedia donde debe aparecer el altavoz inteligente DIY.

Pon un mensaje y haz clic en LLAMAR SERVICIO.

Si todo ha ido bien escucharás el mensaje por los altavoces. El siguiente paso es configurar el servicio que convierte el texto en voz para que funcione en local y tengamos que utilizar el de Google que depende de la nube.

Para ello vamos a instalar un complemento que se llama Piper. Entra en la Tienda de complementos y haz clic sobre el complemento.

Instala el complemento.

Una vez instalado accede a configuración y cambia el parámetro voice. Elige uno que esté en tu idioma.

Y por último, inicia el complemento y asegúrate de marcar la opción de Vigilancia.

Una vez se haya iniciado accede a las integraciones y verás que ha detectado una nueva que se llama Piper Wyoming Protocol.

Configura la integración.

Y aparecerá en integraciones instaladas.

Si configuras de nuevo el servicio tts.speak verás que aparece un nuevo servicio texto a voz que en este caso es local.

A partir de aquí podemos hacer muchas cosas gracias al altavoz inteligente DIY basado en el ESP32 audio. 3 de esas cosas son las que vamos a ver a continuación.

Reproducir una radio en un ESP32 audio

El primer caso es reproducir una radio en los altavoces inteligentes DIY basados en el ESP32. Esto es bastante sencillo si utilizamos la integración Radio Browser de Home Assistant. La forma más sencilla y práctica de utilizarlo es a través de una automatización.

Entra en automatizaciones de Home Assistant y crea una automatización nueva. Da lo mismo el disparador que utilices, lo que nos interesa ahora es añadir una nueva acción del tipo llamar a servicio.

Luego haz clic en los tres puntos verticales y selecciona Editar YAML.

Tienes que copiar tal cual el siguiente código YAML. Lo único que tienes que cambiar es el entity_id y poner el ID de tu altavoz. Sustituye [PON-ID-TU-ALTAVOZ].

Copia el código en la automatización.

Una vez copiado haz clic de nuevo en los tres puntos verticales y selecciona la opción Editar en el editor visual.

Aparecerá un formulario donde vas a poder elegir la radio que te de la gana. Solo tienes que hacer clic en el icono.

Esto abrirá un menú donde podrás elegir una radio entre los cientos de radios de todo el mundo que hay.

Veamos el siguiente caso que es reproducir un archivo mp3.

Reproducir un mp3 en un ESP32 audio

Para reproducir un mp3 lo primero es subirlo al servidor y eso se hace entrando en la opción de Medios y luego en My media.

Una vez allí haz clic en ADMINISTRAR.

Esto abrirá una ventana donde vamos a poder añadir un archivo mp3 haciendo clic en AÑADIR MEDIOS.

Selecciona un archivo mp3 y lo subes.

Luego cierra la ventana.

Selecciona el altavoz inteligente DIY para reproducir el sonido.

Y dale al play. Gracias a que el ESP32 audio está conectado a los altavoces reproducirá el sonido de la alarma.

Ahora vamos a ir a servicios y vamos a seleccionar el servicio media_player.play_media. El siguiente paso es seleccionar el objetivo haciendo clic en el botón + Elige entidad.

Selecciona el altavoz inteligente DIY basado en el ESP32 audio.

Tienes que configurar el tipo y el ID de contenido. Como Tipo de contenido pon audio/mp3 y como ID de contenido pon /media/local/alarm.mp3. Luego haz clic en LLAMAR SERVICIO.

Esto reproducirá el archivo mp3 por el altavoz inteligente DIY. El último caso es enviar un mensaje personalizado.

Mensaje personalizado de Home Assistant en un ESP32 audio

Para enviar un mensaje personalizado vamos a utilizar el servicio tts.speak. Selecciona el objetivo haciendo clic en + Elige entidad.

Selecciona el servicio de Piper.

Luego selecciona el altavoz inteligente DIY en Entidad de reproductor multimedia.

Para continuar la configuración haz clic en IR AL MODO YAML.

Aquí vamos a copiar el siguiente mensaje donde vas a tener que cambiar algunas cosas:

Una vez hayas hecho las modificaciones pertinentes copia el mensaje en el servicio y haz clic en el botón LLAMAR SERVICIO y reproducirá el mensaje personalizado por los altavoces inteligentes DIY.

Y con esto damos por finalizada este tutorial donde hemos visto cómo hacer unos altavoces inteligentes DIY utilizando un ESP32 audio, ESPHome y Home Assistant.

Cualquier duda o sugerencia en los comentarios.

Lecturas complementarias

Salir de la versión móvil