Tra gli attuatori più utilizzati nei progetti Arduino rientrano i buzzer. Un buzzer, o cicalino elettronico, è un componente alimentato a corrente continua che ha lo scopo di produrre suoni. Nell’elettronica di consumo e industriale, si presta a svariati utilizzi in giochi, cronometri, stampanti, dispositivi per veicoli di vario tipo, allarmi ecc.
In questo articolo vedremo come utilizzare un buzzer attivo per creare un’allarme con Arduino.
Caratteristiche di un buzzer
Un buzzer contiene un circuito integrato e si presenta con due connettori. Nella scelta di un buzzer si deve tenere conto di alcune caratteristiche, tra cui:
- tensione di lavoro e intervallo di tensioni
- livello del suono prodotto in decibel: più è elevato il suono che vogliamo produrre, maggiore sarà la tensione richiesta
- frequenza di emissione dei suoni: normalmente i buzzer producono suoni a una sola frequenza che va dai 2 e 4hz
Tra i vari tipi di buzzer, vanno annoverati i buzzer piezoelettrici, i buzzer attivi e quelli passivi.
Un buzzer piezoelettrico contiene un cristallo piezoelettrico connesso a una membrana; il cristallo si contrae o si espande in base alla tensione applicata (il cosiddetto effetto piezoelettrico), causando la vibrazione della membrana e dando origina al suono.
Un buzzer attivo genera un suono se elettrificato, grazie al suo ingresso oscillante, mentre il buzzer passivo, poiché sprovvisto di tale ingresso, necessita di un segnale in corrente continua a onde quadre, con una frequenza compresa tra i 2k e 5k.
Il progetto di esempio di questo articolo farà uso di un cicalino passivo per generare un’allarme “sirena”.
Il materiale e il circuito di esempio
Per creare il circuito di generazione allarme “sirena” con Arduino, occorrono:
- un buzzer attivo alimentato a 3-5 v
- due cavetti jumper maschio-femmina (meglio se di diverso colore)
- una scheda Arduino
- un cavo usb per collegare Arduino al pc
Per collegare il buzzer attivo ad Arduino, basta connettere i due piedini al terminale femmina dei due cavetti jumper. Successivamente, il terminale negativo va connesso al pin GND di messa a terra di Arduino e il terminale positivo al pin digitale 7.
Lo sketch di esempio
Nel programma di prova, creiamo una funzione suona che al suo interno contiene un ciclo infinito nel cui blocco di istruzioni vengono richiamate due funzioni, ognuna generante una frequenza di suoni diversa:
void suona() {
while(true) {
frequenza_1();
frequenza_2();
}
}
Il ciclo infinito fa in modo che, una volta invocata la funzione suona all’interno del loop di Arduino, quest’ultimo venga eseguito una sola volta.
La funzione frequenza_1 invia corrente al pin 7 per la durata di un millisecondo in un ciclo di 80 iterazioni:
void frequenza_1() {
for(int i=0;i<80;i++)
{
digitalWrite(PIN_BUZZER,HIGH);
delay(1);
digitalWrite(PIN_BUZZER,LOW);
delay(1);
}
}
La funzione frequenza_2, invece, in un loop di 100 iterazioni, invia un segnale HIGH al pin 7 per la durata di due ms.
void frequenza_2() {
for(int i=0;i<100;i++)
{
digitalWrite(PIN_BUZZER, HIGH);
delay(2);//wait for 2ms
digitalWrite(PIN_BUZZER, LOW);
delay(2);//wait for 2ms
}
}
Queste due frequenze ripetute in sequenza generano una sorta di sirena.
Non resta che inizializzare il pin in OUTPUT nella funzione setup di Arduino e richiamare la funzione suona nel loop. Ecco il codice completo dello sketch:
#define PIN_BUZZER 7
void frequenza_1() {
for(int i=0;i<80;i++)
{
digitalWrite(PIN_BUZZER,HIGH);
delay(1);
digitalWrite(PIN_BUZZER,LOW);
delay(1);
}
}
void frequenza_2() {
for(int i=0;i<100;i++)
{
digitalWrite(PIN_BUZZER, HIGH);
delay(2);//wait for 2ms
digitalWrite(PIN_BUZZER, LOW);
delay(2);//wait for 2ms
}
}
void suona() {
while(true) {
frequenza_1();
frequenza_2();
}
}
void setup() {
pinMode(PIN_BUZZER, OUTPUT);
}
void loop() {
suona();
}
Provate a giocare con le frequenze, modificando il delay e il numero di cicli, oppure aggiungendo altre funzioni frequenza_n
Conclusione
In questo tutorial abbiamo visto brevemente cosa sono i buzzer, quali sono i loro impieghi più comuni e come far suonare un allarme con un cicalino passivo in un circuito Arduino. I buzzer si prestano ad altri usi molto interessanti, come far suonare una melodia mediante la funzione tone. Vedremo un esempio pratico di sketch che genera una melodia con un cicalino passivo in un prossimo articolo.