Progetto #116 • Sensore acqua + buzzer

Sensore livello acqua con Arduino e allarme buzzer

Costruiamo un semplice sistema di monitoraggio che legge un sensore analogico di livello dell’acqua e attiva un buzzer quando il valore supera una soglia impostata.

Difficoltà★★☆☆☆ Facile
Tempo25–40 minuti
ConcettiAnalogico • Soglia • Allarme

Introduzione

Vuoi sapere quando il livello dell’acqua raggiunge una condizione critica? Con Arduino possiamo leggere continuamente il segnale proveniente da un sensore di livello e confrontarlo con una soglia.

Nel progetto base il buzzer si attiva quando il valore letto supera il limite impostato. È un esperimento utile per capire il principio alla base di molti sistemi di monitoraggio e allarme.

Cosa imparerai
  • leggere un ingresso analogico con analogRead();
  • osservare i valori sul Monitor Seriale;
  • calibrare una soglia in base al sensore;
  • attivare un buzzer quando si verifica una condizione;
  • evitare continui ON/OFF vicino alla soglia usando l’isteresi.

Materiale necessario

1× Arduino UNO
1× sensore analogico di livello acqua
1× buzzer attivo
Cavi jumper
1× breadboard

🧰 Non hai ancora i componenti?

Un kit Arduino per principianti contiene molti dei componenti utilizzati nei progetti del sito.

Vedi il kit Arduino consigliato →Link di affiliazione Amazon: 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 trovi spiegazioni, schemi e numerosi progetti pratici dedicati ad Arduino.

Scopri i miei libri su Arduino →Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

Schema di collegamento

💧 Sensore livello acqua

  • VCC → 5V
  • GND → GND
  • OUT → A0

🔊 Buzzer attivo

  • positivo (+) → pin 9
  • negativo (−) → GND
Schema sensore livello acqua Arduino con buzzer di allarme
Importante: esistono diversi moduli per rilevare acqua e livello. Verifica sempre tensione di alimentazione e piedinatura del modello che possiedi prima di collegarlo ad Arduino.

Prima del codice: calibra il sensore

Il valore 500 non è universale. Il sensore può restituire valori diversi a seconda del modulo, dell’acqua, della superficie bagnata e del montaggio. Conviene quindi osservare prima le letture sul Monitor Seriale e scegliere una soglia adatta al proprio esperimento.

Concetto chiave: la lettura analogica non rappresenta automaticamente una percentuale di riempimento. Per ottenere una misura significativa devi calibrare il sistema rispetto alla situazione reale.

Codice Arduino

Rispetto alla versione base ho aggiunto una piccola isteresi. L’allarme entra quando il valore supera la soglia alta e si disattiva soltanto quando scende sotto una soglia leggermente più bassa. Questo evita che il buzzer continui ad accendersi e spegnersi quando la misura oscilla vicino al limite.

Progetto #116 — Sensore livello acqua con allarme
// ============================================
// Progetto 116 - Sensore livello acqua
// Allarme con buzzer e isteresi
// ============================================

const byte sensoreLivello = A0;
const byte buzzer = 9;

// Valori da calibrare sul proprio sensore
const int sogliaAllarme = 500;
const int isteresi = 30;

bool allarmeAttivo = false;

void setup() {

  pinMode(buzzer, OUTPUT);
  digitalWrite(buzzer, LOW);

  Serial.begin(9600);
}

void loop() {

  int valore = analogRead(sensoreLivello);

  Serial.print("Livello acqua: ");
  Serial.println(valore);

  // Attiva l'allarme sopra la soglia
  if (!allarmeAttivo && valore >= sogliaAllarme) {

    allarmeAttivo = true;
    digitalWrite(buzzer, HIGH);

    Serial.println("ALLARME: livello alto!");
  }

  // Lo spegne solo quando il valore
  // scende abbastanza sotto la soglia
  if (allarmeAttivo &&
      valore <= (sogliaAllarme - isteresi)) {

    allarmeAttivo = false;
    digitalWrite(buzzer, LOW);

    Serial.println("Livello tornato normale");
  }

  delay(250);
}

Come funziona

1

Lettura del sensore

Arduino acquisisce il valore presente sul pin A0 tramite analogRead().

2

Confronto con la soglia

Quando la lettura raggiunge o supera la soglia impostata, il programma considera il livello critico.

3

Attivazione dell’allarme

Arduino porta HIGH il pin 9 e il buzzer attivo emette il segnale acustico.

4

Ritorno alla normalità

Grazie all’isteresi, l’allarme viene spento solo quando la lettura scende abbastanza sotto la soglia.

Attenzione al tipo di sensore

I comuni sensori resistivi con piste metalliche esposte sono adatti soprattutto a esperimenti e prototipi. Se restano immersi o alimentati continuamente possono degradarsi nel tempo. Per un’installazione permanente conviene scegliere un sensore progettato specificamente per il monitoraggio continuo del livello.

Nota pratica: questo progetto è didattico. Per controllare pompe, elettrovalvole o apparecchi collegati alla rete elettrica servono circuiti di potenza, isolamento e protezioni adeguate.

Varianti possibili

🚦 LED di stato

Aggiungi LED verde, giallo e rosso per rappresentare diversi livelli.

📟 Display

Mostra la lettura o un livello calibrato su LCD oppure OLED.

↕️ Soglia minima e massima

Crea due allarmi distinti per serbatoio quasi vuoto e livello troppo alto.

📡 ESP32 e Wi-Fi

Invia lo stato a una pagina web o genera una notifica remota.