Sensore di umidità del terreno con Arduino
Leggiamo l’umidità del terreno con Arduino, visualizziamo il valore sul Monitor Seriale e attiviamo un LED — oppure, con un opportuno circuito di potenza, un sistema di irrigazione.
Cosa imparerai
- come collegare un sensore di umidità del terreno ad Arduino;
- come leggere il segnale analogico con
analogRead(); - come scegliere una soglia di intervento;
- come usare il Monitor Seriale per calibrare il progetto;
- come attivare un LED quando il terreno è secco;
- come trasformare il progetto in un piccolo sistema di irrigazione automatica.
Come funziona il sensore di umidità del terreno
In questo progetto viene utilizzato un classico sensore resistivo per terreno. Le due sonde vengono inserite nel suolo e il circuito misura una variazione elettrica legata alla conducibilità del terreno.
Sensore di umidità del terreno utilizzato nel progetto.
Materiale necessario
🧰 Kit Arduino consigliato
Molti progetti del sito utilizzano sensori, LED, resistenze, breadboard e cavetti. Un kit completo può essere comodo per iniziare.
👉 Guarda il kit Arduino consigliatoLink 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?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un’occhiata anche ai miei libri dedicati ad Arduino. All’interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su ArduinoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
Schema del circuito
Schema del circuito con sensore di umidità del terreno e Arduino.
Collegamenti principali
| Elemento | Pin Arduino | Funzione |
|---|---|---|
| Uscita analogica sensore | A0 | Lettura umidità |
| LED / uscita di comando | D9 | Segnalazione terreno secco |
| Monitor Seriale | 9600 baud | Visualizzazione valore grezzo |
Regolare la sensibilità del modulo
Il progetto segnala che il modulo dispone di un piccolo potenziometro. Ruotandolo è possibile modificare la soglia dell’uscita digitale del modulo.
Nel nostro sketch, però, utilizziamo direttamente l’uscita analogica su A0: in questo modo possiamo decidere la soglia via software e vedere il valore reale sul Monitor Seriale.
Codice Arduino commentato
// ==========================================================
// SENSORE UMIDITA' TERRENO CON ARDUINO
// Lettura analogica + soglia di intervento
// ==========================================================
// Pin analogico collegato al sensore
const int sensorePin = A0;
// Pin del LED o uscita di comando
const int uscitaPin = 9;
// Soglia usata in questo progetto.
// Va calibrata sul proprio sensore.
const int sogliaCritica = 300;
void setup() {
// Avvia il Monitor Seriale
Serial.begin(9600);
// Configura il pin 9 come uscita
pinMode(uscitaPin, OUTPUT);
}
void loop() {
// Legge il valore analogico del sensore
int valoreSensore = analogRead(sensorePin);
// Mostra il valore sul Monitor Seriale
Serial.println(valoreSensore);
// In questo progetto:
// valore <= soglia = terreno considerato secco
if (valoreSensore <= sogliaCritica) {
// Accende il LED / attiva l'uscita
digitalWrite(uscitaPin, HIGH);
}
else {
// Spegne il LED / disattiva l'uscita
digitalWrite(uscitaPin, LOW);
}
// Attende due secondi prima della nuova lettura
delay(2000);
}
Come funziona il programma
1. Lettura analogica
analogRead(A0) legge il segnale proveniente dal sensore e restituisce un valore numerico.
2. Monitor Seriale
Il valore viene inviato al Monitor Seriale con Serial.println(). Questa parte è fondamentale per capire quali valori produce il tuo sensore in terreno secco e in terreno bagnato.
3. Soglia critica
Nel progetto la soglia è impostata a 300. Quando il valore è minore o uguale alla soglia, Arduino porta HIGH il pin 9.
Come calibrare correttamente la soglia
- apri il Monitor Seriale a 9600 baud;
- misura il valore con il sensore in terreno asciutto;
- annaffia il terreno e attendi che l'acqua si distribuisca;
- leggi nuovamente il valore;
- ripeti la prova più volte;
- scegli una soglia intermedia coerente con il comportamento osservato.
Da LED a irrigazione automatica
Il progetto suggerisce di utilizzare il pin 9 non soltanto per un LED, ma anche per comandare un relè e quindi un'elettrovalvola o una piccola pompa.
Problema tipico: corrosione delle sonde
I sensori resistivi a due elettrodi possono deteriorarsi nel tempo quando rimangono continuamente alimentati e immersi nel terreno umido. Per progetti destinati a funzionare a lungo è utile alimentare la sonda solo durante la misura oppure valutare un sensore capacitivo, che non utilizza due elettrodi metallici esposti nello stesso modo.
Perché non conviene irrigare appena si supera una sola soglia
Se il valore oscilla vicino al limite, l'uscita potrebbe accendersi e spegnersi ripetutamente. In un impianto reale è meglio introdurre una piccola isteresi: una soglia per avviare l'irrigazione e una diversa soglia per interromperla.
const int sensorePin = A0;
const int uscitaPin = 9;
const int sogliaAvvio = 300;
const int sogliaStop = 450;
bool irrigazioneAttiva = false;
void setup() {
pinMode(uscitaPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int valore = analogRead(sensorePin);
Serial.println(valore);
// Avvia solo quando il terreno supera
// la condizione di "troppo secco"
if (!irrigazioneAttiva && valore <= sogliaAvvio) {
irrigazioneAttiva = true;
}
// Ferma soltanto quando il terreno
// torna abbastanza umido
if (irrigazioneAttiva && valore >= sogliaStop) {
irrigazioneAttiva = false;
}
digitalWrite(uscitaPin,
irrigazioneAttiva ? HIGH : LOW);
delay(2000);
}
Scarica lo sketch
⬇️ Scarica sensore_terreno.ino
Debug rapido
- controlla VCC e GND del modulo;
- verifica che l'uscita analogica sia collegata ad A0;
- apri il Monitor Seriale a 9600 baud;
- confronta i valori in terreno asciutto e bagnato;
- se il LED lavora al contrario, verifica il verso dei valori del tuo sensore;
- non usare automaticamente la soglia 300 senza calibrazione;
- se il sensore rimane installato a lungo, controlla periodicamente lo stato delle sonde.
Varianti del progetto
- aggiungere un display LCD o OLED;
- pilotare una pompa tramite MOSFET;
- usare un modulo relè per un'elettrovalvola;
- aggiungere un sensore capacitivo;
- registrare le letture su scheda SD;
- inviare notifiche con ESP32;
- gestire più vasi con più sensori.
Cosa devi ricordare
- Il sensore produce un valore analogico leggibile su A0.
- La soglia deve essere calibrata sul sensore reale.
- Il Monitor Seriale è il modo più semplice per trovare i valori corretti.
- Il pin 9 può comandare un LED o uno stadio di potenza, non direttamente una pompa.
- I sensori resistivi possono corrodersi nel tempo.
- L'isteresi rende più stabile un sistema di irrigazione automatica.
Domande frequenti
Perché il valore aumenta quando il terreno è più bagnato?
Il verso della lettura dipende dal modulo e dal circuito utilizzato. Non dare per scontato che “più basso” significhi sempre più secco: verifica sul Monitor Seriale.
Posso collegare una pompa direttamente al pin 9?
No. Una pompa richiede molta più corrente di quella che un pin Arduino può fornire. Usa un MOSFET, un transistor o un modulo relè adatto.
È meglio un sensore resistivo o capacitivo?
Per esperimenti brevi il resistivo è semplice ed economico. Per installazioni più durature, un sensore capacitivo tende a evitare il problema degli elettrodi metallici esposti alla corrosione.
Posso visualizzare l'umidità in percentuale?
Sì, ma prima devi calibrare due o più punti di riferimento sul tuo sensore e poi mappare il valore grezzo in una scala percentuale. Quella percentuale rimane comunque una stima riferita alla tua calibrazione.

