ARDUINO
Soil moisture sensor

ultimo aggiornamento 4 dicembre 2018


JLCPCB - 2$ per prototipi di PCB, di qualsiasi colore. Produzione in 24 ore!
L'Azienda di prototipi PCB più popolare, con oltre 700.000 clienti in tutto il mondo!
Recati presso la JLCPCB, riceverai regali e coupon gratuiti
presso Maker Faire Rome il 18-20 ottobre


Indice

Descrizione

Questo sensore è denominato "Moisture Sensor" ovvero sensore di umidità , in questo caso non l'umidità dell'aria come per esempio con un sensore DHt11, ma l'umidità del terreno.
Il sensore si può usare, per esempio, per misurare l'umidità nel terreno delle piante, per poi procedere ad innaffiarle, magari con un sistema automatico comandato da Arduino

Il modulo sensore è venduto dalla ICstation.com con codice 3274 (Soil Hygrometer Humidity Detection Module Moisture Sensor Water Detector Board for Arduino). Il costo si aggira sui 1,5€

 

OurPCB, your most reliable PCB and PCBA supplier.

Focusing on PCB Prototype and PCB Assembly Turnkey Services.

One-Stop Wire Harness & Cable Assemblies Solution

Nel caso di siccità, un segnale di allarme potrebbe quindi essere emesso o una pompa elettrica di un impianto automatico d'irrigazione attivata automaticamente.
Il funzionamento è semplice, ai due contatti del sensore è collegato ad una tensione, tanto maggiore è l'umidità tra i due contatti, tanto minore sarà la resistenza, permettendo alla corrente di fluire da un contatto verso l'altro.
Questo valore viene elaborato elettronicamente nel sensore e trasmesso sotto forma di un segnale analogico ad un ingresso analogico della scheda. In questo caso la scheda, non misura la tensione elettrica come tale, ,a converte il segnale analogico presente in ingresso in un valore numerico.
Per cui una valore da 0 a 5 volt corrisponde a un valore numerico da 0 a 1023 (1024 valori, poiché lo zero è considerato come il primo numero).
Nel nostro caso, quando il sensore di umidità, è completamente  immerso in acqua il valore numerico sarà circa 700.
Una calibrazione accurata dipende tuttavia dal sensore e dal tipo di liquido che viene misurato, per esempio l'acqua leggermente salata ha una migliore conducibilità e il valore sarebbe corrispondentemente più elevato.

Sensore in aria: valore= 0
Sensore in terreno asciutto: 0 <valore <300
Sensore nel terreno umido: 300 <valore <700
Sensore in acqua: valore ~700

NOTA: per via del tipo di funzionamento del sensore si ricorda che se si vuole prolungare la vita al sensore umidità del suolo, occorre ridurre il processo di corrosione.
Un metodo è quello di non collegare direttamente l'alimentazione del sensore a VCC ma ad un pin digitale e quindi fornire l'alimentazione di 5V quando si vuole effettuare la lettura rapida, e poi spegnerlo.
Se avete costantemente il sensore di umidità del terreno alimentato questo si corroderà nel corso del tempo, e più acqua si trova nel vostro terreno, più veloce questo processo accadrà.

 

Caratteristiche

Alimentazione:

3.3V o 5V

Corrente di funzionamento:

meno di 20mA

Tensione di uscita: 

0-2.3 V [2.3V è completamente immerso in acqua]

Tipo sensore:

uscita analogica

Imballaggio:

 sacchetto sigillato antistatico

Dimensioni del modulo

20X60mm

Schema elettrico del sensore

Schema realizzato con EasyEDA: Un servizio per il disegno di circuiti e la loro simulazione, progettazione e produzione di PCB. Provalo è gratuito!

 

Schema del circuito di prova

Per testare il sensore si utilizzano i seguenti componenti

Arduino UNO Soil moisture sensor
Cavetti per Breadboard di vari colori KY-019 5V relay module

I pin utilizzati sono i seguenti

Pin +5V Alimentazione relè
Pin GND GND sensore e relè
Pin Analogico A0 Uscita sensore
Pin Digitale 2 Relè
Pin Digitale 3 Alimentazione Sensore

Programma di prova

Il programma attiva un relè a cui può essere collegata una pompa oppure un'elettrovalvola per irrigare per esempio dei vasi quando siete in vacanza. L'attivazione viene fatta in base alla lettura dell'umidità del terreno eseguita da un sensore dotato di due terminali, in base alla conducibilità del terreno, in valore analogico in uscita varia.  Impostando la soglia il relè viene eccitato.
Per evitare problemi di corrosione, i sensore non è costantemente alimentato, ma questo viene fatto attivando il pin digitale D3.

Programma 
Schema circuito di prova

 

/*
  Attivazione_pompa.ino
  Il programma attiva un rele' a cui può essere collegata una pompa
  oppure un'elettrovalvola per irrigare per esempio dei vasi quando siete in vacanza.
  L'attivazione viene fatta in base alla lettura dell'umidità del terreno eseguita
  da un sensore dotato di due terminali, in base alla conducibilità del terreno,
  in valore analogico in uscita varia.  Impostando la soglia il relè viene eccitato.

  Sono utilizzati i seguenti pin
  Pin +5V           -> Alimentazione rele'
  Pin GND           -> GND sensore e relè
  Pin Analogico 0   -> Uscita sensore
  Pin Digitale 2    -> Rele'
  Pin Digitale 3    -> Sensore

  Creato il 22/1/2017 da Adriano Gandolfo
  Sito web https://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

int lettura = 0; // Pin analogico a cui è collegato il sensore
int pompa = 2; //Pin a cui è collegato i rele' per attivare al pompa
int sensore = 3; //Pin di alimentazione del sensore

void setup()
{
  Serial.begin(9600);
  pinMode (pompa, OUTPUT); // Imposta il pin 2 POMPA come uscita.
  pinMode (sensore, OUTPUT); //Imposta il pin 2 SENSORE come uscita.
}

void loop()
{
  digitalWrite(sensore, HIGH); // Accende sensore
  lettura = analogRead(A0);
  Serial.print("Valore umidita':");
  Serial.println(lettura);
  if (lettura < 200 ) //inizia la lettura:
                      se il valore del sensore è inferiore a "200", allora...
  {
    digitalWrite(pompa, LOW); //... attiva la pompa - LOGICA INVERTITA
  }
  else //..altrimenti...
  {
    digitalWrite(pompa, HIGH); //...disattiva la pompa  - LOGICA INVERTITA
  }
  digitalWrite(sensore, LOW); // Spegne sensore
  delay(1000);
}

Filmato illustrativo

 

Un video pubblicato da Adriano Gandolfo (@adrirobot) in data:

 

Elenco revisioni

04/12/2018

Aggiornato pagina

28/01/2017

Emissione preliminare