«

»

Mag 01

Stampa Articolo

Irrigazione arduino sensore terreno – seconda parte

Il precedente articolo dedicato all’irrigazione arduino hai imparato a condividere i valori rilevati da arduino su una pagina Web, ora è tempo di verificare i valori che rileva il sensore di umidità del terreno.

moisture sensor

Per irrigare il tuo giardino solo in condizioni ottimali sarà necessario raccogliere alcuni dati dai sensori collegati ad Arduino.

Ipotizziamo di utilizare arduno uno R3 e dei sensori analogici puoi collegare fino a 6 sensori al tuo progetto di irrigazione arduino in modo da raccogliere sufficenti valori da analizzare e sulla base dei quali eseguire un’adeguata irrigazione delle piante.

Il sensore di umidità del terreno per l’irrigazione arduino

Il sensore che ho scelto per il mio progetto è il Moisture Sensor della DFRobot:

irrigazione arduino sensore terreno

questo sensore, come riporta il sito del costruttore, è in grado di operare anche con le due liste di contatti immerse nell’acqua, riportando valori differenti:

  • 0 ~300 : dry soil ( terreno asciutto )
  • 300~700 : humid soil ( terreno umido )
  • 700~950 : in water ( in acqua )

Questo dato è molto utile perché ti fornisce già un’idea delle condizioni del terreno in base ai valori letti.

Avrai notato che sono range abbastanza ampi di 300/400 valori ciascuno e che non arrivano a 1023 ossia i 5v convertiti dall’ADC di arduino, questo è dovuto al fatto che il range di tensione presente sul pin di output è:

Output voltage signal: 0~4.2v
Current: 35mA

come riporta il sito DFRobot, per cui al massimo otterrai il valore 950 in condizioni di immersione totale del sensore in acqua.

Collegare il sensore di umidità del terreno

Il sensore Moisture Sensor presenta 3 pin:

  • pin 1 alimentazione positiva ( +5v ) cavo rosso
  • pin 2 alimentazione negativa o massa ( Gnd ) cavo nero
  • pin 3 segnale analogico in Volt ( 0~4.2v ) cavo blu
per collegarlo ad Arduino puoi utilizzare uno dei 6 pin analogici ( A0-A5 ) di Arduino Uno.
irrigazione arduino connessioni
Il sensore di umidità del terreno va inserito con le due sporgenze a diretto contatto del terreno:
irrigazione arduino sensore terreno

Sketch di lettura del sensore umidità del terreno Moisture Sensor

Lo sketch per eseguire il test è molto semplice:

int sensorPin = A0;
int sensorValue = 0;

void setup() {
  Serial.begin( 9600 );
  pinMode(sensorPin, INPUT);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  Serial.print("Valore: ");
  Serial.println( sensorValue );
  delay(500);
}

il suo compito, in questa fase, è di rilevare i valori acquisiti dal sensore di umidità del terreno e scriverli sul monitor seriale in modo che tu possa visualizzarli.

Lo sketch non presenta difficoltà se hai chiari concetti quali la lettura di un pin analogico e l’invio di informazioni al monitor seriale.

Linea 01: definisci il pin a cui hai collegato il sensore di umidità del terreno;

linea 02: imposta una variabile di tipo integer che memorizza il valore letto dal sensore;

linea 05: attiva la comunicazione tra Arduino ed il Monitor Seriale;

linea 06: imposta l’uso del pin Analogico come pin di INPUT;

linea 10: leggi il valore sul pin analogico con il comando analogRead( pin ) e memorizzalo nella variabile sensorValue;

linea 12: scrivi sul monitor seriale il valore letto dal comando alla linea 10;

linea 13: attendi 1/2 secondo tra una letura e la successiva;

Il video test dell’irrigazione arduino con sensore del terreno

Ecco il video del test sul sensore di umidità del terreno per l’irrigazione arduino:

Buona irrigazione !!!


Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/irrigazione-arduino-sensore-terreno.html

59 comments

Vai al modulo dei commenti

  1. Matteo

    Ciao, molto interessante il progetto di irrigazione, perché non continui magari con un sensore per la velocitá del vento ad impulsi pwm?

    1. Mauro Alfieri

      Ciao Matteo,
      non ne possiedo uno, sono indeciso se costruirtelo, acquistato o rimandare questa parte a quando ne possiederò uno 🙂
      Per cosa utilizzeresti il controllo del vento in un impianto di irrigazione? Te lo chiedo xchè ignoro il valore aggiunto di questa informazione, mi sembra più consona in una centralina meteo.

      Mauro

  2. Samuel Zoppo

    Ciao, molto interessante il progetto, hai mai provato a utilizzare il sensore in campo aperto e non solo in vaso? se il sensore dovesse essere messo diciamo ad una distanza di 50 metri dalla scheda Arduino secondo te sarebbe meglio aumentare la sezione dei cavetti oppure andare a modificare la lettura dei dati via Sw? grazie mille

    1. Mauro Alfieri

      Ciao Samuel,
      non ho provato in campo aperto, non ho un campo di 50m 🙁
      Il sensore è analogico e invia una variazione di tensione ad arduino, certamente su lunghe distanze i cavi e la loro schermatura fanno la differenza.

      Mauro

  3. francesco

    Ciao, debbo controllare il processo di essiccazione del legno. Il precesso avviene in 4 fasi.
    1) cippatura del legno, il quale viene tagiato a pezzi di circa 3cmx3cm,
    2) essicazione del legno, che all’uscita deve avere una umidita del 12-13%
    3) macinazione del legno tramite mulini a martelli.
    4) dalla segatura ricavata, viene pressato per la la fattibilità del pellet

    L’essicatore, è un tunnel a tre stadi di 20 metri circa lungo,
    dove , il legno passa da una umidita del 40-50% , a 12-13%,
    ho bisogno di effettuare controlli nelle varie sezione del tunnel,
    per fa in modo che il legno non venga essiccato maggiormente
    anche la segatura deve mantenere una umidita costante
    Pensi che Il sensore di umidità del terreno , possa essere utile al mio progetto

    grazie per la tua risposta

    1. Mauro Alfieri

      Ciao Francesco,
      non penso che il sensore di umidità del terreno sia adatto.
      Questo sensore è stato studiato per misurare l’umidità del terreno, per contatto, e con il tuo progetto penso sia più adatto un misuratore di umidità dell’aria.

      E’ importante che tu prenda in considerazione due fattori:

      – temperatura dell’essiccatoio, i sensori usati per hobby sono limitati come range di temperatura di funzionamento
      – la precisione di tali sensori

      Mauro

  4. sergio

    Salve Mario,
    volevo chiederti, conosci un sensore di Densità, si uno di quei sensori che immerso in un fluido , liquido, melma o quello che ti pare, mi dia appunto un valore in base alla densità ?

    Sto impazzendo ma non so dove reperirlo o se posso in qualche modo ovviare alla situazione.

    Grazie

    1. Mauro Alfieri

      Ciao Sergio,
      purtroppo non ne conosco, potresti chiedere a qualche negozio on-line tipo robot-domestici o simili.

      Mauro

  5. Vincenzo

    Ciao Mauro, mi sto avvicinando per la prima volta ad Arduino. Mi interessa questo tuo post in particolare, infatti mi chiedevo se posso progettare uno strumento di monitoraggio completo con arduino uno + sensori sonda temperatura, sonda umidità e sonda luminosità il tutto con sistema wifi, che sia in grado di rilevarmi la temperatura e l’umidità nel suolo all’interno di una serra ed inviarmi i dati su internet collegandosi tramite la mia rete Wifi, in questo modo posso tener traccia costante dei dati rilevati umidità, temperatura del suolo es. a 10 cm di profondità, temperatura ambiente, e sensore di luminosità all’interno della serra. Puoi consigliarmi i vari componenti necessari per poter progettare il tutto? Grazie in anticipo per la tua risposta.
    Vincenzo.

    1. Mauro Alfieri

      Ciao Vincenzo,
      il tuo progetto é interessante ed io stesso sto realizzando su commissione un progetto simile.
      I sensori esistono e li trovi tutti sul sito robot-domestici da cui ho recentemente eseguito un ordine proprio per questo progetto.

      Se avrai pazienza di attendere la descrizione di quei sensori sul blog potrai non solo sapere quali siano ma anche vederli in prova.

      Dovrai poi solo mettere insieme gli sketch e scrivere la parte WiFi.
      Un suggerimento: alcuni sketch sul WiFi li trovi già nel blog.

      Mauro

  6. Vincenzo

    Ti ringrazio, attendo allora un tuo aggiornamento nel blog. 😉

    1. Mauro Alfieri

      Ciao Vincenzo,
      sicuramente qualche articolo lo scriverò sull’argomento, non so anticiparti tra quanto tempo.

      Mauro

  7. clelia

    Salve Mauro,
    sto sviluppando un prodotto per l’università: si tratta di un igrometro che invia delle informazioni circa l’umidità del terreno, attraverso segnali luminosi. Vorrei avere un suggerimento per la scrittura del codice, per definire la variazione del colore del led RGB in funzione della percentuale registrata dall’igrometro.
    Hai qualche suggerimento?
    Grazie mille, aspetto tue notizie.

    Clelia

    1. Mauro Alfieri

      Ciao Clelia,
      ho acquistato da poco una sonda per la misura dell’umidità del terreno dal sito robot-domestici.it che conto di testare nei prosismi giorni e scrivere un tutorial in merito.
      Sul controllo di led RGB trovi tanti tutorial sul blog da cui prendere spunto, non ti resta che definire come vuoi che vari il colore del led in funzione dell’umidità del terreno.

      Mauro

  8. Clelia

    Grazie Mauro,
    Allora attendo il tuo prossimo tutorial.
    Grazie mille!

  9. Dario

    Salve Mauro,
    mi occupo di costruzioni in legno e di arduino ne sò poco nulla, per questo volevo chiederti se è possibile monitorare a intervalli regolari più sensori via wifi per conoscere l’andamento dell’umidità del legno o sulla superficie del calcestruzzo.
    Mi spiego meglio, volevo far fare una stazione centrale dove venga registrata la variazione di umidità alla base delle pareti in legno ed eventualmente invii un segnale di superamento soglia preimpostato in modo da intervenire se ci fosse un’infiltrazione d’acqua.

    Grazie in anticipo, Dario

    1. Mauro Alfieri

      Ciao Dario,
      così come la descrivi mi sembra un progetto fattibile.
      Poi possono intervenire tanti fattori a complicare il progetto tipo la distanza tra centralina wifi e schede di controllo o interferenze che ti portano a scegliere un sistema di trasmissione differente come il collegamento via cavo o xbee.

  10. Matteo

    Ciao Mauro,
    volevo chiederti, se lo hai provato per un po’ di tempo, quanto e’ resistente e affidabile questo sensore?
    La mia idea e’ di lasciarlo infilzato nel prato per tutto il periodo primavera-estate-autunno (quando occorre irrigare) ma non so se e’ abbastanza resistente o se nel tempo la qualita’ del sensore degrada (es. le bacchette si ossidano, ecc..)
    Un tuo feedback?

    Grazie ciao,
    Matteo

    1. Mauro Alfieri

      Ciao Matteo,
      io l’ho tenuto nel terreno per poco più di un mese ed ha resistito bene alle intemperie.
      Probabilmente i valori rilevati alla fine erano leggermente sfalsati, tuttavia mantenendo delle tolleranze accettabili al fine dell’irrigazione non ho visto variazioni nel funzionamento.

      In alternativa puoi provare il sensore SHT1x che ho provato e usato in alcuni progetti che mi hanno commissionato e oramai sono stati installati mesi fa senza problemi.

  11. Domenico

    Ciao, come principiante nel campo Arduino vorrei dei chiarimenti.
    Non è pericoloso il fatto che l’acqua potrebbe toccare il circuito e quindi mandarlo in corto? Le piogge torrenziali potrebbero causare ciò….

    1. Mauro Alfieri

      Ciao Domenico,
      elettronica ed acqua non vanno molto d’accordo, hai ragione.
      Le due lamine del sensore sono state studiate per essere usate nei vasi dove solitamente le piogge torrenziali non arrivano.
      Se desideri usare sensori in campo aperto ti consiglio l’uso di altri sensori più specifici e protetti elettronicamente, li trovi nel blog.

  12. matteo

    ciao! complimenti per il lavoro! ti volevo chiedere se e come fosse possibile aggiungere un relè in modo da far attivare una pompa quando vengono raggiunti valori determinati di umidità. grazie!

    1. Mauro Alfieri

      Ciao Matteo,
      il relè è facilmente controllabile con un qualsiasi pin arduino digitale.
      Puoi leggere il mio articolo sulla centralina di irrigazione con Arduino.

  13. alessandro

    il sensore di umidita’ che hai usato posso usarlo in un giardino grande o serve un’altro sensore

    1. Mauro Alfieri

      Ciao Alessandro,
      questo tipo di sensore è analogico per cui se il tuo scopo è usarlo con un cavo molto lungo dovrai considerare la perdita che il cavo introduce.
      Inoltre valuta anche la scarsa precisione che puoi ottenere con un sensore di questo tipo.
      Ho recensito altri sensori più idonei all’impiego in giardini di grandi dimensioni.

  14. alessandro

    ma che si possono usare con arduino questi sensori più grandi.se puoi anche mi metti il link della recenzione di questi sensori
    grazie

    1. Mauro Alfieri

      Ciao Alessandro,
      trovi tutto nel blog cercando umidità, terreno, temperatura o simili.

    2. Mauro Alfieri

      Ciao Alessandro,
      leggi questo articolo: http://www.mauroalfieri.it/elettronica/centralina-meteo-arduino-yun.html ho usato un sensore adatto al tuo progetto.

  15. luca

    Ciao Mauro,
    Volevo chiederti io ho un mini orto 5,60*1,80 m ho programmato arduino in modo che l’irrigazione parte tutti i giorni dalle 18 alle 18:30 se mettesi questo sensore di umidità per fare in modo che se il terreno è umido il programma non parta quel giorno andrebbe bene o ne serve piu’ di uno .
    Grazie

    1. Mauro Alfieri

      Ciao Luca,
      questo sensore è più adatto ai vasi in quanto ha una precisione limitata ed è soggetto a ossidazione.
      Per un orto io uso un sensore differente che ho utilizzato in questo progetto: http://www.mauroalfieri.it/elettronica/centralina-meteo-arduino-yun.html
      Sulla posizione direi che puoi usarne uno solo, a meno che tu non abbia un terreno così irregolare da formare pozze d’acqua in alcune zone e siccità in altre.

  16. Ernesto

    ciao Mauro,
    sono interessato tanto a questo articolo, il mio scopo però è anche quello di utilizzare oltre a un sensore di umidità, diversi sensori quali luminosità e temperatura.
    Come potrei fare un collegamento con più sensori su arduino mega? e potrei collegare anche un display dove al fine mi dice tutto sulle condizioni della mia piantina?
    grazie 🙂

    1. Mauro Alfieri

      Ciao Ernesto,
      potenzialmente si, poi dovrai valutare quali sensori e quali collegamenti eseguire.

      1. Ernesto

        ok grazie, l’importante che tutti i collegamenti entrino su Arduino Mega che appunto è anche più grande

  17. Dennis

    Ciao Mauro,
    volevo fare anche io un sistema di irrigazione automatizzato. Mi hanno fatto notare però che il sensore di umidità a lungo andare si arrugginisce. Tu che mi dici del tuo? Conviene più realizzarsi un sensore in acciaio inox?

    1. Mauro Alfieri

      Ciao Dennis,
      questo tipo di sensore a lungo andare perde le sue capacità di rilevazione a causa dell’ossidazione.
      Tuttavia è un prodotto da una decina di euro per cui non puoi pretendere sia eterno.
      Esistono, ed io ne ho recensiti alcuni sul blog, sensori con precisioni differenti, durata maggiore e costo proporzionale.

  18. Angelo

    Ciao complimenti per il sito e per come ti poni, volevo chiederti una cosa riguardante i sensori di umidità terreno io se li collego ( ho 2 modelli) ai 5 volt su arduino il sensore funziona bene anche se al contrario della tua spiegazione e cioè 1023 quando non immerso e 395 tutto immerso nell’acqua, se invece li collego ai 5 volt con sceda ywrobot (power mb v2 3,3 – 5 volt) mi da sempre valori sballati con e senza acqua. Grazie anticipatamente sono gia al primo ostacolo nella cosruzione della mia serra.

    1. Mauro Alfieri

      Ciao Angelo,
      da quello che mi descrivi non hai i miei stessi sensori, potrebbero funzionare in modo completamente differente per quello che so sui sensori.
      La scheda di cui mi parli potrebbe essere una interfaccia di tipo seriale o i2c, sono solo ipotesi.
      Dovresti segnalare il problema al produttore e chiedere se esistono degli esempi di codice adatti alla tua versione dei sensori.

      1. Angelo

        Innanzitutto grazie per la risposta repentina, io poi dopo il messaggio qui feci delle prove e misi il gnd dell’arduino sulla ywrobot poi alimentando sempre i sensori umidita e anche provando con rtc funzionano. Il gnd di arduino va sempre messo sull alimentazione esterna o e un errore che sto commettendo io?? vorrei allegae delle foto per spiegarmi meglio scusa per il mio linguaggio non preciso.

        1. Mauro Alfieri

          Ciao Angelo,
          da come scrivi immagino tu non sia italiano, non preoccuparti per il linguaggio, faccio un po’ fatica ma cerco di capire cosa stai provando.
          Come ti ho scritto il Gnd, in italiano “comune” deve essere collegato insieme per tutti i componenti del progetto.

          1. Angelo

            Ciao Mauro,
            Sono italiano di napoli e solo che non conosco i termini tecnici dell elettronica. Cmq io i sensori li ho presi da omega2000 il quale mi ha scritto che devo controllare lo sketch. Scusa il fastidio

          2. Mauro Alfieri

            Ciao Angelo,
            comprendo le difficoltà tecniche.
            Prova a seguire il consiglio del venditore.

  19. nicola

    Ciao,
    senza dubbio sono simpatici gli esperimenti. Ma in un utilizzo reale è praticamente impossibile correlare la resistenza rilevata da quella sonda con la quantità di acqua presente nel substrato. Ci sono troppe criticità e fonti di errore.

    1. Mauro Alfieri

      Ciao Nicola,
      concordo con la tua affermazione, si tratta di sensori amatoriali ad uso hobbystico per loro natura non lineari e non dotati di circuiti di controllo e calibrazione autonomi.

  20. Marco

    Ciao Mauro,
    Nel caso volessi utilizzare dei sensori da installare nel prato, quale consiglieresti?

    1. Mauro Alfieri

      Ciao Marco,
      che tipo di sensori vorresti installare?
      Hai già i valori di range entro cui devono operare, la precisione ed il tipo di dato che ti occorre?

      Prova a cercare nel blog “sensore temperatura e umidità terreno” ne ho recensiti ed utilizzati diversi in questi anni.

  21. Stilinski

    dove trovo il datasheet del sensore?

    1. Mauro Alfieri

      Ciao Stilinski,
      hai già provato inserendo la sigla del sensore in Google?

  22. Davide Cozzolino

    Salve, volevo sapere se nello sketch potevo inserire i valori letti dal monitor seriale e se li posso usare per far accendere o spegnere un led un esempio tipo se il valore e superiore a 500 accendi il led altrimenti sepgni led grazie in anticipo per una sua risposta. cordiali saluti

    1. Mauro Alfieri

      Ciao Davide,
      i valori che leggi sul monitor seriale sono generati da arduino, quindi già presenti nello sketch, dovrai impostare un controllo con il comando “if” ed una soglia per l’accensione del led.
      Ti consiglio di leggere il mio corso base arduino gratuito on-line.

  23. Remo

    Buonasera,
    Come faccio a leggere diversi gradi di salinità dell’acqua. Sto utilizzando due semplici viti in acciaio come sensore e per ora riesco a leggere diversi valori solo se sono in aria o in acqua, non con diverse salinità. Cordiali saluti

    1. Mauro Alfieri

      Ciao Remo,
      prova a leggere la’rticolo sul sensore EC di Paolo Bonelli, lui spiega molto bene questo aspetto e come tarare il sensore.

  24. Gaetano

    Salve, sto facendo delle rilevalazione di umidità del terreno con un sensore economico, ogni 2h. Arduino e collegato tramite un trasformatore 12v alla rete elettrica. Ho notato che alle 16.00 ho un picco di umidità, assolutamente immotivato, ed alle 04.00 ho una caduta della stessa sempre immotivata dalle condizioni climatiche. Potrebbe la variazione di tensione sulla rete nazionale influenzare la lettura dell’umidità?

    1. Mauro Alfieri

      Ciao Gaetano,
      mi sembra strano che tu abbia un caduta o variazione di tensione sempre ai medesimi due orari, sarebbe interssante poter monitorare, con uno strumento affiancato all’arduino la tensione che arriva all’alimentatore e quella che arriva poi all’arduino.
      In generale problemi di tensione possono causare rilevazioni errate, tuttavia è pur vero che i sensori economici sono altamente inaffidabili 🙂

  25. Vittorio

    Buonasera Mauro, prendendo spunto dai suoi progetti in merito all’irrigazione volevo realizzare un mio progetto ma essendo alle prime armi mi sono imbattuto in un dubbio a cui non trovo soluzione. Il problema è il seguente:
    Il programma (molto semplice) legge il valore dato dal sensore di umidità del terreno e nel caso in cui sia minore di 300 attiva la pompa fino a quando il sensore restituisce il valore di 450 (terra ottimale).
    Non riesco a fare questo ciclo che esprime il “fino a quando”. Ho provato con questo:

    If (valoresensore =450)
    {
    digitalWrite (pompa, HIGH);
    AnalogRead (sensore);
    }
    }

    Cosa ne dice, può funzionare? Oppure cosa consigli?
    Grazie mille

    1. Mauro Alfieri

      Ciao Vittorio,
      ci sono due errori concettuali in quello che affermi e che scrivi:
      1. quello che hai scritto non è un ciclo: l’if è una condizione non un ciclo;
      2. se ti basi sulla lettura del sensore per fermare la pompa rischi di annegare la pianta;

      Il primo puoi correggerlo studiando le basi del codice arduino e le mie lezioni arduino gratuite online;
      Il secondo è dettato da un errore di logica per la quale il ritardo di lettura del sensore causa l’eccessiva inondazione della pianta per cui devi procedere con un ragionamento differente:

      1. misuro meno del valore ottimale -> faccio partire la pompa per un tempo definito;
      2. attendo che il terreno assorba in modo uniforme l’acqua;
      3. misuro, nuovamente, il valore -> valuto la differenza dal precedente -> regolo il tempo di apertura della pompa;
      4. attendo che il terreno assorba in modo uniforme l’acqua;
      5. misuro, nuovamente, il valore -> valuto la differenza dal precedente -> regolo il tempo di apertura della pompa;

      così fino a raggiungere il valore ottimale.

  26. Vittorio

    Chiedo scusa e correggo il messaggio postato poco fa. Ho fatto un errore di trascrizione. Il codice usato da me è il seguente:
    If (valoresensore=450)
    {
    digitalWrite (pompa,HIGH);
    AnalogRead (sensore);
    }
    }

    E così cosa dici?

    1. Mauro Alfieri

      Ciao Vittorio,
      una delle semplici due regole del blog è:
      NON incollare sketch nei commenti, descrivi il tuo problema.
      Lo trovi in fondo ad ogni articolo, basta leggere e c’è un motivo se ho introdotto tale regola.

  27. Vittorio

    Signor Mauro, inviando il messaggio mi viene cancellata una parte di codice che scrivo. Posso inviarglielo in altro modo?

    1. Mauro Alfieri

      Ciao Vittorio,
      come già scritto in precedenza è per questo motivo che esiste la regola:

      NON incollare sketch nei commenti, descrivi il tuo problema.

Lascia un commento

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

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>