Arduino e il sensore FC-28. In mezzo il modulo con potenziometro (Controllare l'umidità del terreno con Arduino)

Controllare l’umidità del terreno con Arduino e il sensore FC-28

5
(1)

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.

(Controllare l'umidità del terreno con Arduino) Arduino e il sensore FC-28. In mezzo il modulo con potenziometro
Arduino e il sensore FC-28. In mezzo il modulo con potenziometro

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

Il sensore FC-28 interrato (Controllare l'umidità del terreno con Arduino)
Il sensore FC-28 interrato

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

Votalo e aiutami a migliorare!

Rating medio 5 / 5. Numero di voti 1

Nessun voto per il momento, vuoi essere il primo?

Clicca sul tuo social preferito.

Cosa ho sbagliato?

Hai qualche consiglio per migliorare la qualità?

5 commenti

  1. 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

      1. 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!

        1. 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!

Cosa ne pensi? Fammelo sapere con un messaggio

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.