Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektesose21:pflanzenroboterpublic:start

Einführung

Unser Ziel war es einen Roboter zu bauen, sich automatisch um eine bis mehreren Pflanzen kümmert. Dabei soll es die Helligkeit messen und bei Bedarf eine LED anschalten, damit die Pflanze genügend Licht bekommt. Außerdem sollte sie noch die Feuchtigkeit der Pflanze messen und diese mit Wasser begießen, falls es der Pflanze an Wasser mangelt. Zusätzlich sollte es die Helligkeits- und Feuchtigkeitswerte und auch die Laufzeit des Programms auf dem Arduino und auf dem eingebauten Monitor ausgeben. Damit der Roboter „angeschaltet“ wird, muss lediglich nur ein Blumentopf auf einem Schnappschalter gelegt werden und schon würde der Roboter von alleine funktionieren.

Methoden und Umsetzung

Überblick über das Gesamtsystem

Abbildung 1 und 2: Die Funktionsweise des Roboters und wie es im groben ganzen aussieht

Aus welchen Baugruppen besteht der Roboter?

Der Roboter besteht aus 3 Hauptteilen: Den Sensorenteil, den Wasserbewässerungsteil und den Gerüstteil.

Der Gerüstteil besteht aus einem Holzpfahl, 2 Holzplatten und einem Monitor. Der Holzpfahl bildet die Stütze für das gesamte Gerüst. Die 2 Holzplatten bilden den Boden des Roboters. Es sind 2 Holzplatten, die jeweils mit Eckstützen verbunden sind, damit etwas Raum zwischen den Platten für die Verkablung ist. Außerdem befindet sich am Holzpfahl der Monitor, der die jeweiligen Werte ausgibt.

Abbildung 3: Der Gerüstteil

Der Sensorenteil besteht aus einem Phototransistor, 3 Feuchtigkeitssensoren und 3 Schnappschalter. Der Phototransistor befindet sich in der Verkablung und ist leider schlecht zu erkennen, die Feuchtigkeitssensoren befinden sich im Topf und die Schnappschalter sind unten in der Holzplatte.

Abbildung 4: Der Sensorenteil

Der Wasserbewässerungsteil besteht aus einem Magnetventil, einem Wasserschlauch, einem Wasserbehälter, einem Steppermotor, einem Piezo und einer Schiene. Der Wasserbehälter ist am Holzpfahl befestigt, das Magnetventil unter dem Holzast, die Schiene und der Steppermotor am Ende des Holzasts, der Wasserschlauch durchläuft am Holzast entlang und der Piezo liegt unten auf dem Arduino.

Abbildung 5: Der Wasserbewässerungsteil

Welche Aufgaben waren zu lösen?
  • Helligkeit messen
  • Feuchtigkeit der Töpfe messen
  • Bewegung der Schiene mithilfe von einem Steppermotor
  • Durchlassung von Wasser mithilfe von einem Magnetventil
  • Gemessene Werte auf dem Arduino und an eingebauten Monitor ausgeben
  • Milhilfe von einem Schnappschalter erkennen, ob sich an der Stelle ein Topf befindet
Welche Aufgaben wurden bewusst rausgenommen?
  • Eine eigene App entwickeln, womit die Benutzung des Roboters erheblich erleichtert wird
  • Mehrere Pflanzenarten mithilfe von Klassen einführen
  • Spracheingabe für manuelle Befehle

Einzelne Systembestandteile

Schnappschalter

Der Schnappschalter ist quasi unser Anfang unseres gesamten Konstrukt. Es ist ein Schalter, der betätigt wird, indem man ein Objekt auf diesen raufstellt. Dabei erkennt der Schnappschalter, dass es betätigt wurde und gibt ein Signal weiter. Da, wenn man einen Topf auf dem Schnappschalter legt, es permanent betätigt ist, leitet man somit den ganzen Mechanismus ein, da es permanent eine „1“ weiterleitet. Sobald der Topf fehlt, passiert beim Roboter gar nichts, es wird zwar ein Signal weitergegeben aber eine „0“, was den Roboter lahmlegt.

Phototransistor und LED-Lampe

In unserem Roboter ist ein Phototransistor, welches die Helligkeit messen sollte und eine LED-Lampe eingebaut. Die Helligkeit wird in einem Wert an das Arduino eingegeben und je höher der Wert ist, desto heller ist die Umgebung. Die Werte spannen von 0 bis 1023. Sollte der Wert unter einer bestimmten Grenze gehen, was in unserem Fall 500 ist, wird die Dauer der sogenannten „Dunkelheit“ gezählt und sollte diese Dauer eine festgelegte Grenze überschreiten, was für uns für Testzwecke 3 Sekunden waren, dann wird die LED-Lampe angeschaltet. Auch dieser hat eine festgelegte Dauer (bei uns 10 Sekunden), damit die Pflanzen nicht zu viel Licht abbekommen. Schaltet sich die LED-Lampe nach einer gewissen Dauer aus, geht sie in einen Cooldown ein, was heißt, dass sie für eine bestimmte Zeit (auch wieder 10 Sekunden bei uns) nicht mehr angehen kann.

Die Zeitfunktion

Im LED-Teil des Codes wurde zusätzlich eine sogenannte Zeitfunktion geschrieben. Diese Funktion ist verantwortlich für das Messen der Dauer der jeweiligen Werte und auch für die gesamte Laufzeit des Programms. Das heißt, das es die Dauer der Zeit im Schatten zählt oder wie lange die LED-Lampe schon angeschaltet ist oder wie lange der Lichtcooldown noch besteht. Zusätzlich gibt es auch die Laufzeit des Programms aus mithilfe des „millis-Befehls“. Da das Befehl lediglich nur in Millisekunden zählt, haben wir Variablen genutzt, die die Zeiteinheiten umwandelt. Aus Millisekunden werden Sekunden, Sekunden zu Minuten usw. Wir haben den Code auch so geschrieben, dass nur die nötige Zeit ausgegeben wird, das heißt: Wenn das Programm momentan nur 2 Minuten und 13 Sekunden läuft, dann werden auch nur „2 Minuten, 13 Sekunden“ ausgegeben und nicht „0 Tage, 0 Stunden, 2 Minuten, 13 Sekunden“.

Feuchtigkeitssensor

Die Töpfe werden jeweils mit einem Feuchtigkeitssensor versorgt. Dieser Feuchtigkeitssensor wird dann in die Erde gedrückt, sodass es die Feuchtigkeit der Erde messen kann. Wie beim Phototransistor werden hier auch die Werte gemessen und je höher der Wert ist, desto feuchter ist die Erde. Sobald der Wert unter eine bestimmte Grenze geht, was bei uns wieder 500 ist, ist die Erde „trocken“ und muss bewässert werden. Dies wird mithilfe des „Wasserversorgungssystem“ getan.

Das Wasserversorgungssystem

Das „Wasserversorgungssystem“ ist ein System bestehend aus einem Magnetventil, einem Wasserschlauch, einem Wasserbehälter, einem Piezo und einer Schiene.

Zuerst wird erstmal gemessen, ob im Wasserbehälter überhaupt Wasser ist. Dies wird mithilfe von losen Kabeln möglich. Wenn die Kabeln im Wasser hängen, übertragen sie elektrische Signale, sprich sie leiten ein Signal oder Strom weiter. Somit wird eine „1“ zum Arduino übermittelt und besagt, dass da tatsächlich Wasser enthalten ist. Sollten die Kabeln nicht im Wasser stehen, wird kein Signal übermittelt und der Arduino bekommt den Wert „0“. Wenn dies eintrifft, sollte man den Wasserbehälter nachfüllen und der Roboter gibt Alarm durch den Piezo, was solange ein Geräusch abspielt bis Wasser wieder nachgefüllt wurde.

Abbildung 6: Der Wasserbehälter

Wir haben Wasser im Behälter und der Boden einer Pflanze ist trocken, das wissen wir dank des Feuchtigkeittsensors. Wenn dies eintrifft, wird der „Wasserbefehl“ eingeleitet. Das Wasser floss bis dahin schon mithilfe eines Wasserschlauchs aber da der Magnetventil normalerweise zu ist, kommt es zu einem Stillstand. Der Wasserbefehl gibt dem Magnetventil den Befehl sich zu öffnen, damit Wasser durchfließt. Dabei kann das Wasser weiterfließen bis es die Schiene erreicht.

Abbildung 7: Der Wasserschlauch und das Magnetventil

Zu guter Letzt sind wir an der Schiene angekommen. Dieser bewegt sich auf festgelegten Entfernungen zwischen 3 „Stops“ und direkt über den 3 Töpfen. z.B. wenn Topf 1 trocken ist, bewegt sich die Schiene direkt über Topf 1, damit dieser bewässert wird und das Gleiche gilt für die anderen 2 Töpfe. Dies ist dank des Steppermotors möglich, da dieser die Schiene bewegt. Bei Bedarf wird das ganze Wasserversorgungssystem wiederholt und muss nicht manuell wieder zurückgesetzt werden.

Abbildung 8: Die Schiene und der Steppermotor

Monitor

An unserem Roboter haben wir einen kleinen Monitor angebaut, der Werte angeben sollte. Diese Werte sind, welche Töpfe momentan auf einem Schnappschalter liegen, die Helligkeits- und Feuchtigkeitswerte und auch wie lange das Programm momentan läuft. Da es ein sehr kleiner Monitor ist mit begrenzten Platz, haben wir die Ausgaben sehr minimalistisch implementiert. Beispiel für Topf auf Schnappschalter:

Topf:

    1   2   3
    J   N   J

Die Zahlen sollten die jeweiligen Topfnummern sein und „J“ steht für „Ja“ und „N“ steht für „Nein“.

Die Schaltung

Ergebnis und Diskussion

Stand des Roboters

Unser Roboter ist momentan komplett funktionsfähig und erfüllt unsere Erwartungen: Es misst die Helligkeit und die Feuchtigkeit, der Schnappschalter erkennt wenn es betätigt wird, der Monitor gibt Werte aus, das Magnetventil öffnet sich wenn der Pflanzenboden trocken ist und die Schiene bewegt sich auf der fixierten Bahn.

Jedoch ist der Roboter leider nicht frei von Problemen. Wir haben es leider nicht geschafft, eine Lösung für die Verdichtung des Wasserbehälters bzw. -schlauchs zu finden, was heißt, dass der Roboter in der Theorie funktioniert aber nicht vollständig in der Praxis, da Wasser tropft und diese Tropfen möglicherweise den Roboter unbrauchbar machen könnten. Außerdem haben wir in unserem Code so viele delay-Befehle hinzugefügt, dass die Werteausgabe auf dem Arduino und auf dem Monitor sehr verzögert ist, sprich es gibt z.B. die Laufzeit des Programms in 5 Sekunden aus, obwohl schon 50 Sekunden vergangen sind. Wir haben versucht, diese delay-Befehle zu reduzieren aber das würde andere Prozesse im Code umständlicher machen, weshalb wir uns leider gegenentscheiden mussten.

Verbesserungsmöglichkeiten und Fazit

Zuerst wäre es wichtig, die Wasserversorgung (Wasserbehälter und -schlauch) komplett zu verdichten, das würde den Roboter vollenden. Zusätzlich sollte man auch den Code so überarbeiten, sodass man sich weniger auf delay-Befehlen verlässt sondern auf eine andere Alternative, der keine Funktionen oder Befehle verzögert. Außerdem wäre es auch schön, wenn der Roboter einen simpleren Design bekommt. Es hat schon ein relativ einfachgehaltenes Design, jedoch würde man beim ersten Anblick nicht verstehen, was er genau tut und vor allem kann man viele Komponenten nicht erkennen wegen dem Kabelsalat.

Uns ist aufgefallen wie anspruchsvoll so ein Projekt sein kann, sowohl es zu planen als auch umzusetzen und die Corona-Pandemie hat das auch erheblich erschwert. Wir haben ursprünglich gedacht, dass unsere größte Problematik bei der Software auftauchen würden und haben die Implementierung der Hardware unterschätzt. Letztendlich ist uns aufgefallen, dass sowohl Hardware- und Softwareimplementierung beide ungefähr gleich anspruchsvoll ist und beides uns viel Zeit und Mühe gekostet haben. Jedoch kann ich von mir behaupten, dass das ganze Projekt eine gute und auch spaßige Erfahrung war trotz der ganzen Situation und ich denke, ich kann das Gleiche für den Rest meiner Gruppe behaupten. Wir haben alles geschafft, was wir und vorgenommen haben und sind zufrieden mit dem Endprodukt.

Code

projektesose21/pflanzenroboterpublic/start.txt · Zuletzt geändert: 2021/10/16 09:41 von d.golovko