Wanneer plant water geven? Bouw een droogte-alarm!
Bij sommige mensen staan de planten er altijd fris bij, maar bij anderen wil het maar niet lukken. Te warm of te koud, te veel of juist te weinig licht … En wanneer moet je je plant water geven? Sommige planten zijn nu eenmaal heel kieskeurig. Het allerbelangrijkste is het geven van de juiste hoeveelheid water. Daarbij kan een automatisch geheugensteuntje het verschil maken tussen fris groen en uitvallende bladeren. Daarom een uitdagend project voor alle knutselaars die geen zin hebben in een kale kamerplant!
Boodschappenlijstje
Bijvoorbeeld bij Conrad.nl:
1 NodeMCU-module (€ 9,-)
2 trekontlastingen M10 (€ 2,-)
1 printplaatje 80 × 50 mm (€ 3,30)
1 kunststof behuizing 85 × 56 × 39 mm (€ 4,25)
1 schroefterminal 4-polig (€ 0,40)
1 netadapter 5 V, 1 A (€ 6,-)
1 rode led (€ 0,10)
1 groene led (€ 0,10)
2 weerstanden 100 ohm (€ 0,10)
1 weerstand 10 kilo-ohm (€ 0,05)
Optioneel, bijvoorbeeld bij AliExpress of eBay:
Watersensor (‘soil moisture sensor’) zonder elektronica (€ 0,50)
Als alternatief kun je ook de gestripte uiteinden van het twee-aderige snoer gebruiken, die je een beetje uit elkaar buigt.
Overige benodigdheden: soldeerbout en soldeertin, zijkniptang, schroevendraaier, boormachine, vijl, secondelijm, een-aderig snoer (30 cm), twee-aderig snoer (1 meter) multimeter (optioneel).
Totale kosten: ca. € 25,-
Qua hardware en behuizing blinkt dit project uit in eenvoud. Er is een netadapter nodig, een compacte behuizing en een trekontlasting, een NodeMCU-module, twee leds, drie weerstanden en een printplaatje om de boel op te solderen. Dit is dan ook een zeer geschikte schakeling voor wie net met solderen begint.
De groene led geeft aan dat er voldoende water is, de rode led brandt bij het bereiken van de in de code bepaalde ondergrens. De schakeling wordt gevoed door een eenvoudige netadapter van 5 volt, minimaal 1 ampère. Dat kan er ook één met usb-aansluiting zijn, in dat geval heb je nog wel een passende usb-kabel nodig. Het geheel is ondergebracht in een compacte kunststof behuizing, waarvoor je vanzelfsprekend ook zelf iets kunt maken of hergebruiken. De trekontlastingen voorkomen dat de voedingskabel en de sondekabel worden losgetrokken als er onbedoeld kracht op komt te staan.
In de rest van dit artikel worden de termen NodeMCU- en ESP-module door elkaar heen gebruikt. NodeMCU is de naam van een zeer populair ontwikkelbordje, waar een ESP-chip op zit. Inmiddels zijn er allerlei NodeMCU/ESP-modules in omloop.
©PXimport
Ontwikkelomgeving installeren
De ESP-module is het gemakkelijkst te programmeren met de Arduino-ontwikkelomgeving (Arduino IDE). Deze kun je downloaden via www.tiny.cc/arduinosoft. Kies bij voorkeur de traditionele installer en niet de Windows-app. Dat maakt het beheren van bibliotheken en ontwikkelbordjes een stuk eenvoudiger.
Omdat Arduino IDE niet primair voor deze module is bedoeld, zul je nog wat extra onderdelen moeten installeren. Klik daarvoor op Bestand / Voorkeuren en voer op het tabblad Instellingen bij Additionele Board Beheer URLs deze url in:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Kies nu Hulpmiddelen / Board: / Board Beheer… en typ esp8266. Klik op Installeren en selecteer daarna de module via Hulpmiddelen / Board / NodeMCU 1.0 (ESP-12E Module). Sluit de ESP-module aan via een usb-kabel en selecteer in Arduino IDE de juiste poort (Hulpmiddelen / Poort, kies de com-poort met het hoogste nummer). Als alles goed is gegaan, is je opstelling nu klaar om met programmeren te beginnen.
Herkent je systeem het ontwikkelbordje niet, dan download je via www.tiny.cc/espdriver een stuurprogramma voor de seriële interface (let op: deze link gaat gelijk het bestand CP210x_Universal_Windows_Driver.zip downloaden).
©PXimport
Aanpassen code
Het kant-en-klare programma download je vanaf www.computeridee.nl/edities/2022-06. Download het bestand Kamerplant_app.zip en pak het uit naar een willekeurige map. Open het bestand Kamerplant_app.ino (door op het bestand te dubbelklikken, opent het automatisch in Arduino IDE, zie ook het kader ‘Ontwikkelomgeving installeren’).
Vul bij ssid en password respectievelijk de naam en het wachtwoord van je draadloze netwerk in.
Het versturen van appjes wordt verzorgd door de dienst CallMeBot. CallMeBot biedt overigens ook de mogelijkheid om berichten te versturen via Signal en Telegram, dit artikel gaat uit van WhatsApp. De benodigde API-sleutel vraag je aan door het nummer +34 644 975 414 aan je contacten toe te voegen en in WhatsApp het bericht I allow callmebot to send me messages te sturen naar je nieuwe contact. Binnen enkele minuten ontvang je de benodigde API-sleutel, die je samen met je telefoonnummer (let op de internationale notatie) invult als constanten in de code bij respectievelijk apikey en telefoon.
©PXimport
CallMeBot biedt ook de mogelijkheid om berichten te versturen via Signal en Telegram
-
Toelichting code
De code begint met het insluiten van de bibliotheek ESP8266WiFi.h. Deze handelt de verbinding met het draadloze netwerk af: dankzij dit programma is de module met enkele regels code met het netwerk te verbinden. Daaronder declareer je enkele constanten en variabelen, waarvan de belangrijkste in de vorige paragraaf al zijn besproken. In setup() worden de pinnen gedefinieerd, de leds uitgezet en de seriële monitor geactiveerd.
Verwerken van de gegevens
De functie loop() draait continu en vormt het hart van het programma. Om te beginnen wordt de wifi-module uitgeschakeld, omdat die erg stoort op de analoge ingang. Dan wordt pin D1 op HIGH gezet, en de waarde op de analoge pin bepaald en bewaard in de variabele meting. Zodra dat klaar is, gaat D1 weer op LOW. Door dit te doen, loopt er slechts zeer kortstondig stroom door het water. Dat is belangrijk om de watersensor te ontzien: bij een constante stroom zou de anode (de kant waarop de +5 volt staat) snel corroderen.
De code werkt met twee waarden, vastgelegd in de constanten ondergrens en veilige_waarde. De waarden van deze twee liggen iets uit elkaar, zodat kleine schommelingen in de meting geen invloed hebben bij het bepalen of het nat of droog is.
Is het resultaat van de meting kleiner dan of gelijk aan ondergrens, dan gaat of blijft de rode led aan en de groene uit. Als de booleaanse variabele alarmverzonden de waarde onwaar heeft, wordt ook de functie alarm() uitgevoerd.
Droogtealarm
De functie alarm() begint met het opzetten van de wifi-verbinding. Als dat is gelukt, wordt via de API-call een appje verstuurd met de melding, waarna de variabele alarmverzonden op waar wordt gezet. Dit voorkomt dat er bij elke volgende meetronde een app uitgaat. Pas wanneer de meetwaarde boven de veilige waarde uitkomt, wordt alarmverzonden weer op onwaar gezet en staat alles weer klaar voor een nieuwe alarmronde. De rode led gaat of blijft dan uit en de groene aan. De variabele pulsdelay (de wachttijd tussen twee metingen) wordt nu vijf minuten in plaats van een seconde. De plant heeft uren tot dagen nodig om het water te verbruiken en niet te vaak meten beperkt de eerdergenoemde corrosie. Bij geconstateerde droogte wordt de wachttijd weer een seconde. Doordat er in die situatie geen water tussen de elektroden aanwezig is, speelt corrosie dan nauwelijks een rol. Als je de plant water geeft, weet je ook zonder het waterniveau te zien wanneer je kunt stoppen.
©PXimport
Software uploaden en testen
Als het bestand kamerplant_app.ino naar wens is aangepast in de Arduino-ontwikkelomgeving en de NodeMCU-module is aangesloten op zowel je pc als op de watersensor, kan het uploaden beginnen. Open de seriële monitor met Ctrl+Shift+M en upload het programma met Ctrl+U.
Nadat het uploaden is voltooid, volgt de meetwaarde en de melding Droogtealarm!. De module maakt nu verbinding met het draadloze netwerk en voert de API-call uit. Het antwoord van de server verschijnt en als het goed is, ontvang je binnen enkele seconden een appje met de tekst Kamerplant heeft dorst!. De rode led brandt en de melding Droogtealarm! herhaalt zich vervolgens elke seconde in de seriële monitor.
Door de sensor (of de gestripte uiteinden van het twee-aderige snoer) tegen een vochtige doek te houden of (nog beter) in de vochtige aarde te steken, zie je de meetwaarde oplopen, de rode led doven en de groene aan gaan. De melding Voldoende water staat nu in de seriële monitor en het programma wacht nu vijf minuten tot de volgende meting. Eventueel kun je de hoogte van ondergrens en veilige_waarde nog aanpassen in de code, afhankelijk van de plantensoort. Tot nu toe alles in orde? Mooi.
Pas de waarden aan in de code, afhankelijk van de plantensoort
-
Voorbereiding
Boor om te beginnen drie gaten in de behuizing: twee van 5 millimeter voor de leds en twee van 10 millimeter voor de trekontlasting. Kleiner kan ook, met een vijl maak je dan de gaten op maat. Monteer de trekontlastingen en controleer of de leds passen. Lijm ze met secondelijm vast in de behuizing. Soldeer ook alvast de snoertjes aan de leds, en de watersensor, zodat je die straks met de printplaat kunt verbinden.
©PXimport
Bouwen van de schakeling
Zoals al opgemerkt, is de hardware van dit project beperkt. De NodeMCU-module, de drie weerstanden en de schroefterminal komen op het printplaatje. Boor om te beginnen gaten van 5 millimeter op de hoeken van de printplaat, zodat deze over de schroefgaten van de behuizing vallen.
Door de componenten slim te plaatsen, zijn ze onderling te verbinden met soldeer. Houd er rekening mee dat (afhankelijk van de baantjes op de printplaat) de module dwars in de behuizing kan komen te zitten en er weinig marge is! Plaats daarom eerst de module op de printplaat en kijk of het in de behuizing past voor je verdergaat. Fixeer dan de module door aan de onderkant de pinnen op elke hoek een stukje naar buiten te buigen, bijvoorbeeld met het platte uiteinde van een schroevendraaier. Plaats daarna de weerstanden van 100 ohm in de buurt van de pinnen D5 en D6 en de weerstand van 10 kilo-ohm bij pin A0. Zie ook het schema voor de verbindingen.
Zet tot slot de schroefterminal aan de andere kant van de module. Ook de weerstanden en de schroefterminal blijven het best op hun plek zitten als je de pootjes een stukje ombuigt. Knip nu met een kniptang alle pootjes (ook die van de module) af op een lengte van ongeveer twee millimeter en soldeer de te verbinden onderdelen en pinnen aan elkaar. Soldeer ook de vier hoekpinnen van de module, waarvan er overigens slechts één wordt verbonden met de schroefterminal. Zie voor tips over solderen een uitgebreide handleiding uit ons zusterblad PCM via www.tiny.cc/pcmsolderen.
©PXimport
Aansluiten
De afwerking is nu eenvoudiger dan ooit, want dankzij de kant-en-klare behuizing zit alles al op z’n plek. Wat rest is het aansluiten van de netadapter, de watersensor en de leds. Knip om te beginnen de ronde stekker van de kabel af. Gebruik je een usb-netadapter, dan knip je van de usb-kabel de micro-usb-connector af. Strip de afzonderlijke draadjes over een lengte van ongeveer een halve centimeter en vertin de uiteinden. Als je een multimeter hebt, kun je de polariteit (plus en min) van de aansluitingen controleren. Heb je die niet, dan kun je kijken of er een opdruk op (een van) de draden staat. Een andere mogelijkheid is het aansluiten van een led met aan één van de pootjes een weerstand van 220 ohm. Sluit een van de adapterdraadjes aan op de weerstand en het andere draadje op het vrije pootje van de led. Het draadje dat is verbonden met het lange pootje van de led, is de plus. Markeer deze draad. Steek de vertinde uiteinden van buitenaf door de trekontlasting en zet ze vast in de schroefterminal op de printplaat, waarbij de plusdraad op VIN komt en de mindraad op GND.
Soldeer van het twee-aderige snoer elke draad aan één van de pinnen van de watersensor. Verbind de watersensor met de twee overgebleven aansluitingen van de schroefterminal, die je op de printplaat hebt verbonden met de pinnen A0 en D1 van de NodeMCU-module.
Sluit als laatste de leds aan met stukjes draad, waarvan je de uiteinden vertint. Verbind de kathodes (korte pootjes) van beide leds met GND, de anode (lange pootje) van de groene led sluit je aan op de weerstand bij pin D5 en de anode van de rode led op de weerstand bij D6.
©PXimport
Ingebruikname
De schakeling en het programma zijn al getest, dus kan de adapter in het stopcontact. Er is nu geen seriële monitor, dus je ziet aanvankelijk niets gebeuren. Binnen enkele seconden moet de rode led gaan branden. En binnen enkele seconden moet je een appje krijgen. Als dat niet gebeurt, is er waarschijnlijk een probleem met de wifi en zul je de schakeling wat dichter bij een accesspoint moeten zetten.
Bevestig de watersensor in de pot van de kamerplant, zodat de twee pennen straks in de aarde zullen hangen. Het bevestigen kan even een klusje zijn: ducttape werkt voor bijna elke klus, maar een constructie met boutjes is wellicht iets robuuster. Let daarbij wel op dat je niet per ongeluk elektrisch verbinding maakt tussen de elektroden van de sensor!
Als de aarde vochtig genoeg is, moet de rode led uitgaan en de groene gaan branden. Zo niet, geef dan de plant voldoende water.
©PXimport