Progetto Arduino #32

Arduino sensore di suono: rilevare rumori e accendere un LED

Impariamo a utilizzare un modulo microfono con Arduino per rilevare suoni e rumori nell’ambiente e accendere un LED quando viene superata una soglia impostata.

🟢 Difficoltà Principiante
⏱ Tempo 15–20 minuti
🎯 Concetti Microfono, input digitale, soglia

Introduzione

In questo progetto utilizzeremo un sensore di suono per rilevare rumori presenti nell’ambiente.

Il modulo contiene un piccolo microfono che trasforma le variazioni di pressione dell’aria generate dal suono in un segnale elettrico.

Nei moduli dotati di uscita digitale, un circuito comparatore verifica se il livello del segnale supera una soglia regolabile. Quando ciò accade, l’uscita DO cambia stato e Arduino può rilevare l’evento.

Nel nostro esempio utilizzeremo questo segnale per accendere un LED quando viene rilevato un suono.

💡 Concetto chiave

Con l’uscita digitale DO Arduino non misura direttamente quanto è forte il rumore. Il modulo segnala semplicemente quando il livello sonoro supera la soglia impostata.

Cosa imparerai

  • come funziona un modulo microfono per Arduino;
  • come collegare un sensore di suono ad Arduino;
  • come leggere l’uscita digitale DO;
  • come utilizzare digitalRead();
  • come regolare la soglia di rilevamento;
  • come accendere un LED quando viene rilevato un rumore.

Dove può essere utilizzato un sensore di suono?

Un modulo microfono può essere utilizzato in molti piccoli progetti elettronici, ad esempio:

  • rilevatori di rumore;
  • comandi tramite battito di mani;
  • sistemi di allarme;
  • automazioni domestiche;
  • giochi interattivi;
  • progetti didattici con Arduino.

Materiale necessario

🔵 1 × Arduino Uno o compatibile
🎤 1 × Sensore di suono / modulo microfono
💡 1 × LED
⚡ 1 × Resistenza da 220 Ω
🧩 1 × Breadboard
🔌 Cavi jumper

🧰 Non hai ancora i componenti?

Molti dei progetti presenti su ProgettiArduino utilizzano componenti elettronici di base come LED, resistenze, sensori e breadboard.

Se stai iniziando con Arduino, un kit completo per principianti permette di avere a disposizione gran parte dei componenti necessari per realizzare numerosi esperimenti.

Scopri il kit Arduino In qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

📘 Vuoi imparare Arduino passo dopo passo?

Nei miei libri dedicati ad Arduino trovi spiegazioni, schemi e progetti pratici pensati per imparare partendo dalle basi.

Scopri i miei libri Arduino In qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

Come funziona il sensore di suono

Il microfono del modulo trasforma il suono in un piccolo segnale elettrico.

Nei moduli con uscita digitale, questo segnale viene confrontato con una soglia impostata tramite un piccolo trimmer.

Quando il livello sonoro supera la soglia, l’uscita digitale DO cambia stato.

🎛 Regolazione della sensibilità

Se il modulo dispone di un trimmer, puoi ruotarlo con un piccolo cacciavite per modificare la soglia di intervento.

In questo modo puoi decidere se il sensore deve reagire anche a rumori deboli oppure soltanto a suoni più forti.

Schema di collegamento

Sensore di suono

Per questo progetto utilizziamo l’uscita digitale DO del modulo.

Sensore di suono Arduino Uno
VCC 5V
GND GND
DO Pin digitale 2

LED

Arduino Collegamento
Pin 8 Resistenza 220 Ω → Anodo LED (+)
GND Catodo LED (−)
⚠️ Attenzione al tipo di modulo

Esistono molti moduli microfono diversi. Alcuni possiedono soltanto un’uscita digitale, altri dispongono anche di un’uscita analogica indicata come AO.

Questo progetto utilizza esclusivamente l’uscita DO.
Schema Arduino con sensore di suono microfono e LED
Schema di collegamento del sensore di suono con Arduino Uno e LED.

Codice Arduino

Dopo aver completato i collegamenti possiamo caricare il seguente sketch sulla scheda Arduino.

// ============================================
// Progetto #32 - Sensore di suono
// Accende il LED quando viene rilevato
// un rumore oltre la soglia
// ============================================

// Pin collegato all'uscita digitale DO
const int soundPin = 2;

// Pin collegato al LED
const int ledPin = 8;

// Alcuni moduli microfono sono attivi LOW,
// altri attivi HIGH.
// Se il comportamento è invertito,
// cambia HIGH in LOW.
const int soundActiveState = HIGH;

void setup() {

  // Imposta il sensore come ingresso
  pinMode(soundPin, INPUT);

  // Imposta il LED come uscita
  pinMode(ledPin, OUTPUT);

  // Avvia il Monitor Seriale
  Serial.begin(9600);

}

void loop() {

  // Legge lo stato dell'uscita digitale DO
  int soundState = digitalRead(soundPin);

  // Verifica se è stato rilevato un suono
  if (soundState == soundActiveState) {

    Serial.println("Suono rilevato!");

    // Accende il LED
    digitalWrite(ledPin, HIGH);

  } else {

    // Spegne il LED
    digitalWrite(ledPin, LOW);

  }

}
🔎 Se il LED funziona al contrario

La logica dell’uscita DO dipende dal modulo utilizzato. Alcuni sensori portano DO a HIGH quando rilevano un suono, altri lo portano a LOW.

Se il tuo circuito reagisce al contrario, modifica: soundActiveState = HIGH in soundActiveState = LOW.

Come funziona il programma

1. Arduino legge l’uscita DO

Il comando:

digitalRead(soundPin)

legge lo stato digitale presente sul pin 2.

2. Il microfono rileva il suono

Quando il livello sonoro supera la soglia impostata, il circuito del modulo modifica lo stato dell’uscita DO.

3. Arduino riconosce l’evento

Il programma confronta il valore letto con soundActiveState.

Se i due valori coincidono significa che il modulo ha rilevato un suono oltre la soglia.

4. Il LED si accende

Arduino esegue:

digitalWrite(ledPin, HIGH)

e contemporaneamente visualizza Suono rilevato! nel Monitor Seriale.

Come regolare la sensibilità

Se il sensore reagisce continuamente ai rumori ambientali oppure non rileva nemmeno un battito di mani vicino al microfono, è necessario regolare la soglia.

Ruota molto lentamente il trimmer presente sul modulo e prova ogni volta a produrre un suono vicino al microfono.

💡 Consiglio pratico

Per iniziare, regola il sensore in modo che non si attivi con il normale rumore della stanza ma reagisca chiaramente a un battito di mani eseguito nelle vicinanze.

Il sensore misura il livello di rumore?

Non con l’uscita digitale utilizzata in questo progetto.

L’uscita DO funziona come un rilevatore di soglia: Arduino può sapere se il suono ha superato o meno il livello impostato, ma non riceve direttamente un valore preciso dell’intensità sonora.

📌 In poche parole

Suono sotto la soglia → nessun evento
Suono sopra la soglia → evento rilevato

Se il modulo dispone anche dell’uscita analogica AO, è possibile leggerla con un ingresso analogico Arduino per osservare le variazioni del segnale.

⚠️ Non è un fonometro

Un semplice modulo microfono per Arduino non permette, senza una corretta calibrazione e un circuito adatto, di misurare accuratamente il livello sonoro in decibel.

Varianti del progetto

👏 Controllo con battito di mani

Possiamo riconoscere un battito di mani e utilizzarlo per accendere o spegnere una luce o un altro dispositivo.

🔔 Allarme acustico

Il sensore può attivare un buzzer o inviare una segnalazione quando viene rilevato un rumore improvviso.

📊 Monitor del rumore

Con un modulo dotato di uscita analogica possiamo realizzare esperimenti più avanzati per osservare le variazioni del livello sonoro nel tempo.

Conclusione

In questo progetto abbiamo collegato un sensore di suono ad Arduino e utilizzato la sua uscita digitale per rilevare rumori nell’ambiente.

Arduino legge lo stato del modulo tramite digitalRead() e accende il LED quando il livello sonoro supera la soglia impostata.

Abbiamo inoltre visto la differenza tra rilevare semplicemente il superamento di una soglia e misurare realmente l’intensità di un suono.

Questo semplice circuito costituisce una buona base per realizzare comandi tramite battito di mani, sistemi di allarme e altre automazioni sensibili ai rumori.