A++

Aus HRW FabLab MediaWiki
Wechseln zu: Navigation, Suche

A++ ist ein kontrolliertes Packstation–Assistenzsystem, entwickelt für das Diakonische Werk in Kooperation mit den Werkstätten Bottrop; mit und für Menschen mit motorischen Beeinträchtigungen.

A++

APlusPlus.png

Entwickler

Burak Budur, Elena Grünwald, Gereon Heinemann

Projektcode

GitHub

Verwendete Programmiersprache

Arduino C/C++

Eingesetzte Software

Visual Studio Code platformIO

Eingesetzte Hardware

Ultimaker 2+ Lasercutter

Projektdokumentation

GoogleDoc

APlusPlusUebersicht.png

Projektidee[Bearbeiten]

In einer Werkstatt in Bottrop ist die Aufgabe an einem Arbeitsplatz, eine bestimmte Anzahl an Materialien aus bis zu vier Kisten in eine bestimmte Anzahl von Tüten zu verpacken. Dabei kann es leicht passieren, den Überblick zu verlieren und/oder sich zu verzählen.

Nach Wunsch hin sollte ein Assistenzsystem entwickelt werden, welches Menschen mit Beeinträchtigungen unterstützt die korrekte Menge an Materialien aus den gegebenen Kisten zu entnehmen. Das Projekt wurde vom AMBOS-3D Assistenzsystem des Fraunhofer Instituts inspiriert, wobei es ähnliche Funktionen aufweisen, leicht nachbaubar und so preiswert wie möglich sein sollte.

Desweiteren wurde sich eine Benutzerschnittstelle gewünscht, mit der die Menge der Materialien in den Kisten individuell angeben werden kann.

Entwicklung[Bearbeiten]

Entwurf[Bearbeiten]

Übersicht des fertigen Prototyps.
Erste Zeichnung des Bogens für die Kisten.

Als Basis des Projekts dienten die Kisten der Werkstatt, die an dem Arbeitsplatz eingesetzt werden. Das Assistenzsystem sollte individuell an sie angepasst und abnehmbar sein, um die Kisten flexibel entnehmen zu können, bspw. für das Befüllen mit neuen Materialien.

Um dies verwirklichen, wurden Holzboxen erstellt, die an zwei Metallwinkeln befestigt sind. In ihnen befinden sich die meiste Elektronik dieses Projekts.

Da sich an jeder Kiste Einkerbungen befinden, wurden zusätzlich Stützen 3D-Drucker gedruckt, die in diese Einkerbungen passen und an die Winkel geschraubt. Da die Kisten am Arbeitsplatz an der Wand herunterhängen, sorgen die Stützen dafür, dass sie Box nicht umkippt.


Hardware[Bearbeiten]

MCU[Bearbeiten]

Bei der MCU handelt es sich um einen ESP32, der sich in einer separaten Holzbox befindet. Der ESP32 bietet genug Pins, sodass vier Kisten samt Sensoren und Aktoren angeschlossen werden könnten. Zudem hat ein ESP32 eine intigrierte WLAN Funktion, die für die A++ Website nötig ist. Bei einem Arduino Uno hätte ein zusätzliches WLAN Modul hinzufügt werden müssen.

Holzboxen[Bearbeiten]

Signalerklärungen der LEDs.

Eine Holzbox wird an zwei Metallwinkeln und Stützen an einer Kiste angebracht, indem die Winkel und Stützen in entsprechenden Einkerbungen am vorderen Bereich einer Kiste eingesteckt werden. Danach sitzt der Bogen fest und fällt nicht heraus, kann jedoch leicht wieder entnommen werden. In der Box selbst befindet sich jeweils ein Ultraschallsensor und eine grüne und rote LED.

Der HC–SR01 Ultraschallsensor registriert, wann in eine und in welche Kiste gegriffen wird. Danach ist die Kiste aktiv und es muss die entsprechende Anzahl an Materialien entnommen werden, bevor die nächste Kiste aktiviert und bearbeitet werden kann. Somit können die Kisten nur nacheinander, nicht gleichzeitig, bearbeitet werden. Wurde eine Tüte gepackt, also alle Kisten bearbeitet, wird durch das Betätigen zweier Sensoren dafür gesorgt, dass der Prozess zurückgesetzt wird, um eine neue Tüte zu packen, oder er stoppt, wenn die richtige Anzahl an Tüten gepackt worden ist.

Die grünen und roten LEDs signalisieren dem Nutzer durch während des ganzen Prozesses durch bestimmtes Aufleuchten, bei welchem Arbeitsschritt sich der Nutzer momentan befindet. Zudem zeigen sie, ob sich auf einer Waage die richtige Anzahl an Materialien, oder eine Überzahl befindet.

Waage[Bearbeiten]

Die Waage prüft, ob von dem Nutzer die korrekte Menge an Materialien aus einer Box entnommen wurde. Da das Material meist zu leicht ist, um von einer normalen Waage registriert zu werden, ist eine Präzisionswaage vonnöten, um konkret das Gewicht der Kleinteile zu messen.

In diesem Fall wurde jedoch aus Kostengründen eine HX711 verwendet. Da es dieser Waage nicht möglich ist, ein genaues Gewicht sehr leichter Materialien zu registrieren, wurden Gewichtsveränderungen gemessen. Dies führt dazu, dass Gewichte nacheinander auf die Waage gelegt werden müssen, um die Anzahl zu bestimmen. Dies wird bei großen Mengen an Material sehr mühsam.


Software[Bearbeiten]

Wir haben für unser Projekt auf der ESP32 Platfrom die Entwicklungsumgebung platformIO genutzt: https://platformio.org/.

Wir konnten so Objektorientiert in C++ programmieren. Der gesamte Code ist im öffentlichen Repository unter github zu finden: https://github.com/GereonH/aPlusPlus

Softwareumsetzung[Bearbeiten]

Neben den Datein, die zur Umsetzung des Webservers und den angezeigten Webseiten genutzt werden (dazu später mehr) wurden folgende Klassen erstellt:

Klassen
Klasse Beschreibung
Config Benötigt, um verschiedene Configs zu erstellen
LED Zur Steuerung der LEDs
Sensor Benötigt, um Sensoren zu steuern und auszulesen
State Speichert und steuert den aktuellen Status des Durchlaufs. Später mehr dazu.

State[Bearbeiten]

Die State Klasse speichert am Anfang jedes Loops des ESP32 alle Informationen die sie von den Sensoren (2x Ultraschallsensor und 1x Waage) erhält und updatet verschiedene Member/Attribute von anderen Klassen. Sie ist außerdem für die Flusssteuerung von besonderer Bedeutung, da sich alle if-Abfragen auf die Attribute des State Objekts beziehen. Das wirkt zwar wie eine Doppelung von Variablen, bietet aber besondere Vorteile. So wird bspw. bei der Flusssteuerung immer der gleiche Wert pro Loop referenziert und nicht der aktuelle Wert eines Sensors. Die State Klasse ersetzt quasi die Nutzung von globalen Variablen.

Externe Bibliotheken[Bearbeiten]

Es wurde die externe Bibliothek HX711 verwendet, um die Steuerung der Waage zu erleichtern.

Webserver[Bearbeiten]

Motivation[Bearbeiten]

Da um eine Benutzerschnittstelle gebeten wurde, mit der die Materialien in den Kisten und deren Anzahl eingegeben werden kann, bestand die Auswahl darin eine App oder Website zu entwickeln. Nach mehreren Überlegungen erschien ein Webserver als brauchbarere Variante. Da der ESP32 ein eingebautes WiFi Modul besitzt, kann er eine Website zur Verfügung stellen, welche von jedem Gerät in der Nähe aufgerufen werden kann.

Problematik und Lösung[Bearbeiten]

Die größte Problematik bestand darin, dass keine Auszeichnungssprache wie HTML, CSS und JavaScript einfach genutzt werden konnte, da der ESP32 nur bestimmte Funktionen/Syntax zulässt. Daher musste umgedacht werden, um die Website einzubauen.

Es gab einige Lösungsmöglichkeiten für dieses Problem, wobei sich für den Lösungsansatz mit char–Arrays entschieden wurde, welche mit dem Schlüsselwort PROGMEM versehen sind. Die char–Arrays enthielten den kompletten HTML, CSS und JavaScript Code. Dies wurde vom ESP32 auch erkannt.

Aufbau[Bearbeiten]

Links: Die Startseite Rechts: Die Konfigurations Seite

Der Webserver besitzt zwei verschiedene Webseiten, eine Startseite und eine Konfigurationsseite. Bei der Konfigurationsseite können der Name einzelner Materialien und die Materialmenge und die zu packende Menge an Tüten angegeben werden.

Die Webseiten des Webservers sind nicht wie andere Webseiten im Internet. Sie können nur über das Netzwerk des ESP32 erreicht werden, da dieser als Access Point dient und somit nicht mit dem Internet verbunden ist. Zudem haben die Seiten keinen normalen Namen sondern sind nur über ihre IP-Adresse erreichbar.

Der Webserver selbst ist als Asynchroner Webserver definiert. Somit können die Daten, die in der Konfigurationsseite angegeben werden, über die URL an den ESP32 gesendet werden. Dies bildet eine Schnittstelle zwischen Nutzer und Hardware.


Mögliche Erweiterungen[Bearbeiten]

Bessere Waage/Feinwaage[Bearbeiten]

Da bei diesem Prototypen momentan aufgrund der leistungsschwachen Waage nur Gewichtsveränderungen gemessen werden, wird davon abgeraten den Prototypen bei einer hohen Anzahl an Materialien einzusetzen.

Um, idealerweise, konkretes Gewicht zu messen, kann durch die Investition in eine gute Feinwaage, ein zusätzliches Modul für den ESP32 um diese anzuschließen und ein VGA Kabel gebraucht. Der Programmcode müsste ebenfalls leicht angepasst werden.

Bei der Anschaffung einer (Fein–)Waage ist darauf zu achten, dass sie eine mit der MCU kompatible Schnittstelle aufweist.

Erweiterung an Bögen[Bearbeiten]

Beim Prototypen sind zwei Bögen im Einsatz. Am Arbeitsplatz können jedoch bis zu vier Kisten aktiv genutzt werden. Somit könnte der Prototyp um weitere Bögen erweitert werden. Ein USB–Hub und einer anderen Verkabelung an den Bögen würde es ermöglichen, diese flexibel an– und auszustecken, je nachdem wie viele Kisten aktiv im Einsatz sind.

Nutzeroberfläche (GUI)[Bearbeiten]

Es könnte zusätzlich eine graphische Nutzeroberfläche erstellt werden, die dem Nutzer anzeigt welche und wie viele Materialien fehlen und wie viele Pakete noch befüllt werden müssen. Dies kann an einem Monitor am Arbeitsplatz ausgegeben werden.

Durch zusätzliche Farben der Nutzeroberfläche können zudem die LED–Signale vermindert werden. Ein visueller stand des momentanen Arbeitsschrittes wäre für den Nutzer leichter nachzuvollziehen, anstatt die Bedeutung der Signale wissen zu müssen.


Autoren[Bearbeiten]

Burak Budur

Elena Grünwald

Gereon Heinemann