Für unser Projekt haben wir drei Hochbeete mit unterschiedlichen Samenmischungen und Bodenarten angelegt:
Die Fettwiese und Grünland mit weniger Arten, sowie die Magerwiese mit einer großen Artenvielfalt.
Die Hochbeete wurden mithilfe von Micro-Computern und deren Sensorik gemessen und die Daten wurden an eine Datenbank übermittelt. Von dort aus entstanden vier einzigartige Projekte die Sensoren der Wiesen kommunikativ aufzuarbeiten.
Der „M5-Stack Core 2“ ist das Herzstück unseres Testaufbaus. Ein Micro-Computer, der unsere Sensorik abfragt und automatisiert an eine Datenbank schickt.
Der M5 Stack ist ein Micro Computer auf dem ESP32 Standard, der eine Möglichkeit bietet, kleine Projekte im Bereich Elektronik bzw. Sensorik zu ermöglichen und hilft dabei bisherige analoge Projekte zu vernetzen.
Er kann cloudbasiert programmiert werden und hat für unsere Anwendung nicht nur ausgereicht sondern diese auch überstanden. So konnten wir Pflanzen in Form von unterschiedlichen Wiesen mit dem Internet vernetzen und eine Art IoT-Anbindung (IoT=Internet of Things) für Pflanzen ist möglich. Die somit erhobenen Messdaten der Wiesen wurden cloudbasiert in einer Datenbank erfasst und konnten von dort aus weiter verarbeitet werden.
Pros des M5-Stacks:
Cons des M5-Stacks:
Es gibt jedoch auch Komplettlösungen vom gleichen Hersteller:
M5 Stack Tough – Wasserabweisend und Hub für bis zu 5 Sensoren integriert
Bei unserer Durchführung haben wir den M5 Stack Tough jedoch nicht verwendet, da dieser eine eigens angepasste Programmierung benötigt. Aufgrund seiner Bauweise und dem Wasserabweisenden Gehäuse könnte er jedoch eine passable Alternative für die Anwendung darstellen.
Stromversorgung:
Der M5-Stack hat einen internen Akku verbaut, der den M5-Stack ein bis zwei Stunden versorgen kann. Das reicht für einen Fortlaufenden Versuchsaufbau jedoch nicht aus, daher haben wir uns auf Powerbanks mit der Kapazität 20.000mAh, diese reichten bei unserem Versuchsaufbau (eine Powerbank für zwei M5-Stacks) bis zu 5 Tage.
[Tüftler und Bastler können den internen Akku auch auf eigene Gefahr abklemmen und die Stromaufnahme des M5-Stacks nahezu halbieren, dieser geht jedoch beim Wechsel der Stromquelle definitiv sofort aus]
Im regulären Betrieb haben wir den internen Akku, den der M5-Stack in seiner Programmierung auch auslesen kann als Status, sobald er Ladung verlor wussten wir, durch eine Benachrichtigung, dass die Powerbank gewechselt werden musste.
Mit einem regulären Wandstecker und USB-C Ladekabel, das beides unbedingt Wettergeschützt angebracht werden sollte, kann die Stromversorgung des M5-Stacks dauerhaft bedient werden. (Die beigelegten USB-C Ladekabel sind lediglich 5cm lang!)
Netzwerk:
Aufgrund der Möglichkeit den M5-Stack direkt über WLAN zu programmieren lag es nahe in der Nähe unseres Aufbaus einen Router auf zu stellen. Ausreichender WLAN-Empfang sollte an dem Standort, an dem die M5-Stacks in Betrieb genommen werden sollen, vorhanden sein. Zuhause kann das Heimnetzwerk natürlich regulät genutzt werden und aufgrund des niedrigen Datenverbrauchs können ggfs. auch Hotspots verwendet werden.
Links ENV3-/ Mitte Light-/ Rechts Color-Sensoren, sie können durch ihre Lego-Kompatiblen Löcher einfach angebracht werden.
Der ENV(3)-Sensor misst Temperatur, Luftdruck und Luftfeuchtigkeit. Das kann die Umweltbedingungen sowie Veränderungen im Wetter erfassen und die unmittelbaren Bedingungen, in denen die Pflanzen stehen.
Bei einer Platzierung an verschiedenen Stellen können außerdem Veränderungen der Werte im Beet, die durch die Pflanzenvielfalt im Zusammenspiel mit Umwelteinflüssen ausgelöst werden, gemessen und verdeutlicht werden.
Der Color-Sensor misst Farbwerte getrennt in Rot, Grün und Blau, damit können die Farben des Beets oder aber die Farbe des Lichts gemessen werden und an verschiedenen Stellen im Beet können Veränderungen der Pflanzen sowie das aufgehen von Blüten und ähnlichem gefärbten Teilen der Pflanzen messen. Die Messung durch den Sensor ist jedoch nur aus nächster Nähe möglich. 1-3 cm Abstand sind optimal.
Der Lichtsensor misst das Vorhandensein von Licht und dessen Intensität, das kann dabei helfen zu erfassen, wie die Lichteinstrahlung den Tag über verläuft. Da Pflanzen durch Photosynthese Licht zu ihrer Nahrung nutzen, ist dies ein wichtiger Umwelteinfluss, der erfasst werden kann.
Der CO2-Sensor misst die Konzentration von CO2 in der Luft in ppm. (Parts per Million)
Der Sensor selbst ist jedoch Fehleranfällig und kompliziert in der Programmierung und Handhabung. Die Werte sind in Hinsicht auf die Wiesen relevant, da diese durch Photosynthese bei Sonnenschein CO2 aus der Luft aufnehmen und bei Nacht CO2 in die Luft abgeben. Dies lässt sich mit dem CO2 Sensor erfassen und speichern, Photosynthese wird messbar.
Kunststoff-Container aus Supermarkt/Baumarkt oder Recycling von vorhandenen Aufbewahrungskisten reicht vollkommen, es ist Kreativität gefragt!
Von Brotdose bis Outdoor Kabelverteilerdosen geht alles, solange:
sog. Unterverteiler Dosen aus dem Baumarkt beinhalten normalerweise Kabelkontakte. Eine IP-Zertifizierung mind. IP65 für den Schutz vor Regen und Gießen ist nötig.
Kabelverteilerdosen aus dem Baumarkt als Gehäuse für die M5-Stacks, zwei Bretter und zwei Metallwinkel als Ablage für die Kunststoff Kiste.
Bei diesem Aufbau sind die Powerbanks und die M5-Stacks getrennt von einander untergebracht. Das erhöht die Ausfallquote durch Umwelteinflüsse deutlich.
Die farbigen Kabel gehen aus den Verteilerdosen weiter zur im Beet angebrachten Sensorik. Die Ausgänge der Kabel sollten am besten nach Unten oder zur Seite heraus geführt werden.
Box aus Sperrholz gelasert, am Beispiel der Magerwiese:
Durch starke Laser können Sperrholzplatten geschnitten werden, dabei kann man Vektordateien bei Diensten, die diese anbieten, hochladen und man erhält die Werkstücke per Post. Es sei dazu gesagt, dass die Kosten für diese Kiste höher sind als die für die bisher gezeigten Möglichkeiten.
Die Werkstücke müsst ihr Schleifen und mit Holzleim verleimen. Magnete Einkleben, um die Halterung für die M5-Stacks innerhalb der Box zu erstellen. Danach kann Holzlasur aufgebracht werden, diese macht die Kiste wetterbeständig, da sich ohne diese Behandlung die Schichten der Pressspanplatten voneinander lösen würden.
Die Lasur in 3 Schichten auftragen und danach die Acrylglasfront einsetzen. Diese wurde nicht verklebt, da sie sich von selbst sehr gut gehalten hat ggfs einkleben.
Die Einzelteile müssen zunächst geschliffen werden. Überstehende Ränder und Kanten müssen abgeschliffen werden.
Magnete aufkleben, sie halten die M5-Stacks an der Rückwand. Dazu eignen sich vor allem selbstklebende Magnete.
Holzleim auf den sich berührenden Kanten auftragen und danach unter Druck mind. 3-4h bei Raumtemperatur aushärten lassen.
Holzlasur auftragen. In mind. 3 Schichten macht das die Box Wetterbeständig. Nach jeder Schicht mind. 12h trocknen lassen.
Die Umwelteinflüsse wie: Niederschlag, Temperaturen, Wind, Tiere und bei öffentlich zugänglichen Orten auch neugierige Mitmenschen. Der Outdoorbetrieb ist demnach deutlich aufwendiger.
Soll der Versuchsaufbau von der Außenwelt geschützt durchgeführt werden müssen diese Faktoren natürlich nur vereinfacht berücksichtigt werden. Dennoch sollten darauf geachtet werden, dass die Elektronik geschützt vor Wasser aufbewahrt werden sollte und Faktoren wie Mitbewohner, Haustiere aber auch direkte Sonneneinstrahlung kann beispielsweise die Messdaten verfälschen.
Aufbewahrung kann in jeder Unterbringung erfolgen, es sollte dennoch bedacht werden, dass die Mini-Computer auch nicht zu heiß werden sollten.
Deshalb:
Den Aufbau vor: direkter Sonneneinstrahlung und Wasser durch gießen schützen. Die Stromversorgung kann mit Powerbank erfolgen, dann ist jedoch regelmäßiger Wechsel nötig! Besser ist dabei ein Ladegerät mit dauerhafter Stromversorgung.
Wie geht man ran?
Zuerst solltet ihr diese Webseiten öffnen:
Wir nutzen eine Software, die vom Hersteller der M5 Stacks angeboten wird. Damit lässt sich einfach Code erstellen. (Es ist auch möglich eigenen Code über MicroPython zu schreiben).
Warnung!
Mac Nutzer bitte folgenden Link beachten, sodass ihr euren Stack mit eurem Mac-Gerät verbinden könnt. Auf Windows funktioniert es problemlos.
https://www.hackster.io/shahizat/getting-started-with-esp32-on-a-mac-4b3997
Schritt 1: Wahl des M5 Stack
Wählt zuerst das UI Flow aus, das zu eurem M5 Stack passt.
Schritt 2: Custom Blocks öffnen
WICHTIG!
Damit ihr euren Fortschritt im Code fehlerfrei öffnen könnt, müsst ihr zuerst den Tactilenews-Block öffnen.
–> Diesen könnt ihr hier downloaden <–
Wichtig!
Achtet bitte darauf, wo ihr die Datei abspeichert, sodass ihr sie später wieder findet.
Fügt ihr diese nicht hinzu, wird Code stellenweise fehlen und nicht korrekt funktionieren.
Die Tactilenews-Blöcke bauen eine Verbindung zu Airtable auf und lassen euch die Daten dorthin senden.
Schritt 3: Die Sensoren im UI Flow hinzufügen
Achtet darauf, die korrekten Sensoren auszuwählen, die ihr an eurem Stack angeschlossen habt. Je nach hinzugefügten Sensoren, gibt es neue Auswahlmöglichkeiten im UI Flow.
Schritt 4: Airtable einrichten
Airtable ist der Ort, an dem all eure gesammelten Daten landen. Von dort aus könnt ihr sie für eure Projekte weiter verwenden.
Warnung!
Airtable bietet eine kostenlose Option an. Dort könnt ihr lediglich 1.000 Einträge speichern. Dies sollte zum ersten Testen reichen, beachtet diese Restriktion jedoch, solltet ihr euer Projekt skalieren wollen.
Erstellt euch einen Airtable Account und eure erste „Base“.
Ihr könnt bereits erste Spalten erstellen. Solltet ihr mehrere Sensoren betreiben, dann erschafft eine Spalte, um sie dort differenzieren zu können. Diese Sensoren müssen dann ihren spezifischen Namen mitsenden. So können die Einträge im Nachhinein zugeordnet werden.
Wichtig ist der Sensortyp. In unserem Set-Up gab es Feuchtigkeit, Temperatur, Luftdruck und Farbe. Bei der Farbe eignet es sich die Werte einzeln zu schicken. Diese labelt ihr im Code einzeln.
Ebenso wichtig ist es, eine Spalte für das Datum und die Tageszeit zu haben, damit man Schlüsse über beispielsweise Temperatur und Uhrzeit ziehen kann.
Schritt 5: API und BaseID von Airtable
Den API Schlüsel zu bekommen, ist einfach. Man navigiert über das Profilbild zum Developer hub.
Dort könnt ihr euch auch direkt den Schlüssel anzeigen lassen.
Die BaseID ist genauso leicht herauszufinden, jedoch etwas versteckt.
Dazu müsst ihr in der richtigen Base sein. Anschließend erkennt man die BaseID in der URL. Sie beginnt mit „app“ und befindet sich innerhalb zwei Schrägstrichen.
Schreibt euch den API Key und die BaseID auf, wir brauchen sie später.
Schritt 6: Das Interface vom Stack gestalten
So ähnlich könnt ihr euer Display auch gestalten. Per Knopfdruck lassen sich alle wichtigen Informationen anzeigen: Temperatur, Luftfeuchte, Farbwert, die Sensor ID mit API Key, aber auch Uhrzeit und Batteriestand.
Mithilfe der Labels (siehe linke Spalte) kann man die Texte hinzufügen.
Schritt 7: Das Coden
Coden, das erledigt man hier indirekt. Über die hilfreichen Bausteine kann man sich kinderleicht individuelle Programme zurechtbauen.
Wir beginnen mit dem SetUp. Hier setzen wir die LED des Stacks auf aus und schalten auch das Display aus. Dadurch wird die Batterielaufzeit verlängert.
Wir holen uns über den NTP host die Uhrzeit und setzen unsere Zeitzone. Die Uhrzeit könnt ihr euch auf dem Display anzeigen lassen.
Sofort darauf folgen zwei Events, die nacheinander ablaufen. Diese Events finden jede halbe Stunde statt. Das Event „send_data“ hat eine Verzögerung von 10 ms, damit der Stack Zeit hat die Daten zu sammeln.
Jetzt ist es wichtig, die Timer zu erstellen.
Hinweis: Wir nutzen Timer, damit der Stack nicht ständig die Sensordaten abfragt, sondern nur jede halbe Stunde. Damit soll die Batterie weitestgehend geschont werden.
Die Timer müssen benannt werden. Zuerst haben wir den „get_data“, der die Daten sammelt, und danach „send_data“, der die Daten an Airtable versendet. Achtet darauf, dass ihr die Timer und Events entsprechend und in richtiger Reihenfolge benennt.
Im Timer „get_data“ erstellen wir Variablen, diese sind die Werte, die wir anschließend an Airtable senden.
Wichitg!
Denkt dran, alle Werte, bzw. Variablen, in Strings zu konvertieren, sodass alles korrekt gesendet und empfangen wird.
Die Variable „temperatur“ definieren wir folgendermaßen. Wir nehmen die Temperatur aus dem ENV 3 Sensor und reduzieren sie auf eine Dezimalstelle.
Die Bausteine der Sensoren könnt ihr unter Units finden.
Die anderen Variablen folgen der selben Logik. Es wird die Variable benannt, dann konvertieren wir die Daten zu Strings, und fügen die Sensorwerte hinzu.
Bei dem Luftdruck kommt es auf den Sensor an. Beim ENV 3 Sensor muss man noch Mathe-Bausteine hinzufügen und durch Hundert teilen, damit man den korrigierten Luftdruck sendet. Beim ENV 1 muss man dies nicht erledigen.
Der Timer „send_data“ folgt dem Timer „get_data“.
Hier nutzt ihr nun die custom Blöcke, die ihr zu Beginn hinzugefügt habt.
Zuerst muss der Stack wissen, wohin er die Daten sendet. Tragt nun euren API-Key und eure BaseID ein. Anschließend könnt ihr über den Team Namen einen von euch gewählten Namen für den spezifischen Stack nehmen.
Dies ermöglicht es euch mehrere Stacks auseinanderzuhalten.
Als nächstes sendet ihr eure Daten. Nennt bei den Einträgen die korrekte TableID, den Sensortypen und hängt die korrekte Variable an, die zuvor erstellt und definiert habt.
Macht dies mit allen Sensortypen und dann seid ihr mit dem Coden fast fertig.
Wollt ihr in Echtzeit euren M5 Stack arbeiten sehen, so solltet ihr Nutzen vom Display machen.
Um das Display zum Laufen zu bringen, brauchen wir diesen Code hier:
Sobald man auf Button A drückt, wird die Helligkeit des Displays auf 70 % gesetzt und es wird die Uhrzeit angezeigt.
Auch der Batteriestand wird angezeigt und ist mit einem Balken hinterlegt.
Es ist natürlich nicht notwendig, aber wir haben dem Balken etwas Farbe gegeben, je nach Akkustand. Jede Abstufung hat eine andere Farbe und wird durch Logik-Bausteine ermöglicht.Auch die Sensorwerte werden direkt auf dem Display angezeigt.
Anschließend schaltet sich das Display nach einer Periode von 2 Sekunden ab. Das könnt ihr je nach Belieben ändern!
Und das war es fast schon!
Schritt 8: Den Code auf den Stack bringen
Im rechten unteren Rand habt ihr drei Buttons. Nutzt am besten den „Run“ Command. Dann wird der Code einmalig auf das Gerät geschrieben und er startet sofort mit seiner Aufgabe.
„Download“ lädt den Code auf das Gerät runter.
Wichtig!
Achtet bitte darauf, wo ihr die Dateien abspeichert, sodass ihr sie später wieder findet.
Grundsätzlich ist letztere Option sicherer, denn das Programm müsste nach einem Reboot von selbst neu starten, doch dies tat es für uns nicht.
Ein Zugriff von der Ferne ist dann auch nicht mehr möglich, weshalb wir den „Run“ Command empfehlen. Sollte sich der Code mal aufhängen (was bei uns sehr selten vorkam), dann könnt ihr auch von der Ferne, solange ihr den API Key habt und das Gerät mit dem Internet verbunden ist, den Code neu bespielen und der Stack sammelt weiter fleißig Daten.
Disclaimer!
Es gibt mit Sicherheit viele weitere Wege die Daten an Airtable zu senden, doch mit dieser Logik, dürfte es die zuverlässigste, stromsparendste und einfachste Lösung sein.
Und das war es! Viel Erfolg beim Experimentieren und Daten sammeln!
Microcontroller von M5Stack mit der ENV-III Unit (Temperatur, Luftdruck und Luftfeuchtigkeit)
1. Datenmessung in der Wiese
Auf den Laborwiesen sind Mikrocontroller (M5Stack) mit Sensoren installiert, die verschiedene Umweltdaten erfassen: Im Testmonat Juni wurden alle 30 Minuten Temperatur, Luftfeuchtigkeit, Luftdruck, CO2-Gehalt, Licht- und sogar Farbwerte gemessen.
void send_infrablueImage_azure() {
// Load Infrablue Picture
while (SD.begin(CS_SD));
String infrablueFilename = String (table_index) + "BLUE.JPG";
File infrabluePicture = SD.open(infrablueFilename);
// Get the size of the image (frame) taken
while SD.begin(CS_SD))
(!infrabluePicture.available());
long jpglen = infrabluePicture.size();
// Prepare request
Kunststoff-Container aus Supermarkt/Baumarkt oder Recycling von vorhandenen Aufbewahrungskisten reicht vollkommen, es ist Kreativität gefragt!
Von Brotdose bis Outdoor Kabelverteilerdosen geht alles, solange: