12

Sensore di umidità del terreno con Arduino

In questa pagina vediamo come utilizzare un semplicissimo sensore che permetterà ad Arduino di rilevare l’umidità del terreno.

 

Il sensore che vi presenterò ora è davvero a basso costo, così come quello per rilevare la pioggia, e funziona in modo molto semplice.

Ma facciamo una cosa per volta.
Innanzitutto per trovarlo basterà cercare su internet “Arduino soil moisture sensor” o “Arduino umidità terreno” e simili.

Acquista il sensore.

Come si presenta il sensore di umidità

Troverete molti risultati, quello che dovrete acquistare è questo:

Moisture_sensor

(oppure alcune varianti sempre sel genere, magari cambia colore o forma in punta) e, spesso, sarà venduto insieme ad un trimmer con il quale sarà possibile regolarne la sensibilità (vedremo poi cosa significa):

trimmer

Come funziona il sensore

Questo sensore di umidità del terreno può rilevare la quantità di umidità presente nel terreno circostante al punto in cui è posizionato.

La tecnologia del sensore non è elevata così come la sua precisione ma risulterà comodo per monitorare il livello di umidità di un giardino urbano.

Questo sensore di può usare anche come allarme quando il livello di acqua nella ciotola del vostro animale domestico andrà sotto un certo livello. Per quest’ultimo scopo però è meglio controllare di persona e non affidarsi esclusivamente a tale sensore!

Questo sensore utilizza le due sonde poste ai lati per far circolare la corrente attraverso il suolo per poi calcolarne la resistenza. In tal modo sarà possibile ottenere il livello di umidità del terreno.

In sostanza più acqua c’è nel terreno e, ovviamente, più conduce elettricità e quindi vi sarà meno resistenza, mentre in caso contrario il terreno asciutto conduce poca elettricità e quindi vi sarà più resistenza.

Il sensore ha 4 Pin di uscita:

  • A0 = uscita analogica con valori nel range [0-1023];
  • D0 = Uscita digitale con valori 0 o 1;
  • GND;
  • VCC = Tensione ingresso. Occorrono: 5 V per usare l’uscita analogica (ne vediamo a breve l’esempio);
  • 3.3 V per usare l’uscita digitale.

Vi sono anche due led:

  • Led per ON/OFF = si accende quando il sensore è ON;
  • Led D0 = si accende quando è rilevata umidità.

Schema circuito

Vediamo come leggere il valore dell’uscita analogica:

moisutre scheme

Per modificare la sensibilità del sensore di umidità del terreno basta ruotare il trimmer. Ruotando in senso antiorario la sensibilità si abbassa, in senso orario si alza invece.

IMG_20150428_220258

Sketch

Con questo sketch Arduino rileverà il valore analogico dell’umidità del terreno ogni 2 secondi e lo stamperà a schermo.

/*Sketch per rilevare l'umidita' del terreno (valore analogico)*/



void setup()
{
  Serial.begin(9600);
}



void loop()
{
  int sensorValue = analogRead(A0); //Legge il valore analogico
  Serial.println(sensorValue); //Stampa a schermo il valore
  delay(2000); //Attende due secondi
}

 

Possibili varianti

Invece di stampare a schermo il valore analogico dell’umidità si potrebbero fare alcune varianti, ad esempio aggiungere un cicalino che inizi a suonare quando l’umidità del terreno raggiunge una certa soglia, oppure si può collegare una pompa o gocciolatore che innaffi automaticamente il terreno fino a ritornare ad un valore accettabile, oppure più semplicemente si può far accendere un led.

Vediamo quest’ultima variante:

/*Sketch per rilevare l'umidita' del terreno (valore analogico) e accendere un led se si raggiunge una soglia critica. */



const int soglia_critica = 300; //Soglia alla quale il led sarà ON




void setup()
{
  Serial.begin(9600);
  pinMode(9, OUTPUT);
}




void loop()
{
  int sensorValue = analogRead(A0); //Legge il valore analogico
  Serial.println(sensorValue); //Stampa a schermo il valore
  if (sensorValue <= soglia_critica)
    digitalWrite(9,HIGH); //Accendi led
  else
      digitalWrite(9,LOW); //Spegni led
  delay(2000); //Attende due secondi
}

 

In questo caso dovremo aggiungere questo pezzo di circuito (OLTRE alla parte già vista prima!):

Untitled Sketch_bb Untitled Sketch_schem2

 

Acquista il sensore

Clicca qui.

Share This:

Simone

Studente Data di nascita: 12/07/1990 - Parma, IT Hobbies: Informatica, acquariofilia, viaggi, tecnologia, aria aperta, sport, web.

12 Comments

  1. Ciao…..mi chiamo Paolo, sono di Bologna, complimenti per questo progetto che mi sembra molto interessante. Stavo in effetti cercando qualcosa del genere e mi sono imbattuto nel tuo articolo. La mia esigenza è quella di stoppare un sistema di irrigazione pianificato se l’umidità del terreno è già sufficiente in modo da ottimizzare il consumo di acqua e di non rendere troppo bagnato il suolo che sarebbe molto controproducente. Ovvio che il sistema da te congegnato dovrebbe poi interagire con una centralina che comanda l’irrigazione. Hai già avuto ritorni di utilizzo del tuo congegno per applicazioni di questo tipo?
    Grazie e ancora complimenti
    Paolo

    • Ciao Paolo.
      Non è una mia invenzione ma un sensore prodotto da altri che si può acquistare normalmente 🙂
      In ogni caso ciò che chiedi è più che possibile. Io farei tutto con Arduino, il sensore di umidità, un relè ed una elettrovalvola. In pratica metterei il sensore nel terreno (magari potrestietterne più di uno in varie parti e fare una media o altro per non incorrere in errori di misura troppo grandi, ricorda che il sensore non è molto preciso), in base al valore rilevato viene fatto eccitare o diseccitare un relè che attiva o disattiva l’elettrovalvola che andrà ad aprire il tubo dell’acqua o ciò che usi. Non ho realizzato fisicamente questo progetto ma io lo farei così. Aggiungerei anche qualcosa per rendere sicuro il tutto. Vedrei ad esempio cosa accade quando salta la luce mentre il tutto sta andando, ecc..

      Simone

  2. Ciao mi chiamo Vincenzo,
    Complimenti per la guida… visto che sei esperto di arduino vorrei farti una domanda: è possibile far dialogare arduino con tasker? Proprio riguardo all’argomento di questo articolo ho realizzato un sistema di irrigazione automatica con tasker. Il sistema è in grado di consultare le previsioni meteo e di conseguenza regolare la quantità di acqua da erogare. Chiaramente oltre alle previsioni, integrare un rilevatore di umidità nel terreno sarebbe il massimo 😉 ti ringrazio in anticipo per una eventuale risposta e ti allego il link al video che ho caricato su youtube del mio progettino qualora volessi dargli un occhiata.

    video

    • Ciao, intanto complimenti per il progetto, è davvero interessante.
      Purtroppo non ho mai avuto esperienze in merito e quindi non saprei se possa essere integrato.
      Funziona tramite bluetooth? In tal caso magari si potrebbe far qualcosa.
      Altrimenti purtroppo non saprei

  3. Senza nulla togliere alle piccole sperimentazioni e costruzioni fai da te, ad onor del vero bisognerebbe dire che una misura fatta in questo modo, in una applicazione reale, è difficilmente correlabile con la misura dell’umidità del terreno.

    • Quanto Lei dice è vero, da quanto ho appreso, questo sensore sfrutta una bassa tecnologia. Ho infatti specificato di non affidarsi soltanto su di esso (ho fatto l’esempio della ciotola del cane). In ogni caso credo che, per uso hobbistico, dia un’idea su quanta acqua sia presente nell’area nella quale lo si inserisce. Per i fiori o l’orto di casa direi che vada più che bene, ovvio che per applicazioni più ampie non userei tale sensore ma opterei per qualcosa di più preciso e affidabile.

      • Ci sono dei grossi difetti che, secondo me, la rendono praticamente inutile anche per i fiori di casa o per l’orto.
        Ad esempio:
        – Gli elettrodi sulla vetronite sono di rame dorato. La doratura (solitamente realizzata con processo ENIG) ha uno spessore attorno ai 0.05um. Questo significa che basta veramente nulla per graffiarla (trascurando le imperfezioni della doratura stessa) ed esporre il nickel/rame sottostante. Nickel/rame cominceranno ad ossidarsi e addio doratura. Ovviamente la presenza di ossido (non conduttivo) fa cambiare la superficie esposta cambiando quindi la risposta (costante di cella) degli elettrodi.
        – La misura realizzata in corrente continua produrrà una maggiore ossidazione dei metalli in quanto viene realizzata un vera e propria elettrolisi.
        – Sempre a causa della misura in corrente continua produrremo la migrazione di ioni da una zona all’altra del terreno (attorno agli elettrodi) alterando di conseguenza la misura realizzata.
        – Le misure in continua (ma anche quelle capacitive a “bassa frequenza”) sono enormemente influenzate dalla quantità di sali presenti. Si potrebbe pensare che la quantità di sali sia fissa, e che quindi basterà “tarare” il sensore per quel terreno. In realtà è probabile che la quantità di ioni “liberi” cambi continuamente e considerevolmente. Es. se la pianta viene innaffiata “poco”, o meglio senza percolazione, avremo un accumulo di sali che la pianta tende a non assorbire (es. sodio), viceversa quando il terreno viene abbondantemente irrigato avremo un dilavamento e quindi una asportazione di ioni. Ovviamente se l’acqua d’irrigazione cambia (piovana, acquedotto, pozzo) le cose cambieranno ancora.
        Ancora, se viene usato del fertilizzante (anche il compost), la situazione muterà radicalmente.

        Direi che piuttosto opterei per un semplice temporizzatore oppure se vogliamo ottimizzare il tutto ci possiamo interfacciare ad un sensore serio tipo questo .

        Perdona la lungaggine, non volevo criticare tropo, trovo comunque lodevole provare a farsi le cose, ragionare e sperimentare. Buon lavoro!

        • Nessun problema invece. Non si smette mai di imparare. E’ sempre bello apprendere qualcosa di nuovo da qualcuno che ne sa di più, per lavoro o per passione.
          Grazie,

          Simone

  4. Buongiorno Simone, ho acquistato un sensore simile a quello usato da te per realizzare il mio impianto di irrigazione
    http://www.ebay.it/itm/262212944517?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
    ho collegato il gnd al gnd di arduino, vcc ai 5V e il pin A0 al A0 di arduino… il problema è che, sul monito seriale, mi restituisce un valore di 1023 con terreno secco (come con la sonda in aria) mentre, quando metto acqua, passa tra i 500 e 600… e poi risale lentamente quando l’acqua drena.. secondo te perchè ottengo questo comportamento?? ho provato a regolare il trimmer ma niente… grazie mille

    • Buongiorno. Il problema potrebbe esser legato all’imprecisione della sonda. Vi sono problemi legati alla salinitá dell’acqua e altri. Se leggi in uno dei commenti a questo articolo un utente ha detto cosa ne pensava. Mi sembrava esperto.
      In ogni caso purtroppo mi viene solo da dire che oltre a regolare con il trimmer (vedendo se cambia valore) e controllare che non siano invertiti i pin digitale e analogico non si possa far molto.
      La sonda è coperta da una plastica di protezione? Magari è quella. Oppure è davvero il tipo di acqua che dá problemi

  5. Grazie Simone per il programmino. Ho preso spunto dal tuo sketch e materiale descritto per costruire un allarme antiallagamento : In questo caso non interessa la precisione del sensore : purche’ il ritorno analogico scenda ad esempio sotto 900 o 1000 e dia quindi un allarme collegabile a quel che si vuole, va bene. Faccio presente che il sensore (non la schedina elettronica) che puo’ facilmente ossidarsi, puo’ essere sostituito da altri elettrodi di materiale più nobile (esempio fili dorati davvero) perche’ non si alteri nel tempo. Cordialmente, Stefano

Lascia un commento

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