A partire da oggi nuovo: sensore di umidità del terreno

Ciao a tutti,

Oggi vorrei presentarvi un nuovo sensore che abbiamo nel nostro negozio da oggi. Il nostro Hygrometer Capacity V1.2

Questo modulo funziona in modo Capacity, cioè a differenza del modello precedente, non c'è corrosion e da processi galvanic i.L'uscita di questo sensor e è analogica, cioè anche se supporta i controller 3.3V, non può essere letta da un lampone che non ha input analogici.In linea di principio, questo modulo di sensore non è adatto solo per misurare l'umidità nel substrato, ma anche per la visualizzazione di un livello di riempimento.Prima di utilizzare il sensore in modo produttivo, il nostro schizzo deve essere calibrato ai rispettivi valori.

Per il nostro esempio di applicazione usiamo una NanoV3.E un bicchiere d'acqua invece di un vaso di fiori, perché l'umidità del substrato non può essere cambiata facilmente come il livello di un vetro.I Libri non sono necessari.

La Pine Layout:

NanoV3 Sensore
5V VCC
RNL RNL
A0

Fuori.

 

Cominciamo con l'avvio più semplice, l'esempio AnalogReadSerial che è già integrato nell'IDE: Esempi > Basics > AnalogReadSerial

e ricevere il seguente output nel monitor seriale:

nel plotter seriale sembra un po'più attraente, ma non è ancora ideale:

Usiamo il Tutorial di Smoothing su Arduino.cc, qui il codice:

 

/*
 Liscio.

 creato 22 aprile 2007
 di David A. Mellis <dam@mellis.org>
 modificato 9 aprile 2012
 di Tom Igoe

 Questo codice esempio è di dominio pubblico.

  http://www.arduino.cc/en/Tutorial/Smoothing
*/

to int Numero = 10;

int letture[Numero];      // le letture da input analogico
int readIndex = 0;              // indice della lettura corrente
int totale = 0;                  // il totale in esecuzione
int media = 0;                // la media

int inputPine = A0;

vuoto setComment() {   Serial.Inizio(9600);   per (int seReading = 0; seReading < Numero; seReading++) {     letture[seReading] = 0;   }
}

vuoto Esecuzione() {   /sottrarre l'ultima lettura:   totale = totale - letture[readIndex];   // leggi dal sensore:   letture[readIndex] = analogico(inputPine);   // aggiungere la lettura al totale:   totale = totale + letture[readIndex];   // avanzare verso la posizione successiva nell'array:   readIndex = readIndex + 1;   Se siamo alla fine della serie...   se (readIndex >= Numero) {     avvolgere intorno all'inizio:     readIndex = 0;   }   // calcolare la media:   media = totale / Numero;   Serial.Stampa(media);   ritardo(1);        // ritardo tra letture per stabilità
}

 

Dopo aver caricato il codice, l'output ottico è un po'più piacevole:

Quindi scopriamo che il vetro vuoto produce valori intorno al 792.Quindi abbiamo determinato il valore piu'alto.Ora determineremo il valore piu'basso immergendo il nostro sensore in acqua fino ad un'altezza che avete impostato.

La profondità di immersion e, cioè l'altezza del livello nel vetro/substrato deve sempre rimanere la stessa per i confronti, abbiamo scelto il punto di v1.2 come marcatore.E ottenere i seguenti valori:

Quindi il bicchiere intero fornisce circa 419.Ciò significa che ci stiamo muovendo in una zona di 792-419.Si assicuri di effettuare questa taratura nel mezzo che si desidera utilizzare più tardi, in quanto i valori variano a seconda del substrato.

Dal momento che questo sensore è così versatile, sono possibili diversi substrati, le piante hanno preferenze diverse e non possiamo stimare la vostra scala offriamo codice a questo punto che abbiamo già nel nostro AlcoTest hanno mostrato:

 

se (media >= 0 e media <= 400) {     Stato = Malfunzionamento del sensore?;   }   e se (media >= 400 e media <= 500) {     Stato = assetato!;   }   e se (media >= 500 e media <= 649) {     Stato = Umidità!;   }   e se (media >= 650 e media <= 800) {     Stato = Patschnass!;

 

C'è una custodia per auto-stampa gratuita, troverai i file richiesti QUI.

Divertiti a provare e sperimentare, forse troverai un lettore fedele che vuole fare un bicchiere intelligente, che mostra al barista il livello dei suoi ospiti. :) Fino al prossimo post

 

 

ProduktvorstellungenSensori

6 Kommentare

Murphy

Murphy

The sensor is said to be version 1.2 but there are differences from other 1,2 version available directly from china market. On the AZ_Delivery sensor, the LDO (U2) seems to be replaced by diode. There is not schematic offered on the web site :(

When supplied with 3.3V, sensor did not provide any output voltage (NE555 is requiring 5V supply). When supplied with 5V, sensor provide 4V on its output as dry (less voltage, when wet) . For 3.3V controllers (like ESP32) this can be fatal!

I have found (as possible solution) resistor of 100 Ohms in series to the 5V power pin is dropping the voltage over the sensor and impacting the sensor output voltage in positive way (3V as dry, less when wet) . This allows to work safely with ESP32 microcontrollers.

Samira

Samira

Hallo,
danke für Ihre nutzbare Aufgabe. Ich möchte diese Aufgabe mit STM32 und HAL_Drive schreiben. Wie kann ich letzten Teil schreiben? Wie kann zeigt , der Boden Nass ist oder trocken?
Viele Grüße
Samira

Dennis

Dennis

Wenn ich den Sensor in das Wasser tauche und den Beispielcode “AnalogReadSerial” ausführe, liefert mir der Monitor lediglich Werte zwischen 0 und 13. Was mache ich falsch?

Klaus

Klaus

sehe ich auch so wie Ralf.

Gruß
Klaus

Lucas

Lucas

Dringt von den (Schnittkanten der Platine) kein Wasser in den Sensor ein?

Ralf

Ralf

Hallo,

sind eure Werte für die Feuchtigkeit nicht verdreht, Müßte nicht zwischen 400 und 500 Patschnass und zwischen 650 und 800 Pflanzen haben Durst sein.

Gruss
Ralf

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Post di blog consigliati

  1. Installa ESP32 ora dal gestore del consiglio di amministrazione
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - Programmazione ESP tramite WLAN