Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise20:ichhabdurstpublic:start

Projekt Dokumentation


Einführung


Pflanzen sind für die Umwelt und unsere Psyche sehr wichtig, zudem werden Pflanzen aus dekorativen Gründen gehalten.

Viele Menschen haben deshalb Pflanzen in ihren Wohnungen/Häusern stehen. Doch durch den oft sehr ausgefüllten Alltag werden die Pflanzen häufig vernachlässigt und auch während des Urlaubs benötigen sie Pflege. Bei vielen kommt dann das Gießen zu kurz und die Folgen sind dann meistens, dass die Pflanze Blätter verliert oder im schlimmsten Fall ganz austrocknet.

Was könnte Abhilfe schaffen?

Gemeinsam entwickelten wir die Idee, einen Roboter zu konstruieren, der die ausreichende Versorgung von Pflanzen mit Wasser sicherstellt: den Gießroboter „ichhabdurst“

Zu seinen Aufgaben gehört das Messen der Bodenfeuchtigkeit im Blumentopf und bei Bedarf die Zufuhr von Wasser zu ermöglichen. Wesentlich ist hierbei, dass eine ausreichende Menge Wasser zugeführt wird, sodass die Pflanze weder vertrocknet noch überwässert wird


Aufbau

Abbildung 1: Aufbau des "ichhabdurst" Roboters


Mithilfe dieser Abbildung kann man sehr schön den groben Aufbau, mit den einzelnen Komponenten, unseres Gießroboter „ichhabdurst“ erkennen.

Das Grundgerüst unseres ichhabdurst-Roboters besteht aus Holz. Wir haben eine Grundplatte, die ebenfalls aus Holz besteht, wo das weitere Gerüst und der Blumentopf, samt der Pflanze draufsteht. Unsere Roboter ist stationär und ist für einzelne Pflanzen vorgesehen Unser Roboter wird aus verschiedenen Komponenten zusammengebaut und so war das Aufteilen der Arbeit in der Gruppe relativ einfach.

Die einzelnen Komponenten waren:

  • das Magnetventil, um das Wasser kontrolliert zur Pflanze zu befördern.
  • die Kamera, um den Blumentopf zu berechnen
  • der Feuchtigkeitssensor, Feuchtigkeit im Topf zu messen
  • den Wasserstand in der Flasche messen
  • die Armbewegung, um mehr Fläche zu gießen

Materialliste:

  • 1x Arduino Nano
  • 1x Magnetventil
  • 1x Kamera
  • 1x Servo
  • 1x Feuchtigkeitssensor
  • Schlauch
  • Pflanze
  • 1x Flasche
  • Holz
  • Holzplatte


Abbildung 2: "ichhabdurst" Roboter



Schaltplan


Abbildung 3: Schaltplan



Aufgaben


Feuchtigkeit des Bodens

Zunächst mussten wir erarbeiten, wie man die Feuchtigkeit im Blumentopf am besten misst und diese Daten auswertet. Wir haben uns dafür entschieden, einen Feuchtigkeitssensor zu benutzen. Anhand der von dem Sensor angezeigten reinen Luft- und Wasserwerte konnten wir die jeweiligen Werte für einen bestimmten Feuchtigkeitsgehalt in Prozent ausrechnen.

Für die Berechnung des Schwellenwertes haben wir mittels des Feuchtigkeitssensors bei zwei Blumentöpfen eine Messdatenreihe erstellt und im Anschluss analysiert. Dabei haben wir festgestellt, dass die Messdaten in Abhängigkeit von der verwendeten Erde sehr unterschiedlich sind: Während der Schwellenwert beim ersten Blumentopf ca. 50% betrug, lag er beim zweiten bei etwa 35%. Dies bedeutet, dass kein einheitlicher Schwellenwert existiert, sondern dieser immer für jeden Blumentopf einzeln ermittelt werden muss.




Abbildung 4: Feuchtigkeitssensor


Magnetventil

Da wir nicht wollten, dass die Pflanze dauerhaft gegossen wird haben wir überlegt wie wir das Wasser stauen können. Wir haben uns für ein Magnetventil entschieden, da ein Magnetventil ideal ist um ein kontrolliertes Gießen zu ermöglichen. Es wird nur dann gegossen wenn das Magnetventil geöffnet wird. Das Magnetventil wird nur dann geöffnet, wenn ein bestimmter Schwellenwert erreicht wird. Wir haben uns für den Wert 50% entschieden, heißt wenn diese 50% unterschritten werden, wird gegossen. Das Ventil wird dann schließlich in einem 2 Sekunden Takt geöffnet.



Ein Arduino hat in unseren Fall nicht genug Energie, deswegen benutzen wir zusätzlich ein MOSFET-Transistor. Ein MOSFET-Transistor wirkt als Widerstand, der durch Spannung gesteuert wird, so kann der MOSFET-Transistor den Stromfluss in mehreren Größenordnungen ändern. Durch den MOSFET-Transistor kann der Strom vom Akku direkt auf den Arduino geschaltet werden.



Abbildung 5: Magnetventil


Blumentopf-Erkennung

Außerdem wollten wir, dass der Roboter den Blumentopf erkennen kann, damit das Wasser nicht neben den Topf gegossen wird. Dazu verwendeten wir eine Kamera und ein Verfahren aus der Bildverarbeitung– die Hough-Transformation. Mit diesem Verfahren können Kreise und Linien erkannt werden. Wir brachten die Kamera so an, dass der Blumentopf von oben aufgenommen wurde. Da er die Form eines Kreises hat, eignete sich die Hough-Transformation für die Erkennung.

Bei diesem Verfahren betrachtet man den dreidimensionalen Hough-Raum, wo die drei Dimensionen den folgenden Parametern eines Kreises entsprechen: die x-Koordinate des Mittelpunktes mx, die y-Koordinate des Mittelpunktes my und der Radius r (s. Abb.6). Alle Kombinationen von diesen Parametern werden ausprobiert. Das heißt, dass jeder Punkt aus x und y in die Gleichung eingesetzt wird. Wenn die Gleichung erfüllt ist, wird dieser Punkt im Hough-Raum geschwärzt. So bildet sich dann der zu erkennende Kreis heraus.

Den dafür benötigten Code haben wir aus der Open-CV Library importiert und für Processing angepasst.



Abbildung 6: Darstellung des Hough-Raums



Abbildung 7: Ausführung des Programms



Armbewegung

Wichtig war natürlich im Anschluss, dass der erkannte Kreis sich auch entsprechend auf die Armbewegung des Roboters auswirkt. Unser Plan war es, dass der Arm sich gleichmäßig über dem Blumentopf hin und her bewegt, ohne dabei Wasser neben dem Blumentopf zu verschütten. Dafür war es neben dem Erkennen des Blumentopfs wichtig, dass wir dem Arm tracken können. Um das zu ermöglichen haben wir die Spitze des Armes in einer auffälligen Farbe markiert, damit der Farbton mithilfe der hue()-Funktion bei Processing isoliert werden kann.

In einem weiteren Schritt müssen wir noch die im Hough-Raum identifizierten Punkte, die als Grenze für die Armbewegung dienen sollen, so verarbeiten, dass die Armbewegung nicht über diese Grenze hinaus geht.

Der erkannte Kreis wird zuerst um ein k verkleinert. So haben wir die Sicherheit, dass nicht außerhalb des Blumentopfs gegossen wird. Die genaue Größe von k wird durch Ausprobieren ermittelt.

Im Anschluss verwenden wir die Kreisgleichung, um zu überprüfen, ob sich der Arm innerhalb oder außerhalb des Kreises befindet. Die geschieht mittels der Koordinaten des um k verkleinerten Blumentopfkreises (x, y) und der Koordinaten des Punktes an der Spitze des Roboterarms (xp, yp), der durch seine auffällige Farbe erkannt wird.

Die Bedingungen:

Damit der Arm innerhalb des Kreises liegt muss gelten:
Damit der Arm außerhalb des Kreises liegt muss gelten:



Abbildung 8: Arm-Tracking



Wasserstand in der Flasche messen

Wir müssen natürlich sicherstellen da beim öffen des Ventils auch wirklich Wasser fließt und nicht nur Luft. Für die Lösung diese Problems haben wir uns vorgenommen das der Roboter ein Signal bei kritischen Wasserstand ab geben soll.

Hier für bauen wir mithilfe des Wasser in der Flasche ein Stromkreis. Ist genügend Wasser in der Flasche, so ist dank der Leitfähigkeit des Wassers der Stromkreis geschlossen. Sollte dies nicht der Fall sein so ist erkennt der Roboter das zu wening Wasser in unserm Tank (Wasserfalsche) ist und macht sich bemerkbar durch ein akustisches Signal.

Strom fließt Strom fließt nicht

Abbildung 9:



Ergebnis und Diskussion

Unser Projekt hat uns das Scheitern gelehrt, zugleich aber auch große Erfolgserlebnisse verschafft. Zu allererst  muss erwähnt werden  das wir unser Projekt, obwohl wir die einzelnen  Bausteine  beeneden  konnten, nicht komplett fertig gestellt  wurde. Rückblickend lässt sich sagen, dass sich Aufgaben sehr komplex  gestaltet haben so das die Verknüpfung der Bauteile, um einen reibungslosen Ablauf zu gewährleisten, hätte noch mehr Zeit beansprucht.

Vorweisen können wir ein funktionierndes ortsgebundens  Model, dass über einen Wasserspeicher,  einen Kameraarm  und einen Gießarm  verfügt,  welches  wir mit Hilfe unserer einzelnen Funktionen steuern können  und auf deren Informationen  Zugriff möglich ist. Dies ist für jeden Topf möglich, der im Blickfeld der Kamera liegt. Wir benötigen jedoch immer einen Computer um die Bildverarbeitung zu ermöglichen. Mit Hilfe unserer  Kamera sind wir in der Lage den  Blumentopf( einen Kreise) zu identifizieren. Es ist zudem möglich  unterbrochene Kreise  (z.B. Blatt ragt aus dem Topf heraus) zu erkennen. Für uns hat sich das Arbeiten mit geometrischen  Formen  als gangbarste Voraussetzung herauskristallisiert. Das Modell  ist auf Licht angewiesen. Die Intensität der Lichtquelle kann dabei stark varieren  ohne das Ergebniss  zu verfälschen. Hingegen kann die Positionierung  des Gießarmes  von Farben( z.B.einer Blüte) abgelenkt werden,  so dass nicht sicher  gewährleistet  werden kann, ob der Arm innehalb  des Topfes  platziert  ist. Deshalb muss auf die Pflanzenwahl  (Vielfalt der Farben)  geachtet werden. Jedoch aufgrund der mangelnden Zeit können  wir die Interaktion beider Schritte  nicht mehr realisieren also die bewegung des Arms auf grundlage voheriger Daten.

Bezüglich der Fragestellungen zum Wasserstands des Topfes  und der Feuchtigkeitsmessung,  sowie die Bedienung  des Servos  und des Magentventiles,  haben wir verhältnismäßig  schnell eine Lösung  gefunden.  Die Herausforderung lag definitiv  in der komplexen Interaktion aller Teilschritte. 



Code

projektewise20/ichhabdurstpublic/start.txt · Zuletzt geändert: 2021/04/23 18:19 von d.golovko