Hoe weet je dat je kerstboom dorst heeft? Laat 'm een appje sturen!

© by-studio busse yankushev

Hoe weet je dat je kerstboom dorst heeft? Laat 'm een appje sturen!

Computer accessoires

Geplaatst: 23 december 2022 - 11:30

Martijn Overman

Bij sommige mensen staat de kerstboom al in november en tegen de tijd dat het Kerst is, dreigt hij al te verdrogen. Als-ie op een kruis staat, is daar weinig aan te doen, maar een kerstboom doet het veel beter in een voet die tevens dienstdoet als waterbak. Dan blijkt dat die bomen binnen erg dorstig zijn en wie controleert het water nog nadat er eenmaal zo’n gezellig sneeuwkleedje overheen ligt? Precies, daarom een DIY-project voor alle (gevorderde) knutselaars die geen zin hebben in een kale kerstboom!

🎄 Boodschappenlijstje (bijvoorbeeld bij Conrad.nl)🎄 Overige benodigdheden
NodeMCU-module (€ 9,-)Soldeerbout
2x Trekontlasting M10, 2 stuks (€ 2,-)Soldeertin
Printplaatje 80 × 50 mm (€ 3,30)Zijkniptang
Kunststof behuizing 85 × 56 × 39 mm (€ 4,25)Schroevendraaier
Schroefterminal 4-polig (€ 0,40)Boormachine
Netadapter 5 V, 1 A (€ 6,-)Vijl
Rode led (€ 0,10)Secondelijm
Groene led (€ 0,10)Eén-aderig snoer (30 cm)
Weerstand 100 ohm, 2 stuks (€ 0,10)Twee-aderig snoer (1 meter)
Weerstand 10 kilo-ohm (€ 0,05)multimeter (optioneel)
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.
Totale kosten: ca. € 25,–

Hardware en software

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 deze DIY 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 NodeMCU/ESP-modules in omloop.

Een compacte en eenvoudige behuizing van kunststof volstaat voor dit project. De eerste trekontlasting is al gemonteerd en de gaten voor beide leds zijn al geboord.

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 vervolgens 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).

Installeer de nieuwste versie van de ESP-module.

Aanpassen code

Het kant-en-klare programma hebben wij al voor je klaargezet; je kunt het hier downloaden. Sla het bestand Kerstboom_app.zip en pak het uit naar een willekeurige map. Open het bestand Kerstboom_app.ino (door op het bestand te dubbelklikken, opent het automatisch in Arduino IDE, zie ook 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.

Voer je gegevens in bovenaan de code.

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 bovenstaande alinea’s 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 nieuw 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 kerstboom heeft uren 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 kerstboom water geeft, weet je ook zonder het waterniveau te zien wanneer je kunt stoppen.

De watersensor corrodeert niet, door slechts af en toe kort te meten.

Software uploaden en testen

Als het bestand kerstboom_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 Kerstboom heeft dorst!. De rode led brandt en de melding Droogtealarm! herhaalt zich vervolgens elke seconde.

Door de sensor (of de gestripte uiteinden van het twee-aderige snoer) tegen een natte doek te houden of gedeeltelijk onder te dompelen in een kopje water, 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. Tot nu toe alles in orde? Mooi.

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.

De behuizing met trekontlasting en met de leds erin vastgelijmd.

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 is dan maar weinig marge! 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.

De bestukte printplaat en de gedeeltelijk gesoldeerde printplaat in de behuizing.

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 onze uitgebreide handleiding.

De schakeling is door zijn eenvoud heel geschikt voor wie met solderen begint. Tip: klik op de afbeelding; hij opent dan in een groter scherm.

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.

De gestripte en vertinde uiteinden van het adaptersnoer.

Ingebruikname

Bevestig de watersensor in de voet met de kerstboom, zodat de twee pennen straks half in het water zullen hangen. Het bevestigen kan even een klusje zijn: duct-tape 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!

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 dichterbij een accesspoint moeten zetten.

Geef de kerstboom water en zodra dat boven de sensor uitkomt, moet de rode led uitgaan en de groene gaan branden. Alvast een groene Kerst gewenst!

Het kerstboomalarm in bedrijf.

🌼 Ook handig ná de feestdagen

Als de kerstboom weer de deur uit is, kun je de schakeling natuurlijk ook prima gebruiken voor bloemen en planten. Daarvoor zul je eventueel de constanten ondergrens en veilige waarde moeten veranderen, een kwestie van experimenteren. Behalve deze voor de hand liggend toepassing, is de schakeling met het gedeeltelijk omdraaien van de code ook inzetbaar als lekkage-alarm. De functie alarm() voer je dan juist uit als de waarde te hoog is in plaats van te laag. Afgezien van wat tekstuele aanpassingen hoef je daarvoor niet heel veel te wijzigen. Een logische plek is dan bijvoorbeeld onder de wasmachine.

Deel dit artikel
Reageer op dit artikel
Voeg toe aan favorieten
Wat vond je van dit artikel?

Aanbevolen voor jou

ID.nl logo

ID.nl, onderdeel van Reshift BV, is in 2022 gestart en uitgegroeid tot de meest toonaangevende en complete consumentensite van Nederland. Het doel van ID.nl is om de consument te helpen met alle technologie die hoort bij het dagelijks leven: van smart-health-meters tot e-bikes, van warmtepompen tot zonnepanelen - en alles daar tussenin!

Duidelijk, betrouwbaar en onafhankelijk: ID.nl maakt moeilijke dingen makkelijk.

Contact

ID.nl

Nijverheidsweg 18

2031 CP Haarlem

info@id.nl

Telefoon: 023-5430000