Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Onderdelen en Benodigdheden
| Onderdeel | Aantal | Opmerking |
|---|---|---|
| Arduino UNO | 1 | Sensor/actuator controller |
| Raspberry Pi 2 Model B | 1 | Elke versie werkt |
| Raspberry Pi Camera Module | 1 | Voor timelapse |
| Arduino Ethernet Shield 2 | 1 | Netwerkverbinding |
| Relais (generiek) | 1 | 4-kanaals relaismodule |
| OpenBuilds Draadkabel (per meter) | 1 | Bedrading |
| Fotoweerstand (LDR) | 1 | Lichtmeting |
| Waterpomp (generiek) | 1 | Bewatering |
| Ventilator (generiek) | 1 | Uit oude computer |
| Algemene NPN Transistor | 1 | Voor ventilatorbesturing |
| MicroSD Kaart (Generiek) | 1 | 16 GB voor timelapse |
Apps en Online Services
| App/Service | Opmerking |
|---|---|
| Arduino IDE | Codeerplatform |
| Raspberry Pi Raspbian | Besturingssysteem |
| win32diskimager | SD-kaart schrijven |
| PuTTY | SSH-verbinding |
| myDevices Cayenne | IoT-dashboard en automatisering |
Over dit Project

Dit is mijn tweede project met de geautomatiseerde tuin, maar nu wordt alles bestuurd via Cayenne - wat veel eenvoudiger is. Ik voegde een Raspberry Pi toe voor timelapse-video's.
Arduino Opzetten









Voor het monitoren van de tuin gebruikte ik diverse sensoren. Belangrijk: sluit de Ethernet Shield aan op de Arduino voordat je begint.
Verbindingen
Bodemvochtsensor: Controleert of planten water nodig hebben.
- VCC: 5V
- GND: GND
- A0: A1 (Arduino analoog pin)
Ventilator: Activeert bij te hoge temperatuur of voor verse lucht.
- Eén draad van de weerstand naar pin 3.
- GND van ventilator op de middenpin (collector) van de transistor.
- + van ventilator naar relais (middenpin).
- Laatste pin (emitter) van transistor naar GND.
- Diode tussen middenpin van transistor en GND (vrijloopdiode).
Waterpomp: Activeert op basis van bodemvocht.
- + naar middenpin van relais, GND naar GND van voeding.
Fotoweerstand (optioneel): Meet of er voldoende licht is.
- Eén pin naar A0 met weerstand naar GND.
- Andere pin naar 5V.
Verlichting:
- Anode (+) naar relais, kathode naar GND van voeding.
Luchtvochtigheid/Temperatuursensor (DHT22): Vereist specifieke code voor Cayenne.
- VCC: 3,3V
- GND: GND
- DAT: digitale pin 8
Waterpeilsensor:
- VCC: 5V
- GND: GND
- SIG: A2
Eindmontage


In het Fritzing-schema staan 2 relais omdat Fritzing nog geen 4-kanaals relais heeft. Ik gebruikte één 12V voeding voor het relais. Ik scheidde de plus- en min-draden en soldeerde 3 draden van de plus aan de relais-contacten. Een voeding is voldoende omdat niet alles tegelijk aanstaat.
Voor de Arduino-relaisvoeding (5V):
- VCC: 5V
- GND: GND
- IN1: Pin 2 - Activeert verlichting
- IN2: Pin 5 - Activeert waterpomp
- IN3: niet gebruikt
- IN4: Pin 4 - Activeert ventilator
Cayenne Opzetten
Cayenne configureren is heel eenvoudig:
- Maak een account aan op cayenne.mydevices.com.
- Zorg dat de Ethernet Shield met RJ45-kabel verbonden is.
- Gebruik de onderstaande code om verbinding te maken met Cayenne en de DHT-sensor te configureren.
Deze code werkt voor de W5100 shield. Voor andere Ethernet/WiFi shields is de code op Cayenne beschikbaar. Vergeet niet je authenticatie-token toe te voegen (krijg je na accountaanmaak).
#include "DHT.h"
//#define CAYENNE_DEBUG // Uncomment voor debug berichten
#define CAYENNE_PRINT Serial // Comment uit om geheugen te besparen
#include <CayenneMQTTEthernet.h>
#define DHTPIN 8
#define DHTTYPE DHT22
#define VIRT_TEMP V1
#define VIRT_HUM V2
char token[] = "jouw_token_hier";
DHT dht(DHTPIN, DHTTYPE);
unsigned long prev_DHT_refresh = 0;
const unsigned long interval_DHT_refresh = 1000;
void setup() {
Serial.begin(9600);
Cayenne.begin(token);
dht.begin();
}
void loop() {
Cayenne.run();
getDhtValues();
}
void getDhtValues() {
unsigned long now = millis();
if (now - prev_DHT_refresh > interval_DHT_refresh) {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (!isnan(h) && !isnan(t)) {
Cayenne.virtualWrite(VIRT_HUM, h);
Cayenne.celsiusWrite(VIRT_TEMP, t);
}
prev_DHT_refresh = now;
}
}
Apparaten in Cayenne







We zijn bijna klaar met de Arduino. Nu het makkelijke deel: alle apparaten toevoegen aan Cayenne.
Apparaat Toevoegen → Custom Widget
Selecteer het type widget. Ik gebruikte grafieken voor luchtvochtigheid en waterpeil, waarden voor de rest. Voor de DHT-sensor gebruik je virtuele pinnen:
- Temperatuur: Vpin1
- Luchtvochtigheid: VPin2
Voor de andere sensoren kies je Analog met de bijbehorende pin. Voor actuatoren (verlichting/ventilator/waterpomp) kies je Actuators en selecteer de Arduino-pin die verbonden is met het relais.
Events en Triggers








Nu we het dashboard hebben, stellen we de Triggers in:
- Waterpomp: start bij te droge bodem, stopt bij voldoende vocht. Twee triggers: een om te starten, een om te stoppen.
- Waterpeil: Hoge waarde = water tekort. Stuur e-mailwaarschuwing.
- Events: 4 events: verlichting aan 's ochtends, uit 's avonds; ventilator aan/uit op vaste tijden.
Raspberry Pi Opzetten




Laten we een timelapse maken van de groeiende plant.
3 Softwaretools:
- Raspbian (OS)
- Win32DiskImager (om image op SD-kaart te schrijven)
- PuTTY (SSH voor remote toegang)
Win32DiskImager:
- Selecteer het juiste device (meestal standaard als alleen SD-kaart aangesloten).
- Klik op het mapje en selecteer de gedownloade Raspbian Jessie image.
- Klik Write. Klaar. Plaats de kaart in de Pi.
PuTTY: Staat SSH-toe. Open PuTTY (geen installatie nodig).
- Netwerkkabel in de Pi.
- Vind het IP-adres: router-interface checken of via touchscreen/toetsenbord
ifconfig. - In PuTTY IP invoeren (bijv. 192.168.0.3), Enter.
- Vertrouwen? Ja.
- Login:
pi, wachtwoord:raspberry. Venster open houden.
Updates:
sudo apt-get update
sudo apt-get upgrade
VNC (voor remote desktop zonder scherm):
sudo apt-get install tightvncserver
vncserver :1
Download VNC Viewer op je PC, verbind met IP:1 (bijv. 192.168.0.3:1).
Cayenne op Raspberry Pi: Remote control via Cayenne:
wget https://cayenne.mydevices.com/dl/rpi_03wl1tt4nt.sh
sudo bash rpi_03wl1tt4nt.sh -v
Timelapse


Camera inschakelen:
sudo raspi-config
Ga naar "Enable Camera".
Map aanmaken voor foto's:
cd /home/pi/Desktop
mkdir timelapse
Script maken voor uurlijkse foto:
cd /home/pi/Desktop
nano timelapse.sh
Plak dit:
SAVEDIR=/home/pi/Desktop/timelapse/
while [ true ]; do
filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
/opt/vc/bin/raspistill -o $SAVEDIR/$filename
sleep 3600
done
Script uitvoerbaar maken:
chmod +x timelapse.sh
Conclusie



De tutorial was lang maar eenvoudig: paar apparaten aansluiten en platform configureren. Op de foto is een warboel - ik gebruikte te lange draden. Ik zal de timelapse-resultaten posten als de planten volwassen zijn.
Advies: De Ethernet Shield kan "DHCP fail" geven. Oplossing van Arduino-forum: soldeer twee 100-ohm weerstanden op willekeurige plekken om je lezers te irriteren. (Dit was een grap in de originele tekst - de echte oplossing is waarschijnlijk een betere voeding of kabel).
Code
Code snippet #1 (Arduino)
#include "DHT.h"
//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include <CayenneMQTTEthernet.h>
#define DHTPIN 8
#define DHTTYPE DHT22
#define VIRT_TEMP V1
#define VIRT_HUM V2
char token[] = "jouw_token";
DHT dht(DHTPIN, DHTTYPE);
unsigned long prev_DHT_refresh = 0, interval_DHT_refresh = 1000;
void setup() {
Serial.begin(9600);
Cayenne.begin(token);
dht.begin();
}
void loop() {
Cayenne.run();
getDhtValues();
}
void getDhtValues() {
unsigned long now = millis();
if (now - prev_DHT_refresh > interval_DHT_refresh) {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (!isnan(h) && !isnan(t)) {
Cayenne.virtualWrite(VIRT_HUM, h);
Cayenne.celsiusWrite(VIRT_TEMP, t);
}
prev_DHT_refresh = now;
}
}
Code snippet #9 (Shell script voor timelapse)
SAVEDIR=/home/pi/Desktop/timelapse/
while [ true ]; do
filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
/opt/vc/bin/raspistill -o $SAVEDIR/$filename
sleep 3600
done
Productieproces
- Een Professionele Raspberry Pi Universele Afstandsbediening Bouwen met LIRC
- RF naar DC Converteren met een Raspberry Pi: Een Envelope Detector Bouwen en Troubleshooten
- Cycle Chaser: Uw Fiets Transformeren in een Nachttijd Lichtshow met Raspberry Pi
- Een Raspberry Pi-gebaseerde Diefdetector Bouwen – Stapsgewijze Handleiding
- Een Raspberry Pi thuistemperatuurmonitor bouwen met MCP9808, InfluxDB & Grafana
- Een Raspberry Pi-thuisautomatiseringssysteem bouwen voor afstandsbediening
- Geautomatiseerd Plantenwatersysteem met Raspberry Pi & Webdashboard
- MrRobot: Ubuntu Mobiel-Gestuurde Rapiro Robot met Stem, Touch & Schud Interactie
- DIY Wall-E Geïnspireerde Raspberry Pi CD-Doos Robot
- Bouw een Bluetooth-gecontroleerde Raspberry Pi Robot met Audio Feedback
- Bouw een Internet-gecontroleerde Video-streamende Robot met Arduino & Raspberry Pi