Slimme stedelijke plantenwatering: Sensor-gestuurde geautomatiseerde irrigatie
Onderdelen en benodigdheden
| Bodemvochtigheidssensor (optioneel, 2 stuks) |
| Regensensor (1 stuks) |
| Melkkan (of vergelijkbaar waterreservoir) (1 stuks) |
| Flexibele kunststof slang (1 stuks) |
| Draadjes (jumper wires) (ca. 37 stuks) |
| SparkFun Inventor's Kit voor Arduino 101 (1 stuks) - bevat Arduino 101, servo, breadboard, potentiometer, LCD |
| Modelage klei (1 stuks) |
| Korte kunststof staaf (1 stuks) - voor ondersteuning uitlaatslang |
| Weerstand 330 ohm (1 stuks) |
Benodigde tools en machines
- Schaar
- Kruiskopschroevendraaier
- Isolatieband (en gewone tape)
Apps en online diensten
- Nordic Semiconductor nRF Connect SDK
- Arduino IDE
Over dit project

Dit apparaat verbetert plantenirrigatie in stedelijke omgevingen. Aangedreven door een Arduino 101, gebruikt het onboard-tools samen met een paar externe sensoren om de optimale condities voor het wateren van planten in de eigen omgeving te berekenen, en water de plant vervolgens op het berekende moment automatisch.
Werks principes
Zwaartekracht en druk

Het systeem haalt water uit een reservoir (gemaakt van een melkkan, kunststof slang, klei voor afdichting, en een servo). Deze container is zo gepositioneerd dat deze, naast verhoogd staan, ook regenwater kan verzamelen.
De kan wordt voornamelijk gevuld via de leidingwatervoorziening (omdat regen niet altijd beschikbaar is), maar wordt aangevuld met regenwater. Wanneer water in de kan zit, trekt de zwaartekracht het water naar beneden. Een gat in de bodem van de kan laat de uitlaatslang toe. De servo regelt wanneer water mag uitstroommen. Normaal staat de servo-arm omhoog (water geblokkeerd). Bij wateren daalt de arm 135 graden, zodat water kan vloeien. Daarna gaat de arm weer omhoog.
De waterdruk tegen de kan helpt niet alleen bij stabiliteit, maar ook bij een continue stroom tijdens irrigatie.
TMP36 Temperatuursensor en Intel Curie Pattern Matching Engine

Deze combinatie stuurt de berekening van het optimale wateringstijdstip. De TMP36 is een temperatuursensor met analoge uitgang die door een microcontroller gelezen kan worden. Het systeem probeert het optimale wateringstijdstip te berekenen (dichtbij 25°C). Het doet 30 metingen per uur (elke 2 minuten), en berekent aan het einde van elk uur het gemiddelde van 29 metingen (de eerste wordt uitgesloten door onnauwkeurigheid). Hier komt de Pattern Matching Engine (PME) van de Intel Curie (Arduino 101) in.
De PME is een kunstmatig neuraal netwerk van 128 neuronen dat in de Arduino 101 ingebouwd zit. Het kan data leren en classificeren. Voor dit project leert de PME temperatuurdata over een dag en probeert de optimale conditie (25°C) te classificeren. Het resultaat wordt het wateringstijdstip voor de volgende dag.
Data wordt elk uur van 8:00 tot 21:00 vastgelegd. De eerste keer worden de data opgeslagen in de Onboard Serial Flash, zodat het systeem na een herstart nog steeds over de dataset beschikt. Na het verkrijgen van de dataset probeert de PME de optimale conditie te classificeren. Als dit lukt, wordt die categorie het uur voor de volgende ronde. Zo niet, dan gebruikt het systeem maandelijkse constanten (het uur waarop de temperatuur gemiddeld het hoogst is). Deze zijn niet altijd de beste temperaturen voor wateren, daarom de PME.
Na de eerste leercyclus worden de data gewist en de volgende dag opnieuw geleerd, met watering op het gekozen uur. Deze cyclus herhaalt zich oneindig, of tot het systeem van stroom gaat. Bij herstart gebruikt het de opgeslagen parameters.
Intel Curie Real-Time Clock en Bluetooth Low Energy

De Real-Time Clock (RTC) van de Intel Curie is cruciaal. Deze houdt het uur bij (voor wateren en data-opname) en de maand (voor backup piektemperatuur constanten). De precieze datum/tijd moet handmatig ingesteld worden, in code of via gebruikersinput. Dit werd opgelost met BLE.
Bluetooth Low Energy (BLE) is een laag-energie Bluetooth-versie. Het werkt op een centraal-perferisch systeem: een centraal (bijv. smartphone) schrijft naar perferieën (Arduino 101). In dit project wordt nRF Connect van Nordic Semiconductor op een mobiel apparaat gebruikt als centraal, en de Arduino 101 als perferisch. Het mobiele apparaat stuurt data (in hexadecimaal formaat) naar de Arduino: uur, minuut, dag, maand.
Hoe te bouwen
Het bouwen vereist enige kennis van schakelingen, maar is wel haalbaar. Hier is de complete lijst:
Elektronische componenten
- Arduino 101
- 400-knoop breadboard met ± rails
- Draaipotentiometer
- 16x2 LCD
- 330 Ohm weerstand
- TMP36 temperatuursensor
- 180-graden servo met servo-arm
- Regensensor met controlboard
- Bodemvochtigheidssensor met controlboard (optioneel)
- Voldoende draadjes (zie Fritzing diagram)
Voor batterijvoeding (kan niet lang duren; gebruikte opstelling):
- 2x 4xAA batterijhouder met aan/uit schakelaar en draadjes
- 8x AA 1.2V NiMH oplaadbare batterijen
Voor USB-voeding (van adapter of laptop):
- USB Male A - Male B kabel (lengte naar keuze)
Niet-elektronische hardware
- Melkkan
- Flexibele kunststof slang (20-30 cm)
- Modelage klei, lijm of andere afdichting
- Kunststof staaf (ondersteuning slang)
- Kunstmandje (voor de elektronica)
- Verhoogd oppervlak voor de kan (bankje, tafel)
- Een plant
Tools
- Tape (gewone en isolatieband)
- Schaar
- Kruiskopschroevendraaier (voor servo-arm)
Stappen
- Bouw de schakeling volgens het Fritzing-diagram. Let op: bodemvochtigheidssensoren zijn optioneel. Regensensor en servo hebben mogelijk langere draden nodig. Zie de foto's voor de eindopstelling.
- (Sla over naar stap 5 bij USB-voeding). Plaats batterijen in de houder en verbind de plus van de ene met de min van de andere.
- Bevestig de houders met isolatieband zodat de deksels en behuizingen als één stuk af te nemen zijn. Laat gaten open voor de schakelaars.
- Plak het dubbele deksel onder de Arduino 101 en breadboard, zodat batterijen makkelijk uit te schuiven zijn.
- Plaats het apparaat in het kunstmandje en knip twee gaten aan één kant: één voor programmeren/USB-voeding, één voor sensoren/actuatoren. Gebruik tape voor losse draden.
- Knip de top van de melkkan af (bij de handgreep) voor een grote opening en capaciteit.
- Knip een klein gat in de bodem, recht onder de opening. Steek één uiteinde van de slang door het gat. Zorg dat het gat klein genoeg is voor vastzitten, maar niet de slang afknijpt.
- Gebruik klei om boven en onder het gat rond de slang af te dichten. Let op dat geen klei in de slang komt.
- Bevestig de servo zo laag mogelijk aan de bodem van de kan met klei en tape. Plak het midden van de slang en de kunststof staaf aan de servo-arm. Plak de staaf ook aan het uiteinde van de slang. Gebruik de foto als referentie voor stappen 8-10.
- Bevestig de kan op het verhoogde oppervlak. Gebruik tape indien nodig.
- Plaats een plant net onder de uitlaat van de slang (in gedroogde stand). Steek vochtigheidssensoren in de aarde (indien gebruikt), en plaats de regensensor dichtbij de plant op de vloer. Sluit sensoren en servo aan op het apparaat, dat iets verder van de kan en plant staat.
Programmeren
Programmeer de Arduino 101 met de bijgeleverde code. Upload via Arduino IDE met Curie Core 2.0.2 of hoger. De code bevat uitgebreide commentaar.
Apparaatbedrijf
Bij eerste inschakeling wacht het apparaat op verbinding met een mobiel apparaat via nRF Connect. Zodra verbonden, wacht het op tijdsinvoer. Voer achtereenvolgens de hex-codes in voor uur, minuut, dag en maand (basis 10 omgerekend naar hex). Er moet eerst een ID-invoer (willekeurig getal) verstuurd worden als bevestiging.

Na invoer wacht de Arduino 101 op ontkoppeling. Daarna wacht het tot 8:00 (deze of volgende dag).
Om 8:00 controleert het of er data in de flash-geheugen zit. Als niet, doorloopt het het 14-uurs leerproces (zoals beschreven), classificeert de data, bepaalt het optimale tijdstip, en herhaalt de cyclus. Wel data aanwezig? Dan wordt die gebruikt als uur-constante en gaan de cycli normaal door.
Tijdens wateringstijden voorkomt regen of overmatige bodemvocht (optioneel) dat de plant wordt gegegeven. Het systeem slaat dan die dag over en wacht op de volgende.

Deze oplossing maakt stedelijke plantenirrigatie simpeler en geoptimaliseerd door een automatische opstelling. Het bespaart ook regenwater naast bestaande huishoudvoorzieningen door een reservoir te gebruiken, wat onbenut regenwater goed benut.
Hopelijk maakt dit project onze steeds veranderende wereld een beetje beter!
Code
Arduino 101 Irrigatie Systeem (Arduino)
Code voor het bedienen van het Arduino 101 irrigatiesysteem. Upload met Curie core 2.0.2, en elke 1.8.x of hogere IDE. CuriePME vind je op GitHub.
De volledige code is te lang voor deze weergave. Download het bestand voor de complete sketch.
Belangrijke bibliotheken: CuriePME.h, CurieBLE.h, CurieTime.h, SerialFlash.h, SPI.h, LiquidCrystal.h, Servo.h.
De code implementeert:
- BLE-tijdinstelling via nRF Connect
- Temperatuurmeting met TMP36 (30 samples/uur, 14 uur)
- PME-leren en classificeren van optimale wateringtemperatuur (25°C)
- Opslaan in Serial Flash voor herstart-bestendigheid
- Dagelijkse herlercyclus met watering op bepaald uur
- Regensensor en optionele bodemvochtigheidssensor als veiligheid
- LCD-statusweergave
Schema's
Fritzing-diagram voor de schakeling. Batterijen zouden links aangesloten worden. Bodemvochtigheidssensoren zijn optioneel.
Productieproces
- Titaan: Sleutelkenmerken, Toepassingen en Industriële Gebruik
- Kastagnetten: Geschiedenis, Vakmanschap en Uitvoering
- De Geschiedenis, Productie en Toekomst van Lijm: Van Oude Hechtmiddelen tot Moderne Innovaties
- Garen: Typen, Geschiedenis, Productie en Kwaliteitscontrole
- Acetyleen: Productie, Toepassingen en Afhandeling - Een Uitgebreid Overzicht
- Uitgebreid Overzicht van Asbest: Van Oud Gebruik tot Moderne Gezondheidsrisico's
- De Geschiedenis, Ontwerp en Productie van Dobbelstenen: Van Oude Hulpmiddelen tot Modern Gaming
- Multiplex: Geschiedenis, productie en de weg vooruit
- Tin: Van de bronstijd tot moderne industrie – Toepassingen, productie en toekomst
- Geautomatiseerd Plantenwatersysteem met Raspberry Pi & Webdashboard
- Siemens & Bentley kondigen gezamenlijke oplossing aan om elektriciteitscentrales te digitaliseren