Buzzers, zumbadores y otras formas de incordiar a tus allegados
Terminan las fiestas y el descanso y parece que volvemos a la normalidad. Aunque seguramente con la pandemia y la nieve estemos de vuelta de todo y de vuelta de nada.
Tan jóvenes y de vuelta…
Pues para aquellos que hayáis recibido estas Navidades un kit de Arduino seguramente tendréis mucha información en el blog. Pero seguramente echéis en falta uno de los elementos estrella en estos kits: El buzzer o zumbador.
Y es que hacer ruido nos encanta, ya sea para avisarnos de alguna cosa o para molestar al vecino… Así que… Hechas las presentaciones… ¿Podemos empezar ya?
Buzzers activos para qué os quiero
Lo primero que nos puede causar duda es la palabra que sigue a buzzer. ya que en mi kit puede haber un buzzer activo y/o un buzzer pasivo.
Los buzzer activos son dispositivos que genera un sonido de tono constante. Y con constante quiero decir que no cambian su tono y por lo tanto no generan melodías.
Tal vez nos recuerden a alarmas en las que suena un gruñido, hay una pausa, vuelve a sonar ese sonido rozando a desagradable, hay otra pausa. Pero el sonido es siempre el mismo.
Esto se da porque los buzzer activos incluyen en su interior un oscilador, que es el que marca la frecuencia del sonido a emitir. Esto hace que se fije ese valor y que no se pueda cambiar el tono del sonido.
Programando tonos constantes y molestos
Los buzzer activos disponen de 3 pines o cables:
- Vcc: Voltaje necesario para su funcionamiento. En el caso de zumbadores para Arduino será de 5V.
- GND: Se conecta con el GND de Arduino.
- I/O: Se trata de un Enable. A través de un pin digital de Arduino enviamos un HIGH para activar el sonido o un LOW para desactivarlo.
En cuanto a la programación, imaginarás que es sencilla:
void setup(){ pinMode(12,OUTPUT); } void loop(){ digitalWrite(12,HIGH); delay(1000); digitalWrite(12,LOW); delay(1000); }
Lo que he hecho en ese código es marcar el pin digital 12 como salida y encender y apagar intermitentemente por 1 segundo el buzzer. Pero está claro que se podrían hacer cosas más interesantes como esperar a que una temperatura excediese de un valor para activar ese sonido o cosas similares como las que hacéis los makers.
Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
Buzzers pasivos, canten para mi
Por otra parte, se encuentran los buzzer pasivos. Estos buzzer son igual que los anteriores pero no tienen oscilador en su interior por lo que la señal debe venir generada por alguien externo, es por eso que se les llama pasivos, porque el tono del sonido lo crea un agente externo.
La pasividad de estos zumbadores nos obliga a crear nosotros los tonos, lo que da la posibilidad de crear melodías.
Ensalzando los oídos de tus convivientes y allegados
Para su uso podemos encontrar dos cables:
- Cable rojo: En el que conectaremos un pin digital con PWM, como podría ser el pin digital 9.
- Cable negro: Se trata de GND.
En otros buzzer activos de más potencia se puede encontrar tres pines o cables:
- Vcc: La alimentación, que serían los 5V de Arduino.
- GND: El GND de Arduino
- SIG: La señal que genera el tono y que deberá estar conectada a un pin digital con PWM como el pin digital 9.
La razón de que hayan tres pines es que la alimentación está separada de la señal. En el caso anterior la señal y la alimentación iban por el mismo camino ya que necesitaba una corriente (potencia) menor.
En cuanto a lo de utilizar pines PWM es porque son los únicos que pueden modular el pulso para generar frecuencias distintas. Un ejemplo de código que se podría utilizar podría ser:
void setup(){ } void loop(){ tone(9, 500); delay(1000); noTone(9); delay(1000); }
Como ves, el ejemplo es igual que el anterior pero utiliza la función tone y noTone. Lo que hacen estas funciones es generar una frecuencia determinada (En mi caso 500Hz) a través de un pin digital (En mi caso el pin 9).
El poder elegir la frecuencia adecuada nos permite hacer magia, sino que se lo digan a los compañeros de Prometec, quién nos dejan este archivo de Arduino capaz de hacer sonar la música de Star Wars.
Otra manera de utilizar la función tone es la siguiente:
tone(pindigital,frecuencia,tiempo);
Aquí lo que pasa es que el sonido ya no es continuo como antes sino que le damos un tiempo determinado, esto nos ahorra tener que utilizar la función noTone. El código anterior quedaría así:
void setup(){ } void loop(){ tone(9, 500,1000); delay(1000); }
De manera que haríamos un tono de 500Hz durante un segundo y luego esperaríamos otro segundo en silencio.
Bobinas y campos magnéticos en los zumbadores…
Pero Rufián, ¿Cómo funcionan estos zumbadores por dentro?
Mecánicamente estos buzzer constan de un electroimán y una lámina metálica. Al obtener corriente, esta pasa por la bobina del electroimán y genera un campo magnético que genera ultrasonidos. Estos ultrasonidos tendrán una frecuencia que puede ser fija o variable según el tipo de buzzer. Lo importante es que la lámina metálica amplifica estos ultrasonidos generando el sonido que escuchamos.
Así que con esto espero que no llores cuando veas dos zumbadores en tu kit de Arduino, sino que utilices cada uno en el momento adecuado. Y sino, utiliza el pasivo ya que si no utilizas la función tone y aplicas directamente la señal a HIGH como veíamos en el ejemplo del zumbador activo…
También funcionará debido a que estamos generando una señal con una frecuencia determinada. Aunque claro, el sonido no variará mucho ni escucharás melodías increíbles…