Il sensore di umidità è fatto da una coppia di elettrodi che vengono immessi nel terreno. Se c’è umidità il terreno conduce bene la corrente e quindi c’è bassa resistenza tra i due elettrodi. Il sensore è collegato all’Arduino attraverso il pin 5V di alimentazione, il pin GND di massa ed il pin A0 che legge il valore analogico di corrente del sensore.

Questo esperimento consiste nell’usare la scheda Arduino, un sensore di umidità ed un led per segnalare la scarsa umidità del terreno. Sullo schermo della porta seriale potete leggere i valori del sensore.

Quando il terreno è più arido  la resistenza al passaggio di corrente è più alta  e viceversa. Per far funzionare il piccolo impianto, dobbiamo utilizzare il monitor seriale che ci consente di leggere i valori di tensione misurati dal sensore. Il pin A0 sarà quello a cui collegare il sensore, un pin digitale (9) può essere utilizzato per accendere un led come allarme (potremmo pensare in un prossimo esercizio di collegarci un relè per attivare l’innaffiatore).

Nel ciclo continuo bisogna leggere il valore di tensione A0 (più è basso A0 più è arido il terreno) con il comando AnalogRead() poi dobbiamo visualizzare tale valore sul monitor seriale con il comando Serial.printl() e infine controllare questo valore: se scende sotto un certo valore (per es. 300) verrà acceso il led, altrimenti viene spento. Possiamo fare il controllo ogni 3 secondi usando un comando delay(ms).

Il codice è quindi il seguente:

 

  1. void setup() {
  2. Serial.begin(9600);       // avviamo la comunicazione seriale ed impostiamo il pin9 (quello del LED) come output 
  3. pinMode(9, OUTPUT);   
  4. }
  5. void loop() {
  6. int sensore = analogRead(A0);     // creiamo la variabile intera “sensore” ed assegniamole il valore analogico letto sul pin A0
  7. Serial.println(sensore);                  //  invia il valore sulla seriale e lo si legge sullo schermo del monitor seriale
  8. if (sensore <= 300)                   // adesso confrontiamolo il valore letto con il valore 300 e se è inferiore
  9.     digitalWrite(9,HIGH);               // Accendi led
  10. else
  11.     digitalWrite(9,LOW);                // Se il valore letto su A0 è superiore a 300 spegni led
  12. delay(3000);                                       // 3 secondi di attesa
  13. }

 

Generalmente, valori inferiori a 300 significano terreno asciutto, valori superiori a 700 significano terreno completamente bagnato (fino ad addirittura il caso di sensore in acqua).

  • # 0 ~300 dry soil
  • # 300~700 humid soil
  • # 700~950 in water
Tuttavia tali valori dipendono dalla sensibilità del sensore e da altri fattori ambientali, pertanto spesso a questi sensori viene abbinato una schedina con un circuito di regolazione tramite una resistenza variabile.
Sensore di umidità del suolo di Keystudio.com.
Una azienda straniera molto attiva nella produzione di sensori, kit, preassemblati, schede di pserimentazione è la www.keystudio.com. Il sensore di umidità del suolo è disponibile a questo link: https://www.keyestudio.com/free-shipping-keyestudio-soil-humidity-sensor-for-arduino-p0126.html ed ha le seguenti caratteristiche: tensione Vcc di funzionamento 3.3Volt o 5Volt, corrente di lavoro 20 mA, tensione in uscita tra 0Volt e 2.3Volt. Il valore 2.3Volt massimo di tensione viene prodotto se il sensore è proprio immerso in acqua.
Specification
  • Power Supply Voltage: 3.3V or 5V
  • Working Current: ≤ 20mA
  • Output Voltage: 0-2.3V (When the sensor is totally immersed in water, the voltage will be   2.3V) 5V power supply,the higher humidity, the higher the output voltage
  • Packaging : Electrostatic bag sealing
  • Sensor type: Analog output
  • Interface definition: Pin1- signal, pin2- GND, pin3 – VCC
Di seguito un codice di pochissime righe per testare il sensore (non c’è il led di allarme).
Sample code:
void setup(){
Serial.begin(57600);
}
void loop(){
Serial.print(“Moisture Sensor Value:”);
Serial.println(analogRead(0));
delay(100);
}

Questo è il video del sensore di umidità del terreno prodotto da Keystudio.com

4

1