Vochtigheidsmeter YL-38 met meetvork

YL-38
Deze vochtigheidsmeter werkt bijzonder goed. Je kunt hem in een bloempot steken zodat je kunt meten hoe vochtig de grond is. Als je alleen wilt weten of de pant water nodig heeft dan heb je geen Arduino nodig. Op de interface zijn twee ledlampjes geplaatst. Een geeft aan dat de module aan staat, de andere dat de vochtigheid boven een bepaalde drempel zit. De interface heeft ook twee uitgangen: een digitale en een analoge. De digtale schakelt bij een bepaalde vochtigheid. Je kunt het schakelmoment instellen met de knop op de interface. De analoge uitgang geeft een spanning die lager wordt naarmate de sensor droger is. Om de module met de Arduino te kunnen gebruiken heb je twee opties: digitale pin of analoge pin. Je mag deze opties ook gelijktijdig gebruiken. In het voorbeeldprogramma hieronder doe ik dat. De uitlezing wordt omgerekend naar een percentage vochtigheid. Voor gebruik in het echt is de Seriële monitor niet handig, maar zou je de vochtigheid bijvoorbeeld kunnen weergeven met de kleur van een ledlampje (groen = vochtig, oranje = attentie, rood = te droog). Bedenk echter dat een Arduino vrij veel stroom gebruikt dus als je batterijen gebruikt moet je de Arduino steeds uit zetten. Sluit de digitale uitgang van de module aan op pin 2 en de analoge op pin A0 en gebruik de interne led op poort 13 of sluit daar een eigen led op aan. Controleer door een vochtige doek tegen de sensor te duwen of de sensor reageert zoals verwacht.
void setup() {
  pinMode(13, OUTPUT); 
  pinMode(2, INPUT);
  Serial.begin(9600); digitalWrite(13, LOW);
}

void loop() {
  Serial.print("Vochtigheid: ");
  Serial.print(100.0 - 100.0 * analogRead(A0)/1024, 0); // Keer aflezing om
  Serial.println(" %");
  digitalWrite(13, digitalRead(2)); // Niet vochtig genoeg = AAN
  delay(200);
}
Ik heb hier de digitale pin gebruikt voor het schakelmoment, maar als je toch de analoge uitgang gebruikt dan kun je natuurlijk net zo goed een eigen drempel instellen.

Regenmeter

Links: interface
Rechts: sensor
Ik testte een regenmeter van het type MH-RD. Dit is een makkelijk te gebruiken vochtigheidsmeter, die bestaat uit een sensor en een interface. De interface lijkt sprekend op die van de hierboven beschreven sensor. Ik noem dit een vochtigheidsmeter, omdat het meten van regen eigenlijk niet goed mogelijk is. Zodra er een paar druppels op de sensor zijn gevallen zal hij vocht aangeven totdat de sensor weer droog is. Ik kan me voorstellen dat je hem in een bloempot steekt en dagelijks kijkt of de plant al water moeten krijgen. De interface heeft twee uitgangen: een digitale en een analoge. De digitale maakt er een schakelaar van: hoog als de sensor droog is en laag als de sensor nat is. De waarde waarbij hij schakelt kun je instellen met de regelbare weerstand op de interface.
Als je de sensor alleen als schakelaar wil gebruiken, bijvoorbeeld in een bloempot, dan kan dat ook zonder Arduino. Sluit een batterij van ca 5 volt aan op GND en VCC. Als het ledje op de interface uitgaat dan is de sensor nat. Als je het andersom wil (led aan als de sensor droog is), sluit dan een ledje aan tussen de digitale pin op de interface en aarde.
Normaal zul je de analoge uitgang gebruiken. Aansluiten op de Arduino is heel gemakkelijk: VCC aan de 5V van de Arduino en GND aan GND. Sluit de analoge uitgang A0 van de sensor op de anloge ingang A0 van de Arduino. Als de sensor droog is dan is de weerstand van de sensor hoog en dat geeft een maximale uitgang van 5 volt. Je leest dan de waarde 1023 af. Naarmate de sensor natter wordt zal de weerstand zakken en daarmee de uitgelezen spanning. Omdat de sensor niet geijkt kan worden heb ik in het voorbeeldprogramm hieronder alleen een globale indicatie van de vochtigheid gegeven. De sensor is makkelijk te testen met een bloemenspuit, of door een klamvochtig doekje erop te drukken.
Over het programma: ik gebruik hier een switch statement. Dat is overzichtelijker dan if-statements. Zoals je hier ziet, kun je in een switch statement ook een range van waarden opgeven. Daarvoor gebruik je de drie puntjes.
void setup() {
  Serial.begin(9600);
}

void loop() {
  int Nat = analogRead(A0);
  switch ( Nat ) {
    case 0 ... 255: Serial.println("Erg nat"); break;
    case 256 ... 511: Serial.println("Nat"); break;
    case 512 ... 767: Serial.println("Een beetje nat"); break;
    case 768 ... 999: Serial.println("Droog"); break;
    case 1000 ... 1023: Serial.println("Helemaal droog"); break;
  }
  delay(500); // Doe twee metingen per seconde
}