Componenti · 5 min di lettura

Sensore di umidità del terreno: irrigazione automatica delle piante con Arduino

Come funziona un sensore di umidità del terreno? Sensori resistivi e capacitivi, collegamento ad Arduino, calibrazione con valori secco e bagnato, come evitare la corrosione, irrigazione automatica con relè e pompa, ESP32 e Pico.

Un sensore di umidità del terreno è un sensore semplice che misura quanto è bagnata la terra in un vaso o in giardino. È alla base di molti progetti, da una spia che avvisa quando una pianta ha sete a un sistema che annaffia i fiori mentre sei in vacanza. È economico, si collega ad Arduino con tre fili e, aggiungendo un relè e una piccola pompa, ottieni un'automazione davvero utile.

Modulo sensore di umidità del terreno
Sensore di umidità del terreno: la sonda a forchetta si infila nella terra e la scheda comparatore fornisce un'uscita analogica (AO) e una digitale (DO).

Come funziona un sensore di umidità del terreno?

L'acqua nel terreno cambia la capacità della terra di condurre elettricità e di accumulare carica. I sensori resistivi misurano la resistenza tra due punte metalliche infilate nella terra: più la terra è bagnata, più la resistenza scende. I sensori capacitivi misurano la capacità intorno a un elettrodo rivestito; il metallo non tocca mai la terra. Nella maggior parte dei moduli la lettura è alta con terra secca e bassa con terra bagnata.

CaratteristicaResistivo (YL-69, FC-28)Capacitivo (v1.2)
Cosa misuraResistenza tra due punte metallicheCapacità intorno a un elettrodo
Metallo espostoSìNo (rivestito)
CorrosioneSi consuma in poche settimane se alimentato sempreMolto resistente
UscitaAnalogica (AO) e digitale (DO)Analogica
PrezzoMolto economicoUn po' più caro
Ideale perProve breviProgetti permanenti in vaso e in giardino

Collegamento

Pin del sensoreArduino UnoESP32Raspberry Pi Pico
VCCD7 (per alimentarlo solo durante la misura) o 5VGPIO 25 o 3V3GP15 o 3V3
GNDGNDGNDGND
AO (AOUT)A0GPIO 34GP26
DOD2 (facoltativo)FacoltativoFacoltativo
Se un sensore resistivo è alimentato di continuo, la corrente che passa nelle punte provoca elettrolisi e il metallo si consuma in poche settimane. Il modo più semplice per evitarlo è collegare il VCC del sensore a un pin digitale invece che al 5V e accenderlo solo per qualche millisecondo durante la misura. Il sensore assorbe pochi mA, quindi un pin lo alimenta senza problemi.

Leggere l'umidità con Arduino e calibrare

Ogni sensore e ogni terreno danno valori diversi, quindi prima calibra il tuo sensore: annota la lettura con il sensore all'aria (completamente asciutto) e immerso in un bicchiere d'acqua (completamente bagnato). Poi con map() trasformi questo intervallo in una percentuale da 0 a 100. Sostituisci DRY e WET nel codice con le tue letture:

Arduino (C++)
1const int SENSOR_PIN = A0;
2const int POWER_PIN = 7;       // sensörü yalnızca ölçerken besle / power only while measuring
3const int DRY = 850;           // havadayken okunan / reading in air (kendin ölç / measure yours)
4const int WET = 380;           // sudayken okunan / reading in water (kendin ölç / measure yours)
5
6void setup() {
7  pinMode(POWER_PIN, OUTPUT);
8  Serial.begin(9600);
9}
10
11int readMoisture() {
12  digitalWrite(POWER_PIN, HIGH);
13  delay(10);                                              // değerin oturmasını bekle / let it settle
14  int raw = analogRead(SENSOR_PIN);
15  digitalWrite(POWER_PIN, LOW);
16  return constrain(map(raw, DRY, WET, 0, 100), 0, 100);   // % nem / % moisture
17}
18
19void loop() {
20  int moisture = readMoisture();
21  Serial.print("Toprak nemi / Soil moisture: %");
22  Serial.println(moisture);
23  delay(2000);
24}
Metti il sensore nella zona delle radici, lontano dal bordo del vaso e sempre alla stessa profondità. L'elettronica nella parte alta dei sensori capacitivi non è impermeabile: non infilare il sensore oltre la linea segnata e proteggi la parte superiore della scheda con colla a caldo o una guaina.

Irrigazione automatica: relè e pompa

Mini pompa ad immersione da 6 V
Mini pompa ad immersione: funziona a 3–6 V, si mette dentro un contenitore d'acqua e porta l'acqua al vaso tramite un tubo.

Ora trasformiamo la misura in un'azione reale: quando l'umidità scende sotto il 30%, la pompa va per 4 secondi, poi si aspetta 1 minuto che l'acqua si distribuisca nella terra prima di misurare di nuovo. Questa attesa evita che la pompa non si fermi più e allaghi il vaso perché il sensore non si è ancora bagnato. La pompa non si può alimentare direttamente da un pin di Arduino; si comanda tramite un relè o un MOSFET. Per il collegamento del relè vedi Cos'è un modulo relè?

Arduino (C++)
1const int SENSOR_PIN = A0, POWER_PIN = 7, PUMP_PIN = 8;   // PUMP_PIN → röle IN / relay IN
2const int DRY = 850, WET = 380;
3const int START_BELOW = 30;          // %30'un altında sula / water below 30%
4const unsigned long PUMP_MS = 4000;  // her seferde 4 sn / 4 s per run
5const unsigned long SOAK_MS = 60000; // suyun yayılması için bekle / wait for the water to soak in
6
7int readMoisture() {
8  digitalWrite(POWER_PIN, HIGH);
9  delay(10);
10  int raw = analogRead(SENSOR_PIN);
11  digitalWrite(POWER_PIN, LOW);
12  return constrain(map(raw, DRY, WET, 0, 100), 0, 100);
13}
14
15void setup() {
16  pinMode(POWER_PIN, OUTPUT);
17  pinMode(PUMP_PIN, OUTPUT);
18  digitalWrite(PUMP_PIN, HIGH);      // aktif LOW röle: kapalı başla / active-LOW relay: start off
19}
20
21void loop() {
22  if (readMoisture() < START_BELOW) {
23    digitalWrite(PUMP_PIN, LOW);     // pompayı çalıştır / pump on
24    delay(PUMP_MS);
25    digitalWrite(PUMP_PIN, HIGH);    // pompayı durdur / pump off
26    delay(SOAK_MS);                  // tekrar ölçmeden önce bekle / wait before measuring again
27  }
28  delay(5000);
29}
Acqua ed elettronica lavorano fianco a fianco: tieni Arduino e relè lontani dal contenitore dell'acqua e più in alto, e isola tutte le giunzioni dei fili. Una pompa che gira a secco si guasta in pochi minuti; aggiungere un sensore di livello nel serbatoio e un limite al tempo totale di irrigazione giornaliera protegge sia la pompa sia la casa.

Umidità del terreno con ESP32 e Raspberry Pi Pico

Sull'ESP32 collega il sensore a uno dei pin ADC1 (GPIO 32–39), che funzionano anche con il Wi-Fi attivo; i valori vanno da 0 a 4095, quindi ricalibra. Con un ESP32 puoi inviare l'umidità al telefono come notifica, oppure costruire un sensore da vaso che misura una volta all'ora in deep sleep e dura mesi a batteria. Sul Pico con MicroPython la lettura è così:

MicroPython
1from machine import ADC, Pin
2import time
3
4sensor = ADC(26)               # GP26 → AOUT
5power = Pin(15, Pin.OUT)       # sensörü yalnızca ölçerken besle / power only while measuring
6DRY, WET = 52000, 24000        # kendi değerlerinle değiştir / replace with your readings
7
8def moisture():
9    power.value(1)
10    time.sleep_ms(10)
11    raw = sensor.read_u16()
12    power.value(0)
13    pct = (DRY - raw) * 100 // (DRY - WET)
14    return max(0, min(100, pct))
15
16while True:
17    print("Toprak nemi / Soil moisture: %", moisture())
18    time.sleep(2)

Quanta umidità deve avere il terreno?

Tipo di piantaUmidità obiettivo indicativa
Cactus e succulente10–30%
La maggior parte delle piante da appartamento40–60%
Pomodori, peperoni e ortaggi60–80%
Felci e piante amanti dell'umidità70–90%

Queste percentuali si riferiscono all'intervallo secco-bagnato del tuo sensore; non sono il contenuto d'acqua del terreno in senso scientifico. La soglia migliore si trova osservando per qualche giorno cosa segna il sensore quando la pianta ha davvero bisogno d'acqua.

Idee di progetti con il sensore di umidità del terreno

  • Irrigazione automatica dei vasi: un sistema che annaffia i fiori da solo, anche quando sei in vacanza.
  • Avviso "ho sete": un LED che si accende o un buzzer che suona quando la terra si secca.
  • Notifica sul telefono: invia un messaggio Telegram da un ESP32 quando l'umidità cala.
  • Irrigazione di più vasi: dai a ogni vaso un sensore e una piccola valvola e annaffia le piante separatamente.
  • Mini stazione per serra: misura anche l'umidità dell'aria con un DHT11 e la luce con una LDR, e mostra tutto su un display.
  • Giardino intelligente: salta automaticamente l'irrigazione quando un sensore di pioggia rileva precipitazioni.

Errori comuni e come risolverli

  • Il valore è sempre 1023 o sempre 0: viene letto il pin DO invece di AO, manca l'alimentazione o il filo verso la scheda del sensore è interrotto.
  • Le punte si sono corrose e le letture non hanno senso: il sensore resistivo è stato alimentato di continuo; alimentalo da un pin o passa a un modello capacitivo.
  • Le letture cambiano col tempo: la conducibilità varia quando la terra si compatta o viene concimata; ricalibra ogni tanto.
  • La pompa non si ferma: il relè è attivo basso e HIGH/LOW sono invertiti nel codice, oppure si misura di nuovo prima che l'acqua sia assorbita; aggiungi un'attesa tra le misure.
  • Il sensore capacitivo dà valori strani: l'elettronica in alto si è bagnata; rendi impermeabile la scheda.
  • Sull'ESP32 le letture impazziscono quando parte il Wi-Fi: il sensore è su un pin ADC2; spostalo su un pin tra GPIO 32 e 39.

Un sensore di umidità del terreno può essere il tuo primo progetto che va oltre la misura e cambia davvero qualcosa nel mondo reale. Nell'app BlueGrays trovi una stazione di irrigazione intelligente e un sistema di irrigazione per piante con ESP32, passo passo con schemi e codice.

Domande frequenti

Meglio un sensore di umidità del terreno capacitivo o resistivo?

Per prove di qualche giorno basta un sensore resistivo. Per un progetto che resterà mesi in un vaso scegli un sensore capacitivo: senza metallo esposto non si corrode e le sue letture variano meno nel tempo.

Quanto dura un sensore di umidità del terreno?

Le punte di un sensore resistivo alimentato di continuo si consumano visibilmente in poche settimane. Alimentato solo durante la misura può durare mesi. I sensori capacitivi possono funzionare per anni finché la loro elettronica resta al riparo dall'acqua.

Perché il valore è alto con terra secca e basso con terra bagnata?

La maggior parte dei moduli collega il sensore come parte di un partitore di tensione; quando la terra si bagna cambiano resistenza o capacità e la tensione sul pin analogico scende. Per questo il codice inverte l'intervallo con map(raw, SECCO, BAGNATO, 0, 100) per ottenere una percentuale.

A che profondità va infilato il sensore di umidità?

Metti il sensore nella zona delle radici della pianta, lontano dal bordo del vaso. Per i sensori capacitivi basta infilarli fino alla linea segnata; l'elettronica non deve toccare né la terra né l'acqua.

Si può collegare una pompa dell'acqua direttamente ad Arduino?

No. Anche le pompe piccole assorbono 100–300 mA, che un pin di Arduino non può fornire. Comanda la pompa con un modulo relè, oppure con un MOSFET e un diodo di ricircolo; alimentala con una sorgente separata e collega le masse.

Quanti vasi posso controllare con un Arduino?

Arduino Uno ha 6 ingressi analogici, quindi legge direttamente 6 sensori. Per averne di più usa un multiplexer analogico a 16 canali come il CD74HC4067 o un modulo ADC aggiuntivo come l'ADS1115.

Vedi tutti i progetti
Stazione di irrigazione intelligente
#83Avanzato
Premium

Stazione di irrigazione intelligente

Sistema autonomo di irrigazione delle piante che funziona 24 ore su 24, 7 giorni su 7, senza affaticare Arduino con due batterie 18650 e regolatore LM2596. Gestisce automaticamente il motore dell'acqu

5.0(42)
57
Sistema di irrigazione intelligente per piante ESP 32
#139Avanzato
Premium

Sistema di irrigazione intelligente per piante ESP 32

In questo progetto è stato sviluppato un sistema di irrigazione automatica delle piante utilizzando un ESP32 e un sensore di umidità del terreno. Il sensore misura costantemente il livello di umidità del terreno. Quando l'umidità scende al di sotto del livello prestabilito, l'ESP32 attiva il relè, avviando la pompa dell'acqua e innaffiando la pianta. Quando il terreno è sufficientemente umido, la pompa si arresta automaticamente. Grazie a questo progetto, le piante possono essere innaffiate rego

4.7(10)
14
Temperatura e umidità con DHT11
#55Intermedio

Temperatura e umidità con DHT11

Progetto che misura il valore della temperatura e dell'umidità ambientale con un sensore DHT11 e lo visualizza su uno schermo LCD I2C. Insegna l'uso del sensore digitale di temperatura/umidità.

4.7(47)
60
ESP32 DHT22 Temperatura e umidità (con display LCD)
#117Intermedio
Premium

ESP32 DHT22 Temperatura e umidità (con display LCD)

Si tratta di un progetto che misura la temperatura e l'umidità dell'ambiente tramite il sensore DHT22 e le visualizza in tempo reale su un display LCD I2C 16x2. I dati vengono letti dal sensore utilizzando il protocollo one-wire tramite la libreria Adafruit DHT. Questo progetto costituisce la base per stazioni meteorologiche IoT, sistemi di automazione domestica intelligente o sistemi di monitoraggio ambientale nelle serre. La comunicazione con il DHT22 avviene tramite il pin GPIO 4 dell'ESP32.

4.8(37)
53
Lampadina 220V con pulsante (Push)
#19Avanzato
Premium

Lampadina 220V con pulsante (Push)

Progetto che controlla una lampadina a 220 V con un pulsante utilizzando un modulo relè. Insegna le basi della commutazione ad alta tensione con i relè.

4.4(30)
38
Illuminazione Intelligente ESP32 (PIR + LDR + Relè + OLED)
#141Avanzato
Premium

Illuminazione Intelligente ESP32 (PIR + LDR + Relè + OLED)

Trasforma il tuo corridoio, bagno o dispensa in illuminazione intelligente con ESP32! Utilizzando un sensore di movimento PIR, un sensore di luce LDR e un modulo relè, costruiamo lo scenario classico "la luce si accende quando viene rilevato movimento al buio" — se l'ambiente è già luminoso, il movimento NON attiva la luce, risparmiando energia durante il giorno. La luce rimane accesa per 30 secondi; se il movimento continua, il timer si azzera e la luce rimane accesa più a lungo. Il display OLE

4.3(6)
11
Data Logger di Temperatura ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
#144Avanzato
Premium

Data Logger di Temperatura ESP32 (DHT22 + DS1307 RTC + microSD + OLED)

Costruisci un data logger di temperatura con timestamp usando ESP32! Leggi temperatura/umidità dal DHT22 ogni 10 secondi, ottieni l'ora reale dal DS1307 RTC e registra su scheda microSD in formato CSV. L'OLED mostra dal vivo temperatura (font grande), percentuale di umidità, timestamp e contatore di log. Il file `/temp_log.csv` sulla scheda SD si apre in Excel, Google Sheets o Python pandas per l'analisi — perfetto per il monitoraggio di serre, tracciamento della temperatura domestica, raccolta

4.7(7)
12
ESP32 HTTPClient + API meteo (con schermo LCD)
#133Avanzato
Premium

ESP32 HTTPClient + API meteo (con schermo LCD)

In questo progetto, utilizzando l'ESP32, effettuiamo una chiamata REST all'API meteo (wttr.in) tramite Internet utilizzando `HTTPClient.h`. Analizziamo la risposta JSON restituita tramite ArduinoJson v7 e visualizziamo le informazioni relative a città, temperatura, umidità, condizioni meteorologiche e vento sul display LCD I2C sia in turco che in inglese. wttr.in è gratuito e non richiede una chiave API: basta digitare il nome di una città qualsiasi per ottenere le condizioni meteorologiche in t

4.7(13)
20

Scopri i tipi di sensore di umidità del terreno, come collegarlo ad Arduino, trasformare le letture in percentuale, evitare la corrosione e costruire un sistema che annaffia le piante da solo, passo passo.