DasFilisera Slimme Kweekkas: Geavanceerd Plantengroeimonitoringssysteem
Onderdelen en benodigdheden
| Onderdeel | Aantal | Opmerking |
|---|---|---|
| DHT22 temperatuursensor | 1 | Binnen temperatuur/vochtigheid |
| DS18B20 | 1 | Waterdichte buitentemperatuursensor |
| Bodemtemperatuur- en vochtigheidsensor FS200-SHT25 | 1 | I2C-interface (SCL/SDA) |
| 4-kanaals relaismodule | 1 | Voor waterklepbesturing |
| 2-kanaals relaismodule | 1 | Voor vensterbesturing |
| Ultrasone sensor HC-SR04 | 1 | Waterniveaumeting |
| Arduino MKR1000 | 1 | WiFi-enabled microcontroller |
Apps en online diensten
- DasData – Cloud dataplatform voor opslag en visualisatie
- Microsoft Visual Studio 2015 – Voor Windows-applicatieontwikkeling
Over dit project
Kweek planten en groenten met volledige inzicht in hun omgevingscondities. Met een Arduino MKR1000 wordt dit eenvoudig gerealiseerd.
Vereisten voor plantengroei
Plantengroei hangt af van ideale omgevingscondities zoals temperatuur, vochtigheid, licht en mineralen/zuurstof. Het leveren van voldoende water en het handhaven van de juiste temperatuur in de kweekkas kan lastig zijn, maar niet met dit geautomatiseerde systeem.
Hardware-overzicht
Temperatuur / Vochtigheid
- TH1 – Buitentemperatuur: Waterdichte DS18B20 sensor op pin D1
- TH2 – Binnentemperatuur/vochtigheid: DHT22 sensor op pin D0
- TH3 – Bodemcondities: FS200/SHT25 sensor via I2C (pinnen 12/11 voor SCL/SDA)
Waterniveau
- W1: Ultrasone sensor HC-SR04 voor waterniveaumeting (Echo op A0, Trigger op A1). Op basis van deze waarde kan een klep worden bestuurd via R1 (4-kanaals relais).
Luchttemperatuur / Zuurstof
- A1: Op basis van temperatuur/vochtigheidswaarden kunnen ramen worden geopend via R2 relais. Afstellen naar lokale klimaatcondities.
Relais R1 / R2
Voor het sturen van acties zoals ramen openen of pompen starten. R1 aangesloten op digitale pinnen 7,8,9,10 en R2 op pinnen 5,6.
MKR1000 – aREST
Alle sensoren zijn aangesloten, nu data uitlezen en betekenisvol maken met de aREST-bibliotheek, die een webinterface met JSON-formaat biedt. Gebruik de meegeleverde bibliotheken en .ino-bestanden, pas WiFi-instellingen aan.
Data en interface
Met de device-interface kunnen we data lokaal visualiseren. Een Windows-applicatie (Visual Studio 2015, .NET) toont live condities, dagelijkse historie en logs.
Voor cloudopslag wordt DasData gebruikt met hun kweekkasconfiguraties of eigen datakanalen.
Pas de DsKey en AKey in Settings.txt aan. Als alles werkt, zou je data online moeten zien.
Kweekkasautomatisering
Bepaal welke kleppen of motoren acties uitvoeren op basis van jouw kweekkasspecificaties en afmetingen. Alles kan via de relais worden bestuurd.
Code
- Filisera_Arduino – Hoofdsketch voor MKR1000
- libraries.zip – Benodigde bibliotheken
- Filisera - vb.zip – Visual Studio project (.NET)
- Filisera - VS – .NET applicatie voor data-uitlezing en visualisatie
Arduino-sketch (Filisera_Arduino)
/* DASFilisera met aREST Library voor Arduino MKR1000 */
#include
#include
#include
#include "DHT.h"
#include
#include
#include
#include
// Sensor definities
#define DHTPIN 0
#define DHTTYPE DHT22
#define ONE_WIRE_BUS 1
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Variabelen voor sensorwaarden
float umidSol = 0, umidAer = 0, tempIn = 0, tempOut = 0, tempSol = 0, umidexIn = 0;
// Ultrasonische sensor
#define echoPin A0
#define trigPin A1
long duration;
int HR_dist = 0;
int minimumRange = 5, maximumRange = 200;
// WiFi en aREST
char ssid[] = "WIFI_AP";
char password[] = "WIFI_PASSW";
#define LISTEN_PORT 80
WiFiServer server(LISTEN_PORT);
aREST rest = aREST();
// Relais pinnen
int inReleu1Ventil = 6, inReleu2Ventil = 7, inReleu3Ventil = 8, inReleu4Ventil = 9;
int inReleu1Lateral = 10, inReleu2Lateral = 11;
void setup() {
Serial.begin(115200);
// aREST variabelen exposeren
rest.variable("Vol_container", &sqrLevel);
rest.variable("Umiditate_sol", &umidSol);
rest.variable("Umiditate_aer", &umidAer);
rest.variable("Temp_in", &tempIn);
rest.variable("Temp_out", &tempOut);
rest.variable("Temp_sol", &tempSol);
rest.function("led", ledControl);
rest.set_id("1");
rest.set_name("mkr1000");
// WiFi verbinding
while (status != WL_CONNECTED) {
WiFi.begin(ssid, password);
delay(10000);
}
server.begin();
}
void loop() {
getmyDistance();
getInsideVals();
// getOutSideVals(); // Optioneel
// getSoilVals(); // Optioneel
WiFiClient client = server.available();
if (client) rest.handle(client);
}
// Sensor uitleesfuncties: getmyDistance(), getInsideVals(), getOutSideVals(), getSoilVals()
// API functie: ledControl()
Windows-applicatie (Visual Basic / .NET)
De applicatie leest periodiek sensordata via HTTP, toont grafieken (temperatuur, vochtigheid, volume), stuurt data naar DasData-cloud, en biedt handmatige bediening van relais (waterklep, ramen).
Schema's
PDF-bestand met aansluitschema's voor sensoren en relais.
Bronbestanden
Productieproces
- Bouw Een Raspberry Pi Temperatuur Logger Met Een $5 I2C Sensor
- Meerdere DS18B20 1-Wire Sensoren Aan Een Raspberry Pi Koppelen Voor Nauwkeurige Temperatuurmonitoring
- TMP006 Infrarood temperatuursensor met Raspberry Pi: Python bibliotheek & installatiegids
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Hoe een DS1820 One-Wire temperatuursensor aan te sluiten op een Raspberry Pi via GPIO
- Hoe een DS18B20 One-Wire Digitale Thermometer aan te Sluiten op een Raspberry Pi – Stapsgewijze Handleiding
- Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
- Een Raspberry Pi thuistemperatuurmonitor bouwen met MCP9808, InfluxDB & Grafana
- Precieze infrarood temperatuurmeting voor kleurgevoelige processen
- Precisie lager temperatuursensor – Nauwkeurige detectie & monitoring
- NASA Goddard's Lab-on-Chip sensor levert realtime stroom- en temperatuurmonitoring