Utilizar un zumbador (buzzer) con ESPEasy

En ocasiones necesitamos que nuestro proyecto basado en ESPEasy genere avisos sonoros, para avisos, alarmas, confirmación de determinadas acciones, u otros motivos. En este artículo veremos, paso a paso, como podemos añadir un zumbador a nuestro proyecto con ESPEasy.

En este caso, vamos a hacer el ejemplo con el medidor de CO2 que publiqué hace unos días, pero se puede hacer igual con cualquier otro tipo de proyecto.

Gracias a que ESPEasy permite conectar a nuestro proyecto muchos accesorios diferentes sin tener que programar ni complicarnos la vida con modificaciones o adaptaciones de firmware, añadir un zumbador, o buzzer, es algo trivial.

Conexión del módulo zumbador

En este caso, vamos a utilizar un módulo zumbador, de los que vienen en una plaquita con su transistor y su resistencia.

La conexión del módulo es extremadamente fácil, solo necesitaremos hacer tres conexiones:

  • Cable de positivo, del pin Vin del NodeMCU al pin marcado como positivo en el módulo zumbador (marcado, normalmente, VCC).
  • Cable de negativo, del pin GND del NodeMCU al pin marcado como positivo en el módulo zumbador.
  • Cable de datos, de un pin de Entrada/Salida del NodeMCU al pin de entrada de señal del zumbador (normalmente marcado como I/O).

En este ejemplo vamos a utilizar la salida D6 del NodeMCU, aunque podríamos utilizar otra.

Uso y control del zumbador con ESPEasy

Lo primero que tenemos que saber, es que para utilizar un buzzer con ESPEasy no necesitamos crear un dispositivo. El control se realiza directamente mediante los comandos que tiene disponibles ESPEasy:

ProtocoloSintaxisInformación adicional
HTTPhttp://<espeasyip>/control?cmd= <command>Envía comandos mediante protocolo HTTP.
MQTT<MQTT subscribe template>/cmd con payload: <command>Envía comandos mediante protocolo MQTT.
Serial (TTL)<command>Envía comandos utilizando el puerto serie (RX/TX). Simplemente, teclea el <command>
UDPSendTo,<unit nr>, <command>Envía comandos de una unidad ESP Easy a otra. Configura el servidor UDP entre iguales del controlador ESP Easy primero.
Rules<command>Internamente dentro del ESP Easy. Simplemente, escribe el  <command> en un bloque de evento o bloque condicional.
Protocolos de envío de comandos soportados por ESP Easy

Tenemos dos posibilidades, a la hora de enviar comandos a ESPEasy para hacer sonar nuestro zumbador. El comando tone y el comando rtttl.

Reproducir un sonido

http://<ESP IP address>/control?cmd=tone,14,1300,200

Reproduce un tono de 1300 Hz durante 200 ms en el pin GPIO-14.

Command (GPIO/Valor)Información adicional
tone,<gpio>,<tono>,<duración>

GPIO: 12 … 16

Tone: 20 … 13000 Hz

Duration: 100 … 15000 msec
Procura utilizar GPIO 12…16 ya que estos no suelen ser utilizados por las funciones internas del ESO. El rango de tonos recomendado es de 20 Hz … 13 kHz. Es posible generar tonos de hasta 40 kHz pero son inaudibles para los humanos. Las frecuencias por encima de 30 kHz no son estables y pueden bloquear el ESP.
La duración está dada en milisegundos.
Nota: los tonos con una duración de menos de 50 msec bloquean temporalmente el ESP. Las de mayor duración se crean mediante temporizador, lo que puede provocar cambios en la duración.
rtttl,<gpio>,<valor>
GPIO: 12 … 16
Value: d=<duration>,o=<octave>,b=<tempo>,<notes…>
Procura utilizar GPIO 12…16 ya que estos no suelen ser utilizados por las funciones internas del ESO.
N.B. los tonos bloquean temporalmente el ESP mientras suenan.
Valor puede definirse como <nombre_de_la_melodia:duración,octava,tempo,notas….>
Por ejemplo: rtttl,14,test:d=8,o=5,b=180,c6,b,c6,p,g,g-
Más Descargas de Tonos RTTTL

Reproducir una melodía

http://<ESP IP address>/control?cmd=rtttl,14:d=4,o=5,b=112:8a,8a,a,8a,8a,a,8a,8c6,8f.,16g,2a,8a-,8a-,8a-.,16a-,8a-,8a,8a.,16a,8a,8g,8g,8a,g,c6

Esto reproduce una melodía mediante RTTTL en el pin GPIO-14.

RTTTL es una notación musical ideada para crear los tonos de llamada (ringtones) de los antiguos teléfonos móviles. Existen librerías de RTTTL por lo que no nos será difícil encontrar nuestra música preferida o, si tenemos nociones musicales, crearla.

El RTTTL (Lenguaje de Transferencia de Tonos de Timbre [Texto]) fue desarrollado por Nokia para reproducir melodías más “fáciles de escuchar” como tonos de timbre para los teléfonos móviles. Las melodías de todas las características se crean utilizando tres comandos diferentes:

d – duración
o – octava
b – tempo (ritmo)

Después de eso, se crea la afinación real utilizando notas estándar (a, b, c, d, e, f y g), antes de la nota se fija la duración, después de la nota se fija la octava:

<duration><note><octave>

Para componer una melodía se separan las notas con una coma.

Ejemplos de uso del zumbador con ESPEasy

A continuación, vemos algunos ejemplos de uso sencillos del zumbador con los diferentes protocolos.

El comando que tenemos que enviar es similar en todos los casos:

Para reproducir una nota: tone,14,1300,200

Para reproducir una melodía: rtttl,14:d=4,o=5,b=112:8a,8a,a,8a,8a,a,8a,8c6,8f.,16g,2a,8a-,8a-,8a-.,16a-,8a-,8a,8a.,16a,8a,8g,8g,8a,g,c6

Uso del zumbador mediante HTTP

http://<ESP IP address>/control?cmd=tone,14,1300,200
http://<ESP IP address>/control?cmd=rtttl,14:d=4,o=5,b=112:8a,8a,a,8a,8a,a,8a,8c6,8f.,16g,2a,8a-,8a-,8a-.,16a-,8a-,8a,8a.,16a,8a,8g,8g,8a,g,c6

Uso del zumbador mediante MQTT

Uso del zumbador mediante reglas (Rules de ESPEasy)

Para reproducir una melodía en el arranque de ESPEasy:

On System#Boot do
  rtttl,14:d=10,o=6,b=180,c,e,g
endon

Integración con el medidor de CO2

Vamos a aprovechar lo que hemos aprendido para crear un sistema de avisos, o alarmas, para nuestro medidor de CO2.

Mediante reglas, el medidor reproducirá un sonido de aviso y/o alarma al alcanzar determinadas concentraciones de CO2.

Para ello vamos a hacer uso de las reglas de ESPEasy.

Activar el motor de reglas de ESPEasy

Lo primero que debemos hacer, es activar el motor de reglas de ESPEasy, ya que, por defecto, cuando lo instalamos, estará desactivado.

Para ello, vamos a la pestaña “Tools” (Herramientas) y pulsamos el botón “Advanced” (Avanzado):

Se abrirá la ventana con las opciones de configuración avanzadas de ESPEasy.

Allí debemos activar las opciones “Rules” (Reglas) y “Old Engine” (Viejo Motor):

Escribir nuestras reglas

Por último, tenemos que escribir nuestras reglas, en la pestaña “Rules” (Reglas). Esta pestaña no aparecerá hasta que no habilitemos el motor de reglas, como hemos visto en el punto anterior:

En el editor de reglas que aparece en ESPEasy, escribiremos las siguientes reglas (recomiendo copiar y pegar, para evitar errores y dejar los comentarios – líneas que empiezan por // – que ESPEasy ignorará).

Deberás sustituir CO2#PPM por el nombre de dispositivo y valor que hayas elegido (en la pestaña “Devices” – Dispositivos):

// Establecemos un tiempo mínimo para que se repita la alarma y que, de esta forma,
// no esté continuamente sonando si se supera el valor de concentración de CO2
// Creamos un temporizador que se ejecute cada segundo

On System#Boot do
  Let,1,60 // Tiempo mínimo, en segundos, para repetir la alarma
  Let,2,1500 // Concentración de CO2 para activar la alarma
  loopTimerSet,8,1 // Establecemos un temporizador que se ejecute cada segundo
EndOn

// Este temporizador se ejecuta cada segundo
// Decrementa en un segundo el tiempo restante para activar la alarma
// Volverá a establecer un temporizador

On Rules#Timer=8 Do
  Let,1,[var#1]-1
EndOn

// Cada vez que cambia el valor PPM del dispositivo CO2:
// Comprobamos que el valor de CO2 sea superior a la concentración a
// partir de la que queremos que suene la alarma y que haya pasado el
// tiempo mínimo que queremos antes de que suene la alarma.
// Si la concentración PPM es superior y ha pasado el tiempo mínimo:
// Hacemos que suene el zumbador conectado al pin GPIO-12 a 1000 Hz
// durante 60 milisegundos.
// Ajustamos el tiempo mínimo que queremos para que se repita la alarma

on CO2#PPM do
  if [CO2#PPM] > [var#2] and [var#1] < 1
    tone,12,1000,60
    Let,1,60 // Tiempo para volver a repetir alarma
  endif
endon

Comprar el zumbador

Te recomiendo comprar el módulo zumbador pasivo, ya que este te permite reproducir los tonos que quieras (pitidos o melodías). Por ejemplo, este:

HALJIA pasiva bajo Nivel gatillo zumbador Alarma Módulo Compatible con Arduino
  • Zumbador pasivo, necesita frecuencia de oscilación de entrada en los puertos I/O, y el zumbador sonará
  • Módulo con unidad de transistor S8550
  • Voltaje de funcionamiento: 3,3 V ~ 5 V
  • Agujeros fijos para una fácil instalación
  • Descripción de la interfaz del módulo (3 hilos)

Si prefieres comprarlo en AliExpress, más barato, aunque tarde algo más en llegarte, puedes comprar el zumbador en este enlace.

* IMPORTANTE: Si vas a hacer tu primera compra en AliExpress, entra a través de este enlace recibirás 21€ en cupones de descuento para tus compras.

Cuidado no te confundas y compres un módulo zumbador activo, si no es lo que quieres. Con un zumbador activo solamente podrás reproducir el tono que viene de fábrica y no podrás reproducir melodías. No es fácil diferenciarlo a simple vista porque la placa es igual que la de un módulo zumbador pasivo.

Tampoco te confundas y compres un módulo zumbador que no tenga los componentes necesarios (transistor y resistencia, por lo menos).

El NodeMCU no tiene suficiente corriente de salida para él.

Tiene que ser un módulo zumbador pasivo (una placa con componentes, como la del ejemplo de conexión o similar).

Si te ha gustado esta página, compártela.

9 comentarios en «Utilizar un zumbador (buzzer) con ESPEasy»

  1. Muchas gracias, en cuanto tenga un rato me pongo manos a la obra.
    Nada mejor que hacer algo concreto y útil para ir aprendiendo, además también , claro, de investigar por nuestra cuenta , no todo nos lo tienen que dar mascadito , también hace falta un esfuerzo por nuestra parte.
    Saludos.

    Responder
    • Algo hago mal porque el zumbador nuevo no para de pitar.
      Incluso borrando las reglas sigue pitando, la única manera de que se calle ( aparte claro de quitándole la alimentación) , es desconectando el cable D6.
      Creo que es un zumbador pasivo , es decir el correcto, porque solo alimentado no suena, solo lo hace al conectarlo a D6.
      Seguiré probando.
      Saludos.

      Responder
      • Hola Zulú.

        Vamos a ver qué puede estar pasando…

        Lo primero es ver si el buzzer funciona, y cómo. Vamos a utilizar el NodeMCU solo como fuente de alimentación de 5V (si tienes otra fuente de alimentación de 5V CC, puedes usarla).

        Para empezar, haz las siguientes dos pruebas:

        Prueba 1: Con el NodeMCU apagado (cable USB quitado), conecta el Positivo y el Negativo del zumbador a Vin y GND del NodeMCU (la salida de 5V). Conecta el cable de señal del zumbador a GND. Enciende el NodeMCU (conecta el USB) ¿Suena el zumbador? ¿Hace click o pita?

        Prueba 2:Con el NodeMCU apagado (cable USB quitado), conecta el Positivo y el Negativo del zumbador a Vin y GND del NodeMCU (la salida de 5V). Conecta el cable de señal del zumbador a Vin. Enciende el NodeMCU (conecta el USB) ¿Suena el zumbador? ¿Hace click o pita?

        Las dos pruebas son iguales, solo cambia que el cable de control del zumbador esté conectado a positivo (Vin) o GND (negativo). Con este averiguaremos si es un zumbador activado por control positivo o por negativo.

        Saber si solo hace click o pita, nos dirá si es un zumbador pasivo (click) o activo (pita).

        Si en ningún caso suena nada, algo está mal.

        No apliques tensión al zumbador durante más de un par de segundos (especialmente si hace click). Un zumbador pasivo no puede funcionar con corriente continua y se quemará.

        Si te cuesta oír si hace click al poner el USB, puedes conectar y desconectar el cable positivo del zumbador a Vin varias veces. Seguramente te sea más fácil.

        Dependiendo de los resultados de estas pruebas seguimos…

        Responder
        • Hola Mariete, en primer lugar disculpa mi tardanza al contestar pero no he tenido ocasión de contestar hasta ahora.
          El zumbador pita continuo al conectar el cable de señal a GND.

          He visto el manual para añadir una tira de led,s al medidor , me parece una idea genial y fácil de hacer siguiendo tus magnificas explicaciones que no dejan lugar a dudas.
          También tengo pendiente imprimir la caja para todo el invento.
          Muchas gracias por todo.
          Un cordial saludo.

          Responder
          • O sea, que es activo. No vale.
            Tengo de camino unos cuantos zumbadores , espero que sean pasivos , porque aunque los pedí pasivos , a primera vista no se distinguen unos de otros.

          • Podrías utilizar el zumbador, aunque sea activo. Lo que pasa es que únicamente pitará, no podrás hacer tonos.

            También tendrás que tener en cuenta que tu zumbador pita cuando NO recibe tensión en el cable de señal. Tendrás que cambiar “Pin mode GPIO-X” en la pestaña Hardware y ponerlo en “Output High” (esto es para que nada más arrancar saque voltaje por ese pin y así el zumbador no pite, aunque seguramente llegue a hacer algún ruido mientras arranca). Luego tendrás que ajustar las reglas para que desactive la salida de voltaje en ese pin cuando quieras que suene el pitido y vuelva a subir para que suene.

            La verdad es que el tema de los zumbadores es un lío porque la mayoría de los vendedores indican muy mal lo que están vendiendo. Yo los módulos de zumbador me lo hago yo y así me quito de problemas (tengo un video grabado. Un día de estos lo pondré).

            De todas formas, iré completando este artículo con instrucciones de cómo utilizar diferentes tipos de zumbadores (por ejemplo este).

Deja un comentario