Inicio ¬Ľ Kits para Arduino ¬Ľ Kit de 37 sensores para Arduino ¬Ľ M√≥dulo buzzer pasivo KY-006

¬ŅQu√© es un m√≥dulo KY-006?

Se trata de un módulo que integra un buzzer o zumbador pasivo y tiene una estructura que simplifica su uso, lo que hace que sea muy sencillo utilizarlo con Arduino.

Módulo ky-006

El zumbador pasivo emite un sonido cuando se aplica una se√Īal sinusoidal o cuadrada. Dependiendo de la frecuencia de la se√Īal el sonido variar√°.

Este m√≥dulo forma parte del kit de 37 sensores compatible con Arduino.

¬ŅPara qu√© sirve el m√≥dulo KY-006?

Los zumbadores pasivos tienen una variedad de aplicaciones en diferentes campos debido a su capacidad para generar sonidos o tonos espec√≠ficos cuando se les aplica una se√Īal el√©ctrica adecuada.

Algunos de los usos m√°s comunes de los zumbadores pasivos incluyen:

  • Electrodom√©sticos: Se utilizan para emitir se√Īales sonoras en dispositivos como microondas, hornos, lavadoras, y refrigeradores. Estos sonidos pueden indicar el fin de un ciclo de trabajo, una puerta abierta, o alg√ļn otro estado importante.
  • Alarmas y sistemas de seguridad: Los zumbadores pasivos son componentes clave en sistemas de alarma para casas, coches, y dispositivos de seguridad personal. Pueden emitir tonos fuertes para alertar sobre una intrusi√≥n, un incendio, o cualquier otra emergencia.
  • Equipos m√©dicos: En dispositivos m√©dicos, los zumbadores pasivos pueden alertar al personal m√©dico sobre condiciones espec√≠ficas de los pacientes, como cambios en los signos vitales o la finalizaci√≥n de ciclos de dosificaci√≥n en equipos de infusi√≥n.
  • Juguetes electr√≥nicos: Se utilizan en juguetes para producir efectos sonoros, mejorando la experiencia de juego al proporcionar retroalimentaci√≥n auditiva que puede ser activada por acciones espec√≠ficas del usuario.
  • Instrumentos musicales electr√≥nicos: En algunos casos, los zumbadores pasivos se utilizan en instrumentos musicales electr√≥nicos para crear sonidos o notas espec√≠ficas, especialmente en dispositivos educativos o de juguete.
  • Relojes y cron√≥metros: Los zumbadores pasivos pueden emitir se√Īales audibles para indicar alarmas, fin de tiempos de cuenta regresiva, o cambios en la configuraci√≥n.
  • Computadoras y perif√©ricos: Son usados para emitir se√Īales de error o de confirmaci√≥n, como el pitido durante el arranque que indica que el sistema ha pasado las pruebas de autodiagn√≥stico.
  • Controladores industriales y sistemas de automatizaci√≥n: En entornos industriales, los zumbadores pasivos pueden alertar sobre el estado de las m√°quinas, cambios en los procesos de producci√≥n, o necesidades de mantenimiento.
  • Dispositivos de comunicaci√≥n: En algunos dispositivos de comunicaci√≥n, como estaciones base para tel√©fonos inal√°mbricos o sistemas de intercomunicaci√≥n, los zumbadores pasivos pueden indicar llamadas entrantes o mensajes.

La flexibilidad y simplicidad de los zumbadores pasivos los hacen ideales para cualquier aplicación que requiera una forma económica y eficiente de proporcionar retroalimentación o alertas sonoras.

Especificaciones del módulo KY-006

Estructura física

El módulo tiene conectado un buzzer piezoeléctrico pasivo:

buzzer pasivo

Dispone de 3 pines. Dos de ellos conectados al buzzer y un tercero que no est√° conectado a nada, por lo que no se utiliza.

pines módulo ky-006
  • GND: Tiene un signo menos (-) y es el que tenemos que conectar con la tierra de nuestro Arduino.
  • IN: Tiene una S. Es el que conectaremos a un pin PWM de nuestro Arduino para enviar la se√Īal con la frecuencia deseada para hacer sonar el buzzer.
  • Pin central: No se usa.

Especificaciones técnicas

A continuación puedes ver las especificaciones técnicas del módulo KY-006:

Voltaje de funcionamiento1.5V ~ 15V
Corriente de operación<25mA
Frecuencia de resonancia1.5kHz ~ 2.5kHz
Dimensiones18.5mm x 15mm

¬ŅC√≥mo funciona el zumbador pasivo?

El zumbador pasivo del m√≥dulo KY-006 convierte las se√Īales el√©ctricas en sonido mediante el uso de un material piezoel√©ctrico.

En el interior de estos componentes se encuentra un disco hecho de material piezoeléctrico, como el titanato de circonio y plomo (PZT). Este material tiene la propiedad de cambiar de forma o vibrar cuando se le aplica un voltaje eléctrico, y viceversa, puede generar un voltaje cuando se deforma.

zumbador pasivo

Cuando se aplica una se√Īal el√©ctrica alternante (AC) a trav√©s del material piezoel√©ctrico, este empieza a vibrar debido a los cambios r√°pidos de polaridad en la se√Īal el√©ctrica.

funcionamiento del buzzer pasivo

Las vibraciones del disco piezoel√©ctrico crean ondas de presi√≥n en el aire, las cuales percibimos como sonido. La frecuencia de la se√Īal el√©ctrica aplicada determina la frecuencia de las vibraciones y, por tanto, el tono del sonido producido.

¬ŅC√≥mo conectar el m√≥dulo KY-006 con Arduino?

Materiales

Estos son los materiales necesarios para conectar un módulo KY-006 con Arduino:

Una placa Arduino (Yo usar√© Arduino UNO)
Un módulo KY-006
Cables
Una protoboard
Un ordenador con el IDE de Arduino instalado

Conexiones

Las conexiones son las que aparecen en la siguiente imagen:

conexión del módulo KY-006 con Arduino

Como puedes ver, las conexiones son muy sencillas.

El pin etiquetado con un signo negativo (-) va conectado a tierra. Utilizaremos la linea negativa de la protoboard para hacer esta conexión. El pin GND de Arduino va conectado a esta linea y el pin negativo del módulo también.

El pin etiquetado con S lo tenemos que conectar a un pin digital. Yo lo he conectado al pin 4, pero puedes usar otro si lo prefieres.

Dicho esto, vamos a hacer el sketch.

¬ŅC√≥mo programar el m√≥dulo KY-006 con Arduino?

Hay dos formas de modificar la frecuencia de la se√Īal que vamos a enviar al buzzer. Una es utilizando la funci√≥n tone() y la otra es utilizando digitalWrite() con delay(). Vamos a ver un ejemplo de cada una.

Con tone()

Este es el sketch completo para utilizar el módulo KY-006 con tone():

//DECLARACIONES
#define DO  131
#define RE  147
#define MI  165
#define FA  175
#define SOL  196
#define LA  220
#define SI  247

const int KY006 = 4;

const int MELODIA[] = {
  DO, RE, MI, FA, SOL, LA, SI
};

const int TIEMPO = 500;

//CONFIGURACI√ďN
void setup() {

}

//FUNCI√ďN LOOP
void loop(){
  for (int i = 0; i < 7; i++) {
    tone(KY006, MELODIA[i]);
    delay(TIEMPO);
    noTone(KY006);
    delay(TIEMPO * 0.3);
  }
}

Declaraciones

Tenemos que declarar 7 constantes con las frecuencias de las notas en Hz. Las he llamado igual que las notas (DO, RE, MI, FA, SOL, LA y SI) para que no haya confusión.

#define DO  131
#define RE  147
#define MI  165
#define FA  175
#define SOL  196
#define LA  220
#define SI  247

También vamos a declarar una constate para el pin digital en el que hemos conectado el módulo. En mi caso el pin 4:

const int KY006 = 4;

Lo siguiente que necesitamos es la melodía que vamos a generar. Para eso nos ayudaremos de un array:

const int MELODIA[] = {
  DO, RE, MI, FA, SOL, LA, SI
};

He escogido la escala musical porque me parecía más sencillo de entender. En un futuro artículo ya te explicaré como hacer una canción a partir de una partitura.

Fíjate que los elementos que componen el array MELODIA son las constantes con las frecuencias de cada nota que habíamos declarado antes. Las debemos colocar en el orden en el que sonarán.

Configuración

En este caso no será necesario realizar ninguna configuración, por lo que dejaremos la función setup() vacía.

void setup() {

}

Función loop

Y dentro de la función loop() generamos la secuencia de tonos:

void loop(){
  for (int i = 0; i < 7; i++) {
    tone(KY006, MELODIA[i]);
    delay(TIEMPO);
    noTone(KY006);
    delay(TIEMPO * 0.3);
  }
}

Con el bucle for recorremos el array MELODIA. Fíjate que empieza en 0 (int i=0) y termina en 6 (i<7). Esos valores se corresponden con las posiciones que ocupan las notas dentro del array.

Dentro del bucle for llamamos a la función tone() pasándole el pin digital en el que está conectado el módulo KY-006 y la frecuencia en Hz que tendrá el tono:

tone(KY006, MELODIA[i]);

Las frecuencias que soporta la función tone() van desde los 31Hz hasta los 65535Hz. Aunque nosotros ahora solo usaremos las 7 frecuencias que hemos definido para la escala musical.

Como puedes ver, el pin lo indicamos utilizando la constante KY006 y la frecuencia la sacamos del array MELODIA con ayuda del indice del bucle (MELODIA[i]) que representa la posición del array a la que queremos acceder.

La siguiente instrucción es un delay con el tiempo que durará el tono en milisegundos:

delay(TIEMPO);

Recuerda que la constante TIEMPO, que declaramos anteriormente, tiene valor 500, por lo que se generará un retraso de medio segundo antes de que se ejecute la siguiente instrucción. Si prefieres que tenga otra duración, simplemente cambia el valor de la constante.

La siguiente instrucción es la llamada a noTone():

noTone(KY006);

La función noTone() detiene el tono del pin que se le indica como parámetro, en este caso el pin 4, que es el valor de la constante KY006 y es donde hemos conectado el módulo.

Como noTone() se ejecuta justo después de la instrucción delay de 500ms, el tono no se detendrá hasta que transcurra ese tiempo. Por tanto el tono sonará durante medio segundo.

Y hemos llegado a la √ļltima instrucci√≥n dentro del bucle for. Se trata de otro delay:

delay(TIEMPO * 0.3);

En este caso el tiempo del retraso ser√° el 30% del tiempo total del tono. Por eso multiplicamos TIEMPO * 0.3. Como el tono ya se detuvo por la llamada a la funci√≥n noTone(), este delay ser√° un tiempo en el que no sonar√° nada. Como est√° justo al final de la instrucci√≥n for, lo que conseguimos es que haya un peque√Īo silencio entre nota y nota, puesto que se ejecutar√° justo antes de que el for itere y pase a la siguiente posici√≥n del array.

Cuando el array complete sus 7 iteraciones habrán sonado las 7 notas de la escala. En este punto la función loop comenzará de nuevo, por lo que volverá a sonar la escala desde el principio. Y se repetirá mientras el Arduino reciba alimentación.

Versión simplificada de la función loop

La función tone() tiene una variación que permite pasar, además del pin y la frecuencia, el tiempo que dura el tono. Usando esta versión de la función podemos simplificar la función loop() de la siguiente forma:

void loop() {
  for (int i = 0; i < 7; i++) {
    tone(KY006, melodia[i], TIEMPO);
    delay(TIEMPO * 1.3);
  }
}

Como puedes comprobar, el tercer par√°metro que le pasamos a tone() es la constante TIEMPO que antes utilizamos con delay().

tone(KY006, melodia[i], TIEMPO);

De esta forma le estamos indicando que el tono que enviamos debe durar 500ms. Una vez transcurrido ese tiempo se detendr√° sin necesidad de llamar a noTone().

Hay que tener en cuenta una cosa. Ese tiempo que pasamos a tone() solo le indica la duración del tono, pero no impide que la siguiente instrucción del sketch se ejecute antes de que se complete el tiempo. Por tanto, el sketch continuará su ejecución normal aunque el tono esté sonando.

Para impedir que el sketch contin√ļe antes de que se complete el tono usamos un delay():

delay(TIEMPO * 1.3);

Al pasarle el tiempo multiplicado por 1.3 le estamos indicando que debe esperar los 500ms que dura el tono y un 30% m√°s de ese tiempo en el que no se emitir√° ning√ļn tono.

De esta forma conseguimos lo mismo que teníamos en el versión inicial, pero con menos código.

Con digitalWrite() y delay()

Vamos ahora a ver el otro caso utilizando digitalWrite() y delay():

//DECLARACIONES
const int KY006 = 4;

//CONFIGURACI√ďN
void setup() {
  pinMode(KY006, OUTPUT);
}

//FUNCI√ďN LOOP
void loop() {
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 100; j++) {
      digitalWrite(KY006, HIGH);
      delay(i);
      digitalWrite(KY006, LOW);
      delay(i);
    }
    delay(50);
  }
}

Declaraciones

Primero vamos a declarar una constante para el pin digital en el que hemos conectado el módulo KY-006:

const int KY006 = 4;

En mi caso es el pin 4, si has usado otro diferente cambia este valor.

Configuración

Dentro de la función setup() tenemos que configurar el pin KY006 como salida, puesto que enviaremos pulsos altos y bajos para generar los tonos en el buzzer:

void setup() {
  pinMode(KY006, OUTPUT);
}

Función loop

En la función loop() generaremos los tonos.

Fíjate que hay 2 bucles for anidados:

for (int i = 1; i < 11; i++) {
    for (int j = 0; j < 100; j++) {
      ...
    }
    ...
}

El for externo, el que tiene como índice la variable i, genera 10 iteraciones. Este bucle es el que controla los tonos. Por cada iteración de este bucle se generará un tono.

El for interno, el de la j, es el responsable de generar un tono. Como puedes ver realiza 100 repeticiones. Por cada iteraci√≥n generaremos un pulso alto y un pulso bajo. Cuando se completen las 100 iteraciones se habr√°n producido 100 pulsos altos y 100 bajos intercalados. De esta forma obtendremos una se√Īal cuadrada.

Las instrucciones del interior del bucle interno son las responsables de hacer estos pulsos que hemos comentados antes, es decir, un pulso alto (HIGH) y uno bajo (LOW):

digitalWrite(KY006, HIGH);
delay(i);
digitalWrite(KY006, LOW);
delay(i);

Te preguntar√°s, ¬ŅC√≥mo va a hacer esto que suenen los tonos diferentes? La clave est√° en los delay que hay despu√©s de cada digitalWrite(). El tiempo que se ejecutar√° el delay lo determina la variable i del bucle externo y dependiendo de este valor la frecuencia de la se√Īal cuadrada variar√°.

Es decir, cuando i tenga valor 1 el delay ser√° de 1 ms, por tanto la se√Īal generada ser√° as√≠:

se√Īal cuadrada de 1ms

En la siguiente iteraci√≥n i tendr√° valor 2, por lo que la se√Īal ser√° esta otra:

se√Īal cuadrada de 2ms

Y así sucesivamente con los 10 valores que irá tomando la variable i.

El periodo de la se√Īal cambia, por lo que la frecuencia tambi√©n lo hace, lo que se traducir√° en diferentes sonidos del buzzer.

Ya solo falta un √ļltimo detalle, el delay que hay justo al final del for externo:

for (int i = 1; i < 11; i++) {
    for (int j = 0; j < 100; j++) {
      ...
    }
    delay(50);
}

Este delay de 50 ms ser√° el encargado de hacer una peque√Īa pausa entre tono y tono. Puedes poner otra duraci√≥n si lo prefieres. Durante este tiempo el m√≥dulo KY-006 no generar√° ning√ļn sonido.

Bueno, pues ya tenemos los dos sketch. Carga primero uno en tu Arduino y pruébalo y después haz lo mismo con el otro para comprobar que te ha salido bien.


Te avisaré cuando publique nuevo contenido en paraarduino.com y en mi canal de YouTube (@ParaArduino).

No hemos podido validar tu suscripción.
¡Se ha realizado tu suscripción!

Newsletter

Suscríbete para que te avise cuando publique nuevo contenido.

Usamos Brevo como plataforma de marketing. Al hacer clic a continuación para enviar este formulario, consiente que la información proporcionada sea transferida a Brevo para su procesamiento de acuerdo con sus términos de uso