Reproducir politonos con ESPHome

Reproducir politonos con ESPHome

En esta entrada vamos a aprender a reproducir politonos con ESPHome para dar un toque práctico y simpático a nuestros dispositivos.

¿Qué es un politono y para qué sirve?

Seguramente la mayoría de nosotros recordamos que con los primeros teléfonos móviles podíamos personalizar el tono de llamada. Si bien era habitual poder comprarlos enviando un ‘SMS’, algunos teléfonos como el mítico Nokia 3310 nos permitían componer nuestras propias melodías. Si nunca has escuchado un «politono» (bendita juventud), sería el equivalente a una imagen estilo «pixel», pero aplicado a un audio. Técnicamente a este formato de audio se le llama RTTTL («Ring Tone Text Transfer Language»).

Puede que estés pensando que esto es un paso atrás y, aunque cronológicamente lo es, reproducir politonos con ESPHome tiene sus ventajas:

  • Permite reproducir avisos auditivos a través de tonos o melodías, añadiendo una función más a nuestros dispositivos y dándoles un toque «retro».
  • Es una forma de mejorar la accesibilidad de nuestros dispositivos, cuando no podemos o queremos ver la pantalla.
  • Al tratarse de audios muy simples, pueden reproducirse incluso con un DAC poco potente.
  • Dadas las pocas especificaciones técnicas necesarias, es un componente muy barato para añadir a tus proyectos.

Requisitos previos

Para reproducir politonos con ESPHome previamente necesitas:

  • Haber instalado ESPHome en Home Assistant.
  • Una placa ESP32 o ESP8266 ‘flasheada’ con ESPHome.
  • Un ‘buzzer’ o zumbador.
  • Un cable USB para alimentar la placa de DATOS (con un cable de carga no vas a poder instalar el software).

-66%
Placa de desarrollo ESP32, módulo inalámbrico WiFi, Bluetooth, consumo de energía ultrabajo, doble núcleo, 30 Pines, ESP32-WROOM-32S, 32D, ESP 32
Aliexpress
4,59€ 13,90€
Placa de desarrollo ESP32, módulo inalámbrico WiFi, Bluetooth, consumo de energía ultrabajo, doble núcleo, 30 Pines, ESP32-WROOM-32S, 32D, ESP 32
-68%
Mini Placa de desarrollo WIFI ESP8266 D1, 20 piezas, CH340G, CH340, V2, Usb, Wemos, D1, Mini Nodemcu, Lua, Iot, 3,3 V, Met Pins, 1-ESP-12F
Aliexpress
3,73€ 11,66€
Mini Placa de desarrollo WIFI ESP8266 D1, 20 piezas, CH340G, CH340, V2, Usb, Wemos, D1, Mini Nodemcu, Lua, Iot, 3,3 V, Met Pins, 1-ESP-12F
-34%
TZT Módulo de zumbador pasivo para arduino, Kit de bricolaje, alta calidad
Aliexpress
1,57€ 2,41€
TZT Módulo de zumbador pasivo para arduino, Kit de bricolaje, alta calidad
Keyes módulo de zumbador de altavoz pasivo para Arduino, funciona con placas Arduino oficiales
Aliexpress
1,80€
Keyes módulo de zumbador de altavoz pasivo para Arduino, funciona con placas Arduino oficiales
*Algún precio puede haber cambiado desde la última revisión

Cableado del zumbador

Puesto que partimos de la base de que ya has instalado el firmware de ESPHome en tu placa ESP (sino es así, aquí te explico cómo hacerlo), el primer paso que vamos a realizar es el cableado del zumbador con la placa. Como siempre, te recomiendo que empieces por consultar el ‘pinout’ específico de tu placa. En mi caso voy a utilizar una placa ESP32 wroom-32d (si, las mismas que utilizo con ESPresense) y este es su ‘pinout’.

pinout

Por otro lado tenemos el zumbador, que tendrá un aspecto similar a este.

buzzer

Como puedes observar, es un componente muy sencillo y fácil de cablear. El esquema de conexiones es el siguiente:

  • El pin GND es el de la conexión de tierra o ‘ground’, e irá conectado a uno de los respectivos pines (GND) de la placa.
  • El pin VCC es el de alimentación a 3.3 voltios, por lo que irá al pin correspondiente (3.3V)
  • El pin restante (IO) va a controlar el sonido y puede ir conectado a cualquier pin entre el GPIO0 – GPIO16 si utilizas una placa ESP8266, o GPIO0 – GPIO33 en una placa ESP32.
💪 Generalmente no vas a necesitar soldar este componente, ya que se vende con las patillas soldadas. No obstante, siempre es una buena opción si quieres conexiones de mejor calidad (no dejes que te intimide! en esta entrada te explico cómo aprender a soldar). Básicamente necesitas un soldador y un poco de estaño.

Configuración de ESPHome

Ahora tenemos que ‘flashear’ la placa con ESPHome y la configuración correspondiente, que vamos a extraer directamente de la documentación ESPHome sobre el componente Rtttl buzzer. Para ello sigue estos pasos:

  1. Conecta la placa a tu ordenador a través del puerto USB.
  2. En Home Assistant, accede al complemento de ESPHome desde el menú lateral y pulsa en “New device”. Pulsa en “Continue” y dale un nombre (por ejemplo, “Zumbador”).
  3. Pulsa en “Next” y a continuación selecciona la opción correspondiente a tu placa como tipo de dispositivo. Verás que en el fondo se ha creado un nuevo dispositivo.
  4. Pulsa en “Skip” y haz clic en el enlace “Edit” del bloque correspondiente al dispositivo que acabas de crear.
  5. Añade las siguientes líneas al final del código y realiza las siguientes modificaciones:
    • En el apartado ‘platform‘, deberás indicar ‘ledc‘ si estás utilizando una placa ESP32 o ‘esp8266_pwm‘ si estás utilizando una placa ESP8266.
    • En el apartado ‘pin’ indica el que has utilizado para conectar el pin ‘IO’ del zumbador.
    • En el apartado ‘gain’ puedes ajustar el volumen del zumbador.
captive_portal:
output:
  - platform: ledc
    pin: GPIO26
    id: rtttl_out

rtttl:
  output: rtttl_out
  id: my_rtttl
  gain: 60%
  1. Cuando hayas terminado de editar el código pulsa en “Save” e “Install”. Selecciona la opción “Manual download” y espera a que el código se compile.
  2. Cuando termine, selecciona la opción “Modern format” para descargar el fichero ‘.bin’ correspondiente.
  3. Ahora ve a la página de ESPHome y pulsa en “Connect”. En la ventana emergente selecciona tu placa y pulsa en “Conectar”.
  4. Ahora pulsa en “Install” y selecciona el fichero ‘.bin’ obtenido en el paso 7. De nuevo, pulsa en “Install”.
  5. Vuelve a Home Assistant y ve a Ajustes > Dispositivos y servicios. Lo normal es que tu dispositivo haya sido descubierto y aparezca en la parte superior, esperando únicamente a que pulses el botón de “Configurar”. De lo contrario pulsa en el botón de “Añadir integración”, busca “ESPHome” e introduce la IP de tu placa en el campo ‘Host’.

Reproducir politonos desde Home Assistant

Una vez cableado el componente y configurado en HA, voy a enseñarte a reproducir politonos con ESPHome. Para ello sigue estos pasos:

  1. Vuelve al complemento de ESPHome y pulsa sobre el enlace «Edit» de tu placa.
  2. Localiza la línea donde indica ‘api’ (es una de las primeras), e introduce el siguiente código. Esto va a exponer un servicio en Home Assistant, que nos va a permitir enviar la «melodía» que queremos reproducir.
api:
  services:
    - service: play_rtttl
      variables:
        song_str: string
      then:
        - rtttl.play:
            rtttl: !lambda 'return song_str;'
  1. Una vez modificado el código pulsa en «Save» e «Install» para volver a ‘flashear’ la placa con el código correspondiente (recuerda que ya puedes usar la opción «Wiressly» para actualizar por WiFi).
  2. Ahora ve a Herramientas para desarrolladores > Servicios y busca el servicio ‘esphome.DISPOSITIVO_rtttl_play’.
  3. Verás que te aparecere un campo ‘song_str’. En este puedes introducir las notas de la melodía que quieras reproducir. Por ejemplo, si introduces el siguiente código y pulsas en «Llamar servicio» escucharás la melodía de «Star Wars». En la documentación de ESPHome encontrarás otros ejemplos.
star_wars:d=16,o=5,b=100:4e,4e,4e,8c,p,g,4e,8c,p,g,4e,4p,4b,4b,4b,8c6,p,g,4d#,8c,p,g,4e,8p

Puesto que el formato RTTTL fue muy popular, vas a poder encontrar gran cantidad de melodías para reproducir politonos con ESPHome. Por ejemplo, puedes buscar en Google «RTTTL songs» + temática (por ejemplo, «arcade«) o puedes revisar bases de datos con melodías en busca de alguna que te interese.

Agradecimientos

Para elaborar esta entrada hemos seguido este video de nuestro amigo Miguel Ángel de La Choza Digital, canal que te recomiendo totalmente! 😎


¿Dudas?¿necesitas ayuda? entra aquí
Y si te ha gustado, compártelo! 🙂
Contenido exclusivo de Aguacatec
Send this to a friend