Woensdagproject: draadloze grondvochtigheidsmeter met frisse smaak

20151223_150453Ik schreef gisteren al dat ik een tweetal ESP8266 boardjes had laten komen. Een soort Arduino maar dan veel goedkoper dan wat ik daar ooit voor betaalde én voorzien van Wifi op het toch al niet grote bordje. Een van de dingen waar ik de Arduino’s de afgelopen jaren voor gebruikt heb is als grondvochtigheidsmeter voor de jonge aanplant in het voorjaar (voordat ze de volle grond in gaan). Dan is het handig om op afstand in de gaten te kunnen houden of ze water nodig hebben.
Voor dat doel kun je tamelijk betaalbare grondvochtigheidsmeters kopen (zo’n €1,60 – voor dat bedrag ga ik ze niet zelf maken met spijker/draden etc). Eerste projectje deze week was daarom om zo’n meter aan te sluiten op een ESP8266 en dan de data, via Wifi, zowel via een webpagina als via MQTT toegankelijk te maken. Dat was op zichzelf niet zo heel moeilijk. Maar ja, zo’n bordje kan natuurlijk niet zomaar bij zo’n plantenbak liggen (vocht en zo).

Ik vind de “standaard” firmware die op de ESP8266 meegeleverd wordt prettiger als de Espruino firmware waar ik gisteren mee gespeeld heb. Daarmee kun je op dezelfde manier als bij de Arduino, zelfs mét de Arduino IDE, scripts maken voor de verschillende taken die je de ESP8266 wil laten uitvoeren (uitlezen vochtigheidsmeting, verbinding maken met de wifi, versturen van die data via wifi, tonen van een webpagina etc). Dat deel van het project was dus eenvoudig.

Wel moest er natuurlijk een behuizing komen voor de combinatie van ESP8266 en het kleine stukje logica dat aan de vochtigheidsmeter vast zat (klein printplaatje met o.a. potmeter waarmee je de schakelwaarde voor de digitale uitgang kunt aanpassen en 2 ledjes die laten zien dat het geheel werkt), want dat kon zo niet bij een vochtige plant blijven liggen. Nou zijn er al heel veel mensen geweest die een pepermuntdoosje als behuizing gebruikt hebben voor de meest uiteenlopende zaken. Dus waarom geen SMINT-doosje als omhulsel voor mijn project? 🙂

20151223_143613Ik had nog een leeg doosje bij de hand, eentje waar er 50 in gezeten hadden, qua lengte en hoogte leek het perfect. Gat in de onderkant gemaakt voor de twee kabels, geen probleem. Ik had gedacht om het vandaag zónder soldeerwerk te kunnen redden, het ging immers maar om 4 verbindingen tussen de ESP8266 en het printplaatje voor de vochtigheidsmeter (3,3V, GRN, A0 – analoge meetwaarde, D6 – digitale meetwaarde), daar kon ik met een paar kabeltjes met connector wel mee volstaan. Helaas…
De connectors van de kabel maakten dat de ESP8266 té hoog/dik werd om in het doosje te passen. Optie 1 was om op zoek te gaan naar een andere behuizing, optie 2 was om de soldeerbout er bij te pakken.

Ik had het gat in de bodem van het SMINT-doosje al gemaakt, dus toch maar de soldeerbout gepakt. Ik heb een prototyping-bordje op maat gezaagd zodat ik daar de ESP8266 door kon prikken. Aan de andere kant was ruimte voor het printplaatje van de vochtigheidsmeter. Daarna was het een kwestie van voorzichtig 4 kabeltjes aan de pootjes solderen voor de benodigde verbindingen:

20151223_150052Hiernaast zie je het (bijna) eindresultaat. Je kijkt tegen de onderkant van het prototyping-bordje, aan de andere kant zit de ESP8266, de gele kabel is van micro-USB naar USB en een kleine telefoonstekker. Daarmee is de oplossing niet 100% draadloos, maar ik ken de opties voor stroombesparing bij de ESP8266 nog onvoldoende om een oplossing met batterij echt praktisch te laten zijn.

Alles paste perfect in het doosje, aangesloten en fingers crossed. En warempel, al snel kwamen op de MQTT-server die ik heb draaien weer waarden binnen van de ESP8266! Ik had hem niet gemold tijdens het solderen. Maar toen ik een tweede keer naar de waarden voor de vochtigheid keek vond ik dat die wel heel laag was. Dat had hij eerder, zónder doosje niet gedaan. Als ik de pin er helemaal uit haalde ging de waarde naar 1024, waarvan ik wist dat dat inderdaad de maximale waarde was, maar het maakt niet uit of ik de pin in de grond of een glas water stopte, de andere waarde was altijd 42.

Dat kon maar één ding betekenen: ik had de analoge ingang van de ESP8266 aan de digitale pin van de vochtigheidsmeter aangesloten. 🙁

Dus het doosje nog een keer open gemaakt, soldeerbout weer opgewarmd, 2 draden los halen, op de juiste plek weer vast solderen en klaar. Nu kreeg ik tenminste échte analoge waarden binnen. Die hebben overigens niet echt een eenheid. Het is een indicatie voor de weerstand die de pint ondervindt. Bij een lagere weerstand (grond is vochtiger) is de waarde lager, bij een hogere weerstand (grond is droger) is de waarde ook hoger. Het is dus nog even inschatten waar voor deze plant het punt “ik heb water nodig” ligt.

En nu?

webpagina_esp8266Het bouwen van deze constructie heeft me ongeveer 10 euro aan hardware gekost (incl. kabel en stekker-adapter). Daarnaast was het een dag knutselen. Het script op de ESP8266 is nu nog tamelijk simpel en de webpagina (zie hiernaast) tamelijk kaal. Maar omdat de ESP8266 internetverbinding heeft is er veel meer mogelijk. Zo heb ik hier gelezen dat het mogelijk moet zijn om een Raspberry Pi verbinding te laten maken met WhatsApp. Dan zou ik dus de grondvochtigheidsmeter niet alleen via MQTT zijn info kunnen laten sturen, maar als de grond te droog wordt, hem ook een whatsappbericht kunnen laten versturen (“help, ik droog uit!”) of zo. 🙂

En zeg nou zelf, dit is toch veel cooler dan het gewoon in de winkel kopen van zo’n apparaat waarvan je geen idee hebt hoe het werk?