Geautomatiseerd Kantoorplanten Watergeefsysteem met Arduino, WiFi & IFTTT
Onderdelen en Benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino Due (of Zero) | 1 |
| Andium Anduino WiFi Shield | 1 |
| Capacitatieve Bodemvocht Sensor | 1 |
Apps & Online Diensten
- Arduino IDE
- IFTTT
- Adafruit IO
Over dit Project
Motivatie
Onze nieuwe kantoorplanten droogden uit omdat we vergeten ze te wateren. Als IoT-bedrijf mochten we beter doen: geven we de planten een stem via internet!
Aan de slag
Je hebt nodig: Arduino Due/Zero, Anduino WiFi-shield (of andere WiFi-Arduino), capacitatieve bodemvochtsensor, en een glas water (voor de plant na afloop).
Capacitatieve Vochtsensor
De sensor heeft 3 draden: 3.3V (rood), GND (zwart), Signaal (blauw → analoog pin A1). Belangrijk: Dompel de sensor niet onder de witte lijn – de elektronica bovenin is niet waterdicht.
Kalibratie van de Sensor
Meet de ruwe analoge waarde:
- Droog (in lucht): noteer waarde (bijv.
dryVal = 807). - Nat (in water tot witte lijn): noteer waarde (bijv.
wetVal = 415).
Gebruik deze waarden om 0-100% relatieve vochtigheid te mappen:
int readHumidity() {
int sensorVal = analogRead(A1);
return map(sensorVal, dryVal, wetVal, 0, 100);
}
De Sketch (Volledig)
De sketch verbindt met WiFi, publiceert de vochtigheid elke 10 minuten naar Adafruit IO via MQTT, en toont de waarde op het onboard LCD.
#include <WiFi101.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include "AnduinoLCD.h"
// WiFi
#define WLAN_SSID "JouwSSID"
#define WLAN_PASS "JouwWachtwoord"
// Adafruit IO
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "jouwGebruikersnaam"
#define AIO_KEY "jouwAIOkey"
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Adafruit_MQTT_Publish humidityFeed = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/officePlants");
AnduinoLCD LCD = AnduinoLCD(ST7735_CS_PIN, ST7735_DC_PIN, ST7735_RST_PIN);
const int dryVal = 807; // <-- PAS AAN NA KALIBRATIE
const int wetVal = 415; // <-- PAS AAN NA KALIBRATIE
int humidityPrev = 0;
void setup() {
Serial.begin(115200);
delay(3000);
connectToWiFi();
connectToAdafruit();
LCD.begin();
LCDinit();
}
void loop() {
if (!mqtt.ping(3)) { if (!mqtt.connected()) connect(); }
int humidity = readHumidity();
char buf[4];
String str = String(humidity);
for (int i=0; i
Benodigde Bibliotheken
- WiFi101
- Adafruit_MQTT
- AnduinoLCD
IFTTT Drempelwaarde
Maak een IFTTT-applet: Als Adafruit IO feed 'officePlants' < 20% → stuur notificatie (e-mail, Twitter, push, etc.). Zo krijg je een waarschuwing wanneer de plant water nodig heeft.
Wat Volgt?
Uitbreidingen: automatische pomp activeren, meerdere planten, diepere data-analyse, integratie met slimme huis-systemen.
Productieproces
- Meststof: Wetenschap, Productie en Duurzame Toekomsten
- Bluetooth-gecontroleerde Arduino Spybot bouwen
- FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
- DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
- Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
- Find Me: Slimme Item Locator met Arduino en Bluetooth
- Geoptimaliseerde Voedingsoplossingen voor Arduino Projecten
- Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing
- Plantengezondheid Beoordelen met TinyML: Een Praktische Gids
- Bouw een Slimme Arduino Vierpotige Robot: Stap-voor-Stap Handleiding
- Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming