Controllare l’umidità del terreno con Arduino è veramente semplice e oggi vedremo il terzo sensore da utilizzare per il nostro giardino.
Il sensore si chiama FC-28 e può differire leggermente nell’estetica. Il mio, ad esempio, ha delle scritte in cinese sopra e nessuna sigla.
Il sensore è composto da due parti, un PCB biforcuto ed un modulino su cui è montato un potenziometro (il parallelepipedo blu), ovvero una resistenza variabile.
I collegamenti da fare per controllare l’umidità del terreno con Arduino.
Dal sensore al modulino (in realtà un pin vale l’altro in questo caso).
– (simbolo meno) – GND del modulino
l’altro polo (non ci sono simboli) – l’altro pin libero del modulino
Dal modulino ad Arduino:
VCC – 5V
GND – GND
AO (Analog Output) – A0 (Analog zero)
Lo sketch
Si tratta di un programma molto semplice e che altro non fa che leggere da una porta analogica (la A0).
//analog read 9minuti.it #define pinSensor 0 int sensorValue; void setup() { Serial.begin(9600); } void loop() { sensorValue = analogRead(pinSensor); Serial.print("Valore: "); Serial.println(sensorValue); delay(1000); }
3 La #define ci serve per avere indicare il pin 0 con un nome, in questo caso pinSensor
4 Dichiarazione variabile di tipo intero chiamata sensorValue
8 Inizializzazione della porta seriale con baud rate 9600
13 Salviamo il valore analogico letto sul pin pinSensor nella variabile sensorValue
15-16 Stampa dei valori
18 Delay di 1000ms (1 secondo) tra una lettura e l’altra
Una volta caricato lo sketch, per leggere i valori del nostro sensore bisogna aprire il Serial Monitor.
Se l’umidità è bassa (fuori dalla terra dovrebbe essere intorno a 1000) i valori dovrebbero essere alti, mentre mano a mano che aumenta le letture dovrebbero indicare numeri più bassi.
È consigliabile fare qualche prova girando la vite del potenziometro (il parallelepipedo blu) per una calibrazione ottimale del sensore.
Nel caso voleste ottenere un valore da 0 a 100 è disponibile la funzione map che ci consente di ridimensionare i nostri valori nel range di numeri che preferiamo.
Per far ciò è sufficiente incollare questo codice dopo la riga 13.
sensorValue = map(sensorValue, 0, 1023, 0, 100);
Spero che questo tutorial sia stato d’aiuto, rimango a disposizione per domande o chiarimenti.
Grazie,
Alessandro
Ciao Alessandro,
ho inserito il codice dopo la riga 13, ma non riesco a correggere questo errore
expected primary-expression before ‘<' token
grazie e complimenti per il tuo lavoro
claudio
Ciao Claudio, grazie per essere passato sul mio sito. Hai copiato e incollato il codice dell’articolo o lo hai modificato? Fammi sapere
… nessuna modifica!
per tarare la scala da 1 a 100 ho comunque immerso il sensore in acqua e al valore di 380 ho assegnato il valore 100, mentre con il sensore fuori dall’acqua il valore rilevato è 1023 ed ho assegnato il valore 100 … quindi map!
Ho finalmente visto l’errore. Il codice per la funzione map aveva all’interno degli altri codici legati al sito web. Ora ho corretto, ti riporto comunque la funzione anche qui.
sensorValue = map(sensorValue, 0, 1023, 0, 100);
fammi sapere se ti funziona!