Zo houd je je planten in de gaten met Adafruit IO

© PXimport

Zo houd je je planten in de gaten met Adafruit IO

Geplaatst: 18 augustus 2019 - 07:53

Aangepast: 16 november 2022 - 09:25

Koen Vervloesem

Een Arduino, ESP8266 of Raspberry Pi zijn leuk om allerlei sensoren op aan te sluiten, maar hoe houd je die sensordata in het oog? Adafruit IO is een handig platform waarmee je eenvoudig sensordata van je apparaatjes naar de cloud stuurt, ze in een dashboard bekijkt en ze naar andere apparaatjes stuurt. In dit artikel sluiten we een vochtsensor aan op Adafruit IO om te weten wanneer je je kamerplant water moet geven.

01 Vochtsensor met een ESP8266

Als je weleens je planten vergeet water te geven, is het nuttig om een vochtsensor in de grond te steken om de plant in de gaten te houden (bijvoorbeeld de YL-69 of nog goedkoper via AliExpress). De sensordata lezen we uit met een ESP8266, een goedkoop microcontrollerbordje met wifi. Verbind één draadje van de vochtsensor met pin D1 op de ESP8266 en steek het andere draadje in een lege plaats op het experimenteerbordje. Verbind de plaats eronder met pin A0 en plaats daaronder een weerstand van 10 kΩ die je ook met GND verbindt. Je schakeling is nu klaar. Steek de twee pootjes van de vochtsensor in de grond.

 

© PXimport

02 Hoe werkt dit?

Hoe werkt dit nu precies? De vochtsensor bestaat uit twee elektrodes (de ‘pootjes’). Water geleidt elektriciteit, dus als je beide elektrodes in een pot met natte grond steekt, loopt er stroom van de ene naar de andere elektrode. De hoeveelheid stroom (en daarmee de spanning over de weerstand van 10 kΩ) hangt af van de geleidbaarheid van het materiaal tussen beide elektrodes, en in ons geval dus van de hoeveelheid water in de grond. Die spanning lezen we af op ingang A0, de analoge ingang van ons microcontrollerbordje.

Opletten met water!

03 Arduino IDE

De hardware hebben we nu klaar, maar we hebben ook nog software nodig. Die schrijven we in Arduino IDE, die zowel op Windows, Linux als macOS werkt. Download de nieuwste versie (op het moment van schrijven versie 1.8.9). Voor Windows heb je de keuze tussen een exe- en een zip-bestand. De eerste is gemakkelijker omdat dit een installatieprogramma is dat onmiddellijk ook de juiste driver voor de usb-verbinding met je Arduino installeert. De standaardinstellingen van het installatieprogramma zijn oké. Start Arduino IDE daarna op, waarna die een lege voorbeeldschets opent waarin we onze code gaan schrijven.

 

© PXimport

04 Ondersteuning ESP8266

Arduino IDE is ontwikkeld voor Arduino-microcontrollerbordjes. Om de ESP8266 te ondersteunen, moet je nog enkele zaken configureren. Klik je in het menu Bestand op Voorkeuren, dan zie je onderaan een tekstveld Additionele Board Beheer URLs. Vul hier de url http://arduino.esp8266.com/stable/package_esp8266com_index.json in en bevestig met OK. Open dan het bordbeheer in het menu Hulpmiddelen / Board / Board Beheer… (sic). Arduino IDE laadt dan de url in die je zojuist hebt ingevoerd. Onderaan de lijst verschijnt de kern esp8266. Installeer deze kern om de ondersteuning toe te voegen.

 

© PXimport

05 Code voor de vochtsensor

Vul nu in de voorbeeldschets onze code van vochtsensor-serieel.ino in, die je hier vindt. In de functie setup stellen we pin D1 als uitgangspin in en in loop lezen we elke drie seconden de analoge ingang uit. Langdurig meten tussen de elektrodes van de vochtsensor veroorzaakt corrosie van de anode, daarom zetten we voor elke meting spanning op pin D1 en vlak na de meting weer geen spanning. Zo verlengen we de levensduur van de sensor. Sluit je ESP8266 nu aan, kies in het menu Hulpmiddelen / Board het juiste bordje, zorg dat de uploadsnelheid op 115200 staat en klik op het pijltje naar rechts om de code te compileren en naar het bordje te uploaden. Als dat gelukt is, krijg je in Hulpmiddelen / Seriële monitor elke seconde de uitgelezen waarde te zien. Zet wel de communicatiesnelheid eerst op 115200 baud.

 

© PXimport

06 Adafruit IO

Nu je bevestigd hebt dat je vochtsensor werkt, is het tijd om naar Adafruit IO te kijken, het platform van Adafruit om eenvoudig sensordata naar de cloud te sturen. Maak een gratis account aan met een klik op Get Started for Free (bovenaan rechts). Met dit gratis account kun je 30 datapunten per minuut verwerken, krijg je 30 dagen gratis opslag en heb je toegang tot 10 feeds en 5 dashboards. Voor de meeste hobbyprojecten is dat ruimschoots voldoende. Nadat je ingelogd bent, klik je bovenin het menu op IO en klik je links op View AIO Key. Laat deze pagina even open staan, want deze gegevens dien je dadelijk te kopiëren.

 

© PXimport

07 Arduino-bibliotheek installeren

Om ons programmaatje met Adafruit IO te koppelen, moeten we eerst een extra softwarebibliotheek in Arduino IDE installeren. Open in Arduino IDE het menu Hulpmiddelen / Bibliotheken beheren en zoek op Adafruit IO Arduino. Klik op Installeren naast de bibliotheek. Doe daarna hetzelfde met Adafruit MQTT Library en ArduinoHttpClient en sluit daarna het bibliotheekbeheer. Open dan in het menu Bestand / Voorbeelden / Adafruit IO Arduino het project adafruitio_08_analog_in. Dit doet al bijna exact wat we nodig hebben, we hoeven maar enkele regels code aan te passen.

 

© PXimport

08 Code aanpassen

De voorbeeldcode leest een lichtgevoelige weerstand uit, terwijl onze vochtsensor een vochtgevoelige weerstand is. Eigenlijk gebeurt er bijna hetzelfde. Je kunt de code eenvoudig uitbreiden om de digitale pin van onze vochtsensor correct in en uit te schakelen. Voeg helemaal in het begin vlak voor de regel // analog pin 0 de regel #define PULS_PIN 5 // D1 toe. Voeg helemaal in het begin van setup() de regels die beginnen met pinMode en digitalWrite van onze eerdere setup() toe. En voeg dan vóór de regel met analogRead de regel digitalWrite(PULS_PIN, HIGH); toe en erna de regel digitalWrite(PULS_PIN, LOW);.

 

© PXimport

09 Wachtwoorden invullen

Sla het aangepaste bestand alvast op (je vindt het ook kant-en-klaar hier). Let op: je dient de schets op een andere locatie op te slaan, omdat je anders de voorbeeldbestanden definitief aanpast. Geef het een naam zoals vochtsensor-adafruitio en sla het op. Open dan het tabblad config.h. Kopieer uit de pagina die je in stap 6 open had laten staan de twee regels code onder Arduino en plak ze hier in plaats van de twee regels die beginnen met #define IO_USERNAME en #define IO_KEY. Vul dan in de regels met #define WIFI_SSID en #define WIFI_PASS het ssid en wachtwoord van je draadloze netwerk in. Sla het bestand op en upload je schets dan naar je ESP8266 met een klik op het knopje met het pijltje naar rechts.

 

© PXimport

10 Verbinden met Adafruit IO

Als je nu de seriële monitor opent, krijg je na een tijdje (wees geduldig, want het kan eventjes duren!) de melding dat je ESP8266 verbonden is met Adafruit IO. Je krijgt ook elke keer dat de sensorwaarde verandert te zien dat die naar Adafruit IO verzonden wordt. Als je nu op de website van Adafruit IO links op Feeds klikt, krijg je een feed analog te zien met de recentste waarde. Die feed was in het begin van de code gedefinieerd met de regel AdafruitIO_Feed *analog = io.feed("analog");. Als je klikt op de feed analog, krijg je een grafiek met de recentste waardes te zien.

 

© PXimport

11 Dashboard

We kunnen nu ook een dashboard maken om deze meetgegevens samen met andere gegevens weer te geven. Klik links op Dashboards / Actions en in het uitklapmenu dat verschijnt op Create a New Dashboard. Geef je dashboard en naam en beschrijving. Klik daarna op de naam en dan op het blauwe icoontje met een plusteken om een nieuw blok aan te maken. Kies het bloktype (bijvoorbeeld Line Chart), vink je feed analog aan en klik op Next step. Geef je blok een titel en pas eventueel andere eigenschappen aan. Klik tot slot op Create block om de grafiek aan je dashboard toe te voegen. Je kunt hier nu ook andere blokken aan toevoegen, bijvoorbeeld voor meerdere planten.

 

© PXimport

12 Automatische melding

Je kunt Adafruit IO nu ook koppelen aan andere clouddiensten, zoals IFTTT. Klik daarvoor links op Services, dan bij IFTTT op Get Started / Click here to connect en tot slot (na eerst in te loggen op IFTTT) op Connect om Adafruit met IFTTT te verbinden. Nadat je IFTTT toegang gegeven hebt tot je Adafruit-account, kun je IFTTT laten reageren op de meetgegevens van je vochtsensor. Ga hiernaartoe en kies het applet If a feed value hits the threshold, send an IF notification.. Schakel die in, kies analog als je feed en vul less than 30 in. Vanaf nu krijg je automatisch een melding in de IFTTT-app als je plant te droog staat.

13 En verder

Je hoeft niet naar IFTTT te gaan om op je sensorgegevens te reageren. In het onderdeel Triggers van de webinterface van Adafruit IO kun je triggers definiëren en aan acties koppelen. Op die manier kun je ook meerdere ESP8266-controllerbordjes met elkaar koppelen en op elkaar laten reageren. Bekijk zeker de voorbeeldprojecten van Adafruit eens. Overigens kun je ook een Raspberry Pi met Python aan Adafruit IO koppelen en in de webinterface kun je ook je feeds met anderen delen. Genoeg mogelijkheden dus!

 

© PXimport

Deel dit artikel
Voeg toe aan favorieten
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