Creare un allarme con un buzzer attivo e Arduino

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”.

Un modello di buzzer attivo

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.

Collegamento di un buzzer attivo ad Arduino
Collegamento di un buzzer attivo ad Arduino

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.