Skip to content
logo9minuti120x48
Menu
  • Home
  • Tutorial
    • Zaini
    • Stampa 3d
    • ebook
    • Informatica
  • Scritti
    • Racconti
    • Articoli
    • Temi
    • Storia
  • Video
  • Progetti
    • Progetto Carcere
    • Progetto Istruzione
    • Progetto Acque pulite
    • Progetto Tecnologia
  • Chi siamo
    • LinkTree
  • Privacy Policy
    • Cookie Policy (EU)
  • Blog
  • Donazioni
Menu
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

Posted on 24 Giugno 201815 Settembre 2019 by Alessandro Oppo

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

Dammi un 5 virtuale, clicca like e condividi.

  • Fai clic qui per condividere su LinkedIn (Si apre in una nuova finestra)
  • Fai clic per condividere su Facebook (Si apre in una nuova finestra)
  • Fai clic qui per condividere su Twitter (Si apre in una nuova finestra)
  • Fai clic qui per condividere su Reddit (Si apre in una nuova finestra)
  • Fai clic per condividere su WhatsApp (Si apre in una nuova finestra)
  • Fai clic per condividere su Telegram (Si apre in una nuova finestra)
  • Fai clic per inviare un link a un amico via e-mail (Si apre in una nuova finestra)

Related

5 thoughts on “Controllare l’umidità del terreno con Arduino e il sensore FC-28”

  1. CLAUDIO ha detto:
    16 Maggio 2019 alle 7:32 pm

    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

    Rispondi
    1. Alessandro Oppo ha detto:
      16 Maggio 2019 alle 8:03 pm

      Ciao Claudio, grazie per essere passato sul mio sito. Hai copiato e incollato il codice dell’articolo o lo hai modificato? Fammi sapere

      Rispondi
      1. CLAUDIO ha detto:
        16 Maggio 2019 alle 9:38 pm

        … nessuna modifica!

        Rispondi
      2. CLAUDIO ha detto:
        16 Maggio 2019 alle 9:47 pm

        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!

        Rispondi
        1. Alessandro Oppo ha detto:
          16 Maggio 2019 alle 10:31 pm

          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!

          Rispondi

Cosa ne pensi? Fammelo sapere con un messaggio Annulla risposta

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

Scoprici sui social

  • YouTube
  • Telegram
  • Facebook
  • RSS Feed

    Ultimi post

    • Buzzurretto e la scuola – Racconto breve
    • Il mio punto di vista sul progetto scuola
    • Di nuovo nuvole – Racconto breve
    • L’intelligenza artificiale, la forza della logica e la morale – ChatGPT
    • Videogrep, how to extract a certain word from a video (or more)
    • Brucerò tutto non appena è stato scritto – Racconto breve
    • C’è del lavoro da fare – Racconto breve

    Newsletter

    ©2023 9minuti | Design: Newspaperly WordPress Theme
    Manage Cookie Consent
    Usiamo cookie per ottimizzare il nostro sito web ed i nostri servizi.
    Cookie funzionali Sempre attivo
    The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
    Preferences
    The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
    Statistics
    The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
    Marketing
    The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
    Gestisci opzioni Gestisci servizi Gestisci fornitori Per saperne di più su questi scopi
    Visualizza preference
    {title} {title} {title}
     

    Caricamento commenti...