Morpheus

Aus HRW FabLab MediaWiki
Wechseln zu: Navigation, Suche
Morpheus

MorpheusLogo.png

Entwickler

Fabio Pietryga, Philipp Student, Vivian Schuster

Projektdateien

Thingiverse

Verwendete Programmiersprache

Arduino C/C++

Eingesetzte Software

Arduino IDE, Autodesk Fusion 360 , Cura Xcode

Eingesetzte Hardware

Ultimaker 2+

Projektbeschreibung

Aufgrund der nicht immer möglichen Rundumsicht und der fehlenden Flexibilität müssen sich gerade Rollstuhlfahrer
sehr intensiv mit ihrer Umgebung auseinandersetzen, um potenzielle Gefahrenquellen von Anfang an minimieren zu können.

Dies reicht allerdings nicht immer aus. So stellen vor allem schon kleinste Gegenstände in der direkten Umgebung
des Rollstuhls eine große Gefahr beim Manövrieren dar.
Neben dem Schutz des Rollstuhls ist hier insbesondere die Sicherheit des Nutzers sicherzustellen, falls es zu einer Gefahrensituation kommen sollte.

Die Lösung für genau dieses Problem soll Morpheus sein - ein System zur Kollisionserkennung für Rollstühle,
das anhand von individuell angebrachten Sensoren am Rollstuhl sowohl nähergelegene, als auch weiter entfernte Gegenstände erkennen
und bei Gefahr den Nutzer alarmieren kann.

Die Einstellung und Konfiguration des Systems ist dabei über eine Smartphone-App möglich.

Projektidee

Im Rahmen des Moduls "Eingebettete Systeme" im Wintersemester 2018/19 stand die Entwicklung von Assistenzsystemen im Vordergrund.
Um einen ersten Eindruck zu vermitteln, besuchten Frau Hirtz und Sebastian Bücker von den Bottroper Werkstätten die HRW.
Während ihrer Präsentation erhielten wir einen Einblick auf die Bedürfnisse und Wünsche der Zielgruppe des Moduls.
Insbesondere Sebastian hatte eine Idee: Er wollte ein System für seinen Rollstuhl, das ihm ermöglicht, problemlos durch engere Gänge und Räume zu fahren.
Dies würde ihm insbesondere an seinem Arbeitsplatz zugute kommen, da er öfter mit dem Rollstuhl gegen etwas stößt.

Nach einem Gespräch mit Sebastian haben wir beschlossen uns seiner Idee zu widmen und begannen das System "Morpheus" zu entwickeln.

Hardware

Materialliste
Beschreibung Kosten pro Stück in € Anzahl
HC-SR04 Ultraschallsensor 1,00 9
Arduino Uno 7,00 1
ESP-32 7,00 1
Powerbank 22,00 1
Arduino Jumper Wires Paket 5,90 1
Micro USB-Verlängerung 5,55 1
Micro USB-Kabel 3er Paket 7,00 1
Runde Magneten 1,00 8
3D Druckmaterial
Gesamtkosten: 71.34€


3D-Druck

Wir haben uns entschieden, den Großteil des Systems mithilfe des 3D-Drucks zu erstellen, da so eine genaue Anpassung für den Rollstuhl möglich war.
Die benötigte Teilmenge kann natürlich individuell angepasst werden, hier ist eine Übersicht, wie viel wir gedruckt haben:

Benötigte Teile
Name Dateiname Anzahl
LED-Panel Box LED-Panel_Box.stl 1
LED-Panel Deckel LED-Panel_Top.stl 1
Powerbank Box Arduino_Powerbank_Box 1
Powerbank Box Deckel Arduino_Powerbank_Box_Top 1
Vorderteil Sensorhalterung* front_00.stl 10
Hinterteil Sensorhalterung* back_00.stl 10
Ring Sensorhalterung* ring_00.stl 20
Halter Cradle_Edit.stl 10
Druckeinstellungen: 10% Infill, 0.2mm Schichtdicke
*Teile finden sich im Original-Thing unter dem verlinkten Cradle-Edit

Nachdem alle benötigten Teile ausgedruckt wurden, geht es an die Zusammensetzung.
Für eine Sensorhalterung benutzt man jeweils ein Vorder- und Hinterteil, zwei Ringe und eine Halterung.
Durch das Vorderteil können die zwei Sensoren des Ultraschallsensors hinausschauen. Es sollte so weit wie möglich hineingedrückt werden, damit das Hinterteil möglichst flach aufliegen kann.
Danach können die zwei Teile durch die Ringe zusammengehalten werden. Der Sensor kann nun in die Halterung hineingedrückt werden und lässt sich nun komplett frei ausrichten.
Für das Projekt ist es gewünscht, die Sensoren genau parallel zum Boden auszurichten.

Das LED Panel hat Platz für den ESP-32, die benötigte Verkabelung und die LED's. Die Löcher im Deckel sind groß genug, sodass die LED's von oben nach unten eingesetzt werden können und aufliegen.
Wie die Verkabelung angebracht wird, wird im Elektronik-Teil genauer beschrieben.
Die kleinen Löcher an den Ecken der Box und im Deckel erlauben es, kleine Magneten einzusetzen. Mit diesen wird der Deckel verschlossen aber ermöglicht es immernoch, bei Bedarf das System einfach zu öffnen.

Die Powerbank-Box hat Platz für die Powerbank, den Arduino und die benötigte Verkabelung. Die Powerbank passt von der Breite her genau hinein und gehört an das Ende
mit der kleinen rechteckigen Vertiefung an der oberen Kante. In diese Vertiefung passt der Micro-Usb-Anschluss, der so ein einfaches Aufladen der Powerbank ermöglicht.
Auch hier wird der Deckel wieder mittels kleiner Magneten an allen Ecken verschlossen.
Die Maße der Box wurden passgenau für Sebastians Rollstuhlsitz festgelegt. Deshalb ist es für Nachbauer empfehlenswert, selbst noch einmal nachzumessen und Anpassungen zu treffen.


Elektronik

Verkabelung der Sensoren

Die Elektronik dieses Projektes umfasst neben den 9 Ultraschallsensoren einen ESP-32 und einen Arduino Uno. Der ESP-32 übernimmt mit seiner Bluetooth-Low-Energy (BLE) Schnittstelle die Kommunikation mit dem Nutzer, der das System über die selbst programmierte App steuern kann, während der Arduino Uno für die Auswertung der Ultraschallsensoren verantwortlich ist. Um dem Nutzer die Gefahren deutlich anzuzeigen, wurde pro Sensor ein Block aus 4 LEDs gewählt. Zusammen mit der Status-LED, die den aktuellen Systemstatus anzeigt, ergibt dies eine Gesamtanzahl von 29 LEDs. Da die Anzahl der I/O Pins der Mikroprozessoren jedoch begrenzt ist, wurde eine kleine Platine mit drei Treiber-ICs installiert, damit pro IC-Pin bis zu 2 LEDs betrieben werden können. So war es uns möglich über einen einzigen I/O Pins des ESP-32 4 LEDs anzusteuern. Um vor einer möglichen Kollision auch eine akustische Warnung zu ermöglichen, wurden zusätzlich 2 Piezo-Summer in die Box mit den LEDs integriert. Sie werden ebenfalls über den ESP-32 angesteuert. Die Ultraschallsensoren vom Typ HC-SR04 verfügen über zwei Pins für die Spannungsversorgung (5V & GND) und nochmal zwei für die Daten (Trigger & Echo). Da die für die Programmierung verwendete Bibliothek zur Ansteuerung der Sensoren für Ultraschallsensoren mit 3 Pins ausgelegt ist, und sich so die Anzahl der benötigten Kabel reduzieren ließen, wurden die beiden Datenpins gebrückt. Damit benötigt jeder Sensor lediglich eine Datenleitung, sowie die für alle Sensoren gemeinsame Spannungsversorgung. Die Kommunikation zwischen den beiden Mikroprozessoren erfolgt über das I2C Protokoll. Dies ist relativ einfach umzusetzten, da auch hier zwei Datenleitungen ausreichen. Jedoch ist zu beachten, dass die Kabellänge möglichst kurz gehalten wird, um Störungen in der Kommunikation zu vermeiden.

Software

App-Entwicklung

Microcontroller Programmierung

Für die Entwicklung der Mikroprozessor-Programme wurde die Arduino IDE genutzt. Zusätzlich wurden für den Arduino Uno die NewPing Bibliothek zur Auswertung der Sensoren, sowie die Wire Bibliothek zur Nutzung der I2C Kommunikation eingebunden. In der I2C Kommunikation fungiert der ESP-32 als Master, während der Arduino Uno als Slave eingesetzt wird.

Der Arduino wird in diesem Projekt ausschließlich für die Auswertung der Ultraschallsensoren eingesetzt. Damit ergibt sich ein relativ simpler Programmablauf. Im Loop des Programmes werden in einem Intervall von 33ms alle Ultraschallsensoren nacheinander angesteuert. Die ermittelten Distanzen werden anschließend mit der Referenzdistanz der ausgewählten Sensivitäts-Stufe verglichen, und die Ergebnisse in ein Array zwischengespeichert. Parallel reagiert der Arduino auf vom ESP gesendete Daten oder Datenanfragen. Ändert der Nutzer über die App zum Beispiel die Sensivität des Systems, so schickt der ESP ein Datenpaket an den Arduino, der die Schwelle, ab der ein Hindernis erkannt wird, daraufhin anpasst. Ansonsten beantwortet er die regelmäßigen Status-Anfragen des ESP mit dem aktuellen Sensor-Stand.

Im Programm des ESP-32 wird die BLE-Schnittstelle mit dem benötigten Service und den verwendeten Charakteristika definiert. Dadurch können die Systemeinstellungen wie Leuchtmodus der LEDs, Sensitivtät der Sensoren oder das Aktivieren bzw. Deaktivieren der akustischen Warnung angepasst werden. Außerdem fragt der ESP in regelmäßigen Abständen von 500 ms den aktuellen Stand der Sensoren vom Arduino Uno ab, um die Gefahren-LEDs dementsprechend anzusteuern.

Der vollständige Code für die beiden Mikroprozessoren ist im GitLab zu finden.