De Programmeerbare Plantenkas: Grove Moisture Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten

DE PROGRAMMEERBARE PLANTENKAS //  GROVE MOISTURE SENSOR AANSLUITEN EN PROGRAMMEREN OM DE VOCHTIGHEID VAN DE GROND TE METEN

De Programmeerbare Plantenkas: Grove Moisture Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten

In deze tutorial laten we zien hoe je een Grove Moisture Sensor aansluit en programmeert om de vochtigheid van grond te meten met een Arduino microcontroller of een andere microcontroller. Onderaan de pagina vindt je meer informatie over de techniek achter deze sensor.

Aansluiten

Het aansluiten van een Grove Moisture Sensor op een microcontroller is heel eenvoudig. Je steekt simpelweg de ene kant van de bijgeleverde Grove kabel in de sensor en de andere kant in een analoge poort van een Grove Base Shield die aangesloten is op een Arduino microcontroller. In dit voorbeeld is de sensor aangesloten op de A0 poort van een Arduino Mega, met Grove Base Shield.

grove moisture sensoren
Het aansluiten van een Grove Moisture sensor is eenvoudig, je hoeft alleen de Grove kabel in de module en in een analoge poort te steken.

Het deel van de Grove Moisture Sensor dat de vochtigheid van de grond bepaald is ongeveer 3,5 centimeter lang. Om de sensor te plaatsen dus je de twee beentjes van de sensor voorzichtig in de grond, zodat het goudkleurige deel niet meer zichtbaar is, maar de weerstanden en andere onderdelen op het blauwe gedeelte van de sensor wel boven de grond uitsteken. Mocht het zo zijn dat de grond erg hard is, bijvoorbeeld omdat er veel klei in zit, dan is het aan te raden om eerst met een mes een kleine opening in de grond te maken. Op die manier hoef je niet te veel druk op de sensor te zetten als je hem in de grond duwt.

Doordat het deel van de sensor dat de vochtigheid van de grond meet maar 3,5 centimeter hoog is, is deze sensor alleen geschikt om te bepalen of jonge plantjes water nodig hebben. Het deel van het wortelstelsel dat water en voedingsstoffen uit de bodem op neemt ligt bij oudere, grotere planten meestal op een diepte van 20 tot 40 centimeter. Doordat de bovenste grondlaag vaak veel sneller opdroogt dan de diepere grondlaag waarin de meeste wortels van grotere planten groeien is de kans groot dat deze Grove Moisture Sensor te snel aangeeft dat de grond te droog is. Om te voorkomen dat grotere planten te veel water krijgen is het daarom aan te raden om deze sensor niet te gebruiken, maar een sensor te gebruiken waarbij het meetgedeelte dieper ligt.

grove soil moisture sensor
Doordat de Grove Moisture Sensor maar 3,5 centimeter lang is, meet deze sensor alleen de vochtigheid van de bovenste grondlaag.

Programmeren

Het programmeren van een Grove Moisture Sensor is gelukkig zeer eenvoudig. In de voorbereidingsfase geef je allereerst aan op welke analoge pin de sensor zit aangesloten. Dit doe je met het commando #define vochtSensorPin A0 In dit voorbeeld is de sensor aangesloten op de A0 pin. Mocht de sensor in jouw project op een andere pin aangesloten zitten, dan moet je uiteraard de 0 veranderen in het juiste nummer.

In de voorbereidingsfase wordt ook een variabele aangemaakt om de waarde die uit de sensor komt op te slaan. Dit doen we met het commando int vochtWaarde = 0;. Zoals je kunt zien wordt dit een int variabele. Dit is, omdat de vochtigheid in hele cijfers wordt weergegeven.

Om ervoor te zorgen dat het kleine stukje code dat nodig is om de Grove Moisture Sensor te gebruiken makkelijk te combineren is met andere sensors, hebben we een aparte functie gemaakt om de waarde uit de sensor op te halen. We maken deze functie aan met het commando int vochtSensor() {}. In dit voorbeeld heet deze functie dus vochtSensor. Tussen de {}-haakjes zetten we het commando vochtWaarde = analogRead(vochtSensorPin);. Dit commando zorgt ervoor dat de analoge pin waarop de sensor is aangesloten uitgelezen wordt en dat de waarde opgeslagen wordt in de variabele vochtWaarde.

In de loop fase van dit programma geven we het commando vochtSensor(); om de functie die we gemaakt hebben om de Grove Soil Moisture sensor uit te lezen te activeren. Op dit moment doen we nog niets met de waarde die hieruit komt. Er zijn verschillende manieren om de waarde van de sensor te gebruiken. Zo kun je een groen lampje laten branden als de plant geen water nodig heeft en een rood lampje als de plant wel water nodig heeft. 

Volgens Seeedstudio, de makers van Grove sensoren, zal de sensor een waarde van 300 aan geven als de grond vochtig is. Als de waarde onder de 300 ligt, dan is de grond droog en als de waarde boven de 300 ligt, dan is de grond te nat. De exacte waarde waarbij de grond te nat en te droog is, verschilt per grondsoort, dus de juiste waardes vinden vergt altijd een beetje trial-and-error. De meest eenvoudige manier om erachter te komen wat de waardes die uit de sensor komen betekenen, is door de sensor te kalibreren. Dit kun je doen op de manier die op de "De Programmeerbare Plantenkas: Grove Capacitive Moisture Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten" beschreven staat. Voor deze Grove weerstand sensor kun je de wachttijd die in het artikel de capacitieve sensor wordt aangeraden helemaal achterwege laten of inkorten naar een paar minuten. De extreme waardes kun je vervolgens gebruiken om een vochtigheidspercentage te berekenen met het commando vochtPercentage = map([gemeten waarde], [droge waarde], [natte waarde], 0, 100);, zoals ook in het artikel over de capaciteit sensor beschreven staat.

grove moisture sensor
In een droge spons of in droge grond geeft de sensor de waarde 0 aan.
grove moisture sensor
In een vochtige spons of grond geeft de sensor een waarde rond de 300 aan.
grove moisture sensor
Volledig ondergedompeld in water geeft de sensor een waarde rond de 700 aan.

ARDUINO IDE CODE


/*
   Voorbeeld code gemaakt door www.foodplanting.com
   voor de Programmeerbare Plantenkas serie.

   Deze code is gemaakt voor het bepalen van de vochtigheid van de
   bodem met een Grove Moisture Sensor.

   Deze code is zeer minimalistisch, omdat het idee is
   dat deze code gecombineerd wordt met codes voor andere
   modules. Zo wordt de vochtigheid bijvoorbeeld niet in de
   loop fase, maar in een aparte functie op geroepen en
   wordt de gemeten vochtigheid niet in de Serial Monitor
   af geprint.
*/

// Voorbereiding:
#define vochtSensorPin A0  // Dit geeft aan op welke analoge input de sensor is aangesloten, in dit geval A0.
int vochtWaarde = 0; // Een variable om de waarde van de vochtigheid van de bodem in op te slaan.

// Setup fase:
void setup() {
  // In de setup fase hoeft niets te gebeuren
}

// Loop fase:
void loop() {
  vochtSensor(); // Vraag de microcontroller om de functie die de vochtigheid uit de sensor ophaalt uit te voeren.
  delay(60000);
}

//Functie voor vochtsensor:
int vochtSensor() {
  vochtWaarde = analogRead(vochtSensorPin * 0.0049)); // Lees de analoge pin waarop de vochtsensor zit aangesloten uit en vermenigvuldig met 0.0049 om het aantal volts te krijgen.
}

Achtergrond

Een weerstand bodemvochtigheidssensor meet eigenlijk hoe goed de grond stroom geleid. Deze sensoren bestaan uit twee metalen “beentjes”. Deze beentjes zijn de elektroden. De ene elektrode zit vast aan de VCC-aansluiting van de microcontroller en werkt als de positieve elektrode. De elektronen stromen naar deze elektrode toe. De andere elektrode zit vast aan de GND-aansluiting van de microcontroller en werkt als de negatieve elektrode. De elektronen stromen van deze elektrode af. 

bodemvochtigheidssensor, grove soil moisture sensor
De Grove Soil Moisture Sensor is een goed voorbeeld van een weerstand bodemvochtigheidssensor, met twee "beentjes" die de positieve en de negatieve elektrode vormen.

De twee elektroden van een weerstand bodemvochtigheidssensor zijn niet met elkaar verbonden. De grond waarin je de sensor steekt werkt als de verbinding tussen de twee elektrode, en maakt het elektrische circuit dus compleet.

Het idee achter een weerstand bodemvochtigheidssensor is dat de grond een goede stroomgeleider is als deze nat is, en een slechte stroomgeleider als deze droog is. Dat natte grond stroom geleid komt niet door het water dat in de grond zit, maar door de zouten die in de grond aanwezig zijn. Wanneer zouten in contact komen met water, dan vallen ze uiteen in positief en negatief geladen ionen

grove soil moisture sensor, weerstand bodemvochtigheidssensor, geleider
De ionen in de vochtige grond waarin de weerstand bodemvochtigheidssensor wordt gestoken werkt als een geleider, waardoor het elektrische circuit gesloten wordt.

Wanneer er spanning op de sensor wordt gezet dan komen de ionen die in het gebied rondom de twee elektroden zitten in beweging. De negatief geladen ionen trekken naar de positief geladen elektrode. Hier kunnen ze hun extra elektronen afstaan, waardoor ze een neutrale lading krijgen. De positieve ionen trekken naar de negatief geladen elektrode. Hier kunnen deze ionen elektronen op nemen, waardoor ook deze elektronen geneutraliseerd worden.

weerstand bodemvochtigheidssensor, grove soil moisture sensor
De negatief geladen ionen trekken naar de positieve elektrode van de sensor. Hier staan ze een elektron af, die terugstroomt naar de microcontroller.
grove soil moisture sensor, weerstand bodemvochtigheidssensor, geleider
De positief geladen ionen trekken naar de negatieve elektrode van de sensor. Hier nemen ze en electron op, die uit de microcontroller is gekomen.

De positief en negatief geladen ionen zorgen er voor dat er dus een elektronen stroom plaats kan vinden tussen de twee elektroden. De analoge poort van de microcontroller registreert hoeveel van de 5 volt die de weerstand bodemvochtigheidssensor in is gestuurd via de grond weer terug stroomt. Hoe droger de grond is, en dus hoe minder zouten opgelost zijn tot ionen, hoe lager het aantal volt is dat terug stroomt. 

grove soil moisture sensor, weerstand bodemvochtigheidssensor, geleider
De analoge poort van de microcontroller meet hoeveel volt er terug naar de microcontroller stroomt. Hoe meer ionen er zijn opgelost, hoe hoger de spanning is die gemeten wordt.

Eigenlijk ontstaat er een elektrolytische cel wanneer de weerstand bodemvochtigheidssensor in vochtige grond wordt gestopt. Wanneer de sensor is gemaakt van een edelmetaal, zoals goud, dan levert dit weinig problemen op. Weerstand bodemvochtigheidssensoren die gemaakt zijn van andere metalen, zoals koper of ijzer, dan zorgt dit vaak wel voor problemen. Het metaal van de positieve elektrode zal langzaam aan in de grond oplossen. Dit komt, omdat de metaalmoleculen in de positieve elektrode hun elektronen afstaan aan het elektrische circuit. Wanneer de metaalmoleculen hun elektronen afstaan veranderen ze in positief geladen ionen en lossen ze op in het water dat in de grond zit. Dit zorgt er niet alleen voor dat weerstand bodemvochtigheidssensoren die gemaakt zijn van een onedel metaal snel onbruikbaar zijn, maar ook dat er op één plek veel metaal ionen in de grond komen.

weerstand bodemvochtigheidssensor, grove soil moisture sensor, roest, corrosie
Wanneer je een weerstand bodemvochtigheidssensor in een zoutoplossing legt, dan zie je binnen enkele minuten de eerste tekenen van corrosie ontstaan.

Een ander nadeel van weerstand bodemvochtigheidssensoren is dat de werking hiervan afhangt van het aantal ionen dat zich in de bodem bevind. Wanneer je plantenvoeding aan de bodem toevoegt, dan komen er meer ionen in de grond terecht en zal de sensor sneller aangeven dat de grond vochtig is. Dit komt, omdat het toevoegen van plantenvoeding de geleidbaarheid verhoogd, omdat het dus rijk is aan zouten die bij contact met water oplossen tot ionen.

grove soil moisture sensor, weerstand bodemvochtigheidssensor, geleider, ionen, zouten
Om het effect van zouten op een weerstand bodemvochtigheidssensor te laten zien hebben we de sensor eerst in zoutloos, gedestilleerd water gestoken en daarna in opgelost natriumbicarbonaat. In de zoutoplossing geeft de sensor bijna 1,5 volt meer door.

Vragen en opmerkingen

We proberen de serie DE PROGRAMMEERBARE PLANTENKAS zo toegankelijk mogelijk te maken voor iedereen. Toch zijn sommige concepten best wel ingewikkeld, omdat er kennis van heel veel verschillende domeinen, zoals natuurkunde, elektrotechniek en computerwetenschappen, samen komen. Het kan daarom best zijn dat we iets niet goed uitgelegd hebben. Mocht er iets niet duidelijk zijn of iets niet zo werken zoals we het in deze tutorial uitgelegd hebben, stuur dan gerust een berichtje via de Disqus op deze pagina. Je kunt de Disqus vinden door naar beneden te scrollen, tot onder de advertenties.