Bloons

Aus HRW FabLab MediaWiki
Wechseln zu: Navigation, Suche

Bloons

Bloons


Entwickler

Malte Pokoern, Lars Hofmann, Matthias Milbradt

Source Code

GitLab

Lasercut-Vorlage

Gehäuse (strg+s)

3D Modelle

Liste aller verwendeten 3D-Modelle

Programmiersprachen

Javascript, Python, PHP

Entwicklungssoftware

Autodesk Fusion 360, Arduino IDE, Cura, Sketchup

Verwendete Geräte

Ultimaker 2+, Anycubic Chiron, Epilog Zing 6030, CNC-Fräse der Diakonie

Im Rahmen des Moduls Eingebettete Systeme entstand in Kooperation mit der Rheinbabenwerkstatt Bottrop das Projekt BLOONS. Das Ergebnis des Projektes setzt sich aus zwei Prototypen zusammen, welche es Nutzern mit verschiedensten Beeinträchtigungen ermöglicht selbstständig Luftballons zu sortieren und in Kunststofftüten zu verpacken. Der erste Prototyp beschränkt sich dabei auf die Unterstützung der Sortierung, der zweite ermöglicht das einhändige Verpacken der Ballons indem er die Tüten öffnet und offenhält.

Problembeschreibung und Zielsetzung[Bearbeiten]

Des Öfteren werden in der Rheinbabenwerkstatt der Diakonie Luftballons mit verschiedener Farbe und Form sortiert und für den Einzelhandel in Tüten verpackt. Dies ist für Menschen mit kognitiver und körperlicher Beeinträchtigung eine herausfordernde Arbeit, da sich das Zuordnen der richtigen zu verpackenden Ballons, sowie das Öffnen und Befüllen einer Tüte mit einer Spastik in den Händen bzw. nur einer funktionsfähigen Hand als schwer herausstellt. Bisher wurden zu diesem Zweck immer Mustervorlagen auf Papier erstellt anhand derer die Beschäftigten die Luftballons sortieren sollten. Des Weiteren waren einige der Beeinträchtigten darauf angewiesen in Zweierteams zu arbeiten, da sich die Tüten mit nur einer funktionsfähigen Hand nicht befüllen lassen. Ziel dieses Projektes ist es eine Vorrichtung zu erstellen, mit der die Beeinträchtigten eigenständig die richtigen Luftballons zuordnen und verpacken können.

Entwicklung[Bearbeiten]

erste Idee zur Realisierung des Projekts

Zunächst kam die Idee auf eine Plattform zu erstellen, bei der die einzelnen Arbeitsschritte des Zuordnens und Verpackens abgearbeitet werden. Dies stellte sich jedoch als nicht umsetzbar heraus, da sich die Tütenöffnung umfangreicher als erwartet erwies und den Rahmen einer einzigen plattformartigen Lösung sprengt. Bei der kundennahen Entwicklung wurden uns mehrfach neue Nutzer vorgestellt, weshalb sich die Anforderungen zwischenzeitlich veränderten und die Prototypen letztendlich einhändig bedienbar sein sollten. Aufgrund dessen entstanden diverse Prototypen, welche verworfen oder aktualisiert wurden.

Trennung von Sortierung und Öffnung[Bearbeiten]

Um das Problem der Tütenöffnung zu lösen, kam der Entschluss die einzelne Plattform auf zwei Gebiete aufzuteilen. Eine technische Lösung sollte sich mit der Sortierung befassen und eine weitere Lösung mit dem Öffnen und offenhalten. Auf diese Weise können die Arbeitsplätze der Betroffenen individuell angepasst werden, da jemand der beispielsweise keine Probleme mit dem Sortieren hat, nur die Lösung des Tütenöffnens nutzen kann und anders herum.

verworfene Prototypen[Bearbeiten]

Bei der Erstellung einer Lösung zum Öffnen der Tüten entstanden mehrere Prototypen, welche alle mangels Bedienbarkeit durch die Beeinträchtigten der Rheinbabenwerkstatt verworfen wurden.

Sortieren der Ballons[Bearbeiten]

Um die Luftballons zuordnen zu können, werden diese in zwei Arbeitsschritten untersucht. Beim ersten Arbeitsschritt wird der Ballon gewogen. Dazu wurde für dieses Projekt speziell eine Feinwaage kreiert, welche mithilfe einer Wägezelle das Gewicht der Ballons auf 0,01g genau bestimmen kann. Im zweiten Arbeitsschritt wird der Ballon auf einen Farbsensor gelegt. Damit die Position des Luftballons auf dem Farbsensor immer korrekt ist, wurde auf der Plattform die Form eines Luftballons eingraviert. Diese sorgt dafür, dass die Beeinträchtigten den Ballon richtig ablegen und die Farbe des Luftballons am Hals erkannt werden kann, da diese bei den verwendeten Ballons dort immer einfarbig ist, was die Fehlerquote beim Auslesen verringert. Da die Ballonformen durch ihr Gewicht unterschieden werden können und die festgestellte Farbe den Ballon eindeutig zuordnet, kann nun an einem Tablet, welches auf die Plattform mithilfe einer Tablethalterung angelehnt ist, eine Liste abgearbeitet werden. Diese zeigt mithilfe von farblichen Daumen an, ob die korrekten Ballons ausgewählt wurden. Das Tablet ruft dabei eine Website auf, welche von einem Raspberry Pi im Inneren der Plattform ausgesendet wird. Dadurch können alle W-Lan fähigen Smartphones und Tablets als Anzeige dienen, was die Flexibilität immens erhöht. Um neue Listen erstellen zu können wurde eine Administratoroberfläche (für Betreuer) erstellt. In dieser werden die Ballons gewogen und farblich erkannt. Diese Messwerte werden in einer Datenbank hinterlegt und können für die Nutzeroberfläche zum Abarbeiten aufgerufen werden.

Erstellung der Feinwaage[Bearbeiten]

Die Feinwaage wurde durch eine Wägezelle (Aluminiumlegierung), welche an einem HX711 Drucksensor angeschlossen ist, realisiert. Die Biegeeigenschaften der Wägezelle liefern analoge Spannungsdifferenzen an den Sensor, welcher diese in digitale Werte umwandelt und anschließend durch die Einbindung einer öffentlichen Klasse des HX711 Sensors mit Hilfe von Python an das System zur Weiterverarbeitung übergibt. Die Waage erreicht so eine Genauigkeit von 0,01g.

Erstellung der Plattform[Bearbeiten]

Für die Erstellung der Plattform wurde mit der Website MakerCase eine Kiste entworfen. Diese wurde mithilfe des Programms InkScape erweitert um Öffnungen für die Installation der Waage, des Farbsensors, der Kabelführung und der Tablethalterung zu erhalten. Daraufhin ist die Kiste mit einem Lasercutter im FabLab der HRW zurechtgeschnitten und geleimt worden. Verwendet wurde 5,6mm dickes Multiplex Holz, um eine gute Haltbarkeit zu garantieren. Die Plattform hat die Maße L220xB270xH70mm.

Erstellung der Tablethalterung[Bearbeiten]

3D-Tablethalterung

Die Tablethalterung wurde in Cura entworfen und mithilfe eines 3D-Druckers erstellt. Sie kann in die Öffnungen der Plattform gesteckt werden und hält ohne weitere Fixierungen.

Verwendete Bauteile[Bearbeiten]

Name Beschreibung Preis
Raspberry Pi 3 Mikrocontroller 34,48€
Wägezelle Wägezelle 5,98€
HX711 Drucksensor 6,99€
TCS230 Farbsensor 5,99€
Jumperkabel Verbindungsleitungen 6,99€

Codeausschnitte[Bearbeiten]

Im folgenden werden einige Codeausschnitte gezeigt und erklärt. Der komplette Code ist auf GitLab verfügbar.

<code> Waage

//Initialisierung der HX Sensor Klasse mit den entsprechenden Modus sowie der Rücksetzung des aktuellen Werte mit Hilfe der TARA Funktion. Die Referenzangabe steht in Abhängigkeit zum eingesetzten Biegemodul.
hx = HX711(5, 6)
hx.set_reading_format("MSB", "MSB")
hx.set_reference_unit(-13055)
hx.reset()
hx.tare()


//Wiederholdender Funktionsaufruf der Messung, in der der ermittelte Wert an die Datenbank übergeben wird.                 
while True:
    try:
        if False:
            np_arr8_string = hx.get_np_arr8_string()
            binary_string = hx.get_binary_string()
            print binary_string + " " + np_arr8_string
        
	val = hx.get_weight(6)
	mycursor.execute("Update measurements SET value = '"+str(format(round(val,2)))+"' WHERE sensor = 'weight'")
	mydb.commit()
	
        hx.power_down()
        hx.power_up()
        mycursor.execute("SELECT value FROM measurements WHERE sensor='weight_tara'")
        tara = mycursor.fetchone()

        if tara[0] == 1.0:
            hx.tare()
            mycursor.execute("Update measurements SET value = 0 WHERE sensor = 'weight_tara'")
            mydb.commit()
        time.sleep(0.1)


</code> 


<code> Farberkennung

//Initialisierung von GPIO Pins und Zyklen
s2 = 23
s3 = 24
signal = 25
NUM_CYCLES = 10000


def setup():
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(signal,GPIO.IN, pull_up_down=GPIO.PUD_UP)
  GPIO.setup(s2,GPIO.OUT)
  GPIO.setup(s3,GPIO.OUT)
  print("\n")
  



//Ermittlung Speicherung der einzelnen Farbanteile

def loop():
  temp = 1
  while(1):  

    GPIO.output(s2,GPIO.LOW)
    GPIO.output(s3,GPIO.LOW)
    time.sleep(0.0)
    start = time.time()
    for impulse_count in range(NUM_CYCLES):
      GPIO.wait_for_edge(signal, GPIO.FALLING)
    duration = time.time() - start      #seconds to run for loop
    red  = NUM_CYCLES / duration   #in Hz
	
    mycursor.execute("Update measurements SET value = '"+str(format(round(red,0)))+"' WHERE sensor = 'color-red'")
    mydb.commit()

    GPIO.output(s2,GPIO.LOW)
    GPIO.output(s3,GPIO.HIGH)
    time.sleep(0.0)
    start = time.time()
    for impulse_count in range(NUM_CYCLES):
      GPIO.wait_for_edge(signal, GPIO.FALLING)
    duration = time.time() - start
    blue = NUM_CYCLES / duration
	
    mycursor.execute("Update measurements SET value = '"+str(format(round(blue,0)))+"' WHERE sensor = 'color-blue'")
    mydb.commit()

    GPIO.output(s2,GPIO.HIGH)
    GPIO.output(s3,GPIO.HIGH)
    time.sleep(0.0)
    start = time.time()
    for impulse_count in range(NUM_CYCLES):
      GPIO.wait_for_edge(signal, GPIO.FALLING)
    duration = time.time() - start
    green = NUM_CYCLES / duration

	
    mycursor.execute("Update measurements SET value = '"+str(format(round(green,0)))+"' WHERE sensor = 'color-green'")
    mydb.commit()

</code>

Verpacken der Ballons[Bearbeiten]

Das Öffnen der Tüte stellte sich im Projektverlauf komplexer als erwartet heraus. Durch die Nutzerwechsel wurde es erforderlich die Vorrichtung mit nur einer Hand bedienen zu können. Da die Tütenöffnung von einem Beschäftigten allein ausgeführt werden soll, muss die Vorrichtung wenige Arbeitsschritte haben, keinerlei präzise Handgriffe benötigen und wenig körperliche Kraft erfordern.

Letztlich entstanden hier zwei Prototypen, wobei der einzige Unterschied zwischen ihnen im Scharnier besteht. Beim ersten Prototypen wurde der Holzarm mittels eines 24x17mm großen Schatullenscharniers fixiert. Beim zweiten Prototypen ist dieses Scharnier durch ein Holzscharnier ersetzt worden, welches in Zusammenarbeit mit der Holzabteilung der Rheinbabenwerkstatt entworfen und mit der werkstatteigenen CNC-Fräse gebaut wurde. Dank dieser Holzscharniere ist der Wechsel von rechts- auf linkshändige Bedienung ohne das Lösen von Schrauben möglich, da nur der Holzarm umgesteckt und der Ventilator gedreht werden muss. Zusätzlich haben die ansonsten offenen 5V Kupferkontaktekontakte für den Ventilator eine magnetische Schutzabdeckung erhalten, welche ein versehentliches Berühren verhindern.

Funktionsweise[Bearbeiten]

Die Luftballons werden mithilfe einer verspachtelten Holzkonstruktion gehalten und geöffnet. Dazu wird eine Tüte auf die schwarz markierte Ablagefläche gelegt. Diese ist ein beweglicher Holzarm mit eingelassenen Magneten, welcher in eine Vertiefung der Holzkonstruktion passt. Nun wird ein Holzscheit mit Griff und eingelassenen Magneten auf die Tüte gelegt. Die Magneten halten die Tüte fest und mithilfe des Griffs am Holzscheit kann der Arm mit der befestigten Tüte in die Vertikale gezogen werden. Ein weiterer Magnet am unteren Ende des Holzarms hält diesen dabei zuverlässig aufrecht, sodass ein versehentliches Runterklappen verhindert wird. Am oberen Ende des Holzarms ist ein USB-Ventilator befestigt, welcher beim Aufrichten aktiviert wird, indem ein am unteren Ende des Holzarms angebrachter Kupferkontakt geschlossen wird. Als Stromquelle kann dabei eine Powerbank oder ein handelsübliches USB-Netzteil verwendet werden. Der Ventilator erzeugt nun einen Luftstrom, welcher die Tüte öffnet und offenhält. Die einzelnen Luftballons können einfach in die Tüte fallen gelassen werden. Wenn die Tüte befüllt ist, wird der Arm wieder runter geklappt, was den Stromkreis öffnet und den Ventilator deaktiviert. Der mit Magneten ausgestattete Holzscheit kann nun seitlich weggezogen werden und gibt so die Tüte wieder frei.

Verwendete Materialien & Bau[Bearbeiten]

Bau der Tütenöffnung in Zeitraffer
Name Beschreibung Preis
Holzplatten (Spanplatte roh) 2x 250x190x19mm; 1x 250x137x19mm; 1x 19x250x19mm in Summe 1,63 €
Rechteckleisten 1x 30x14x550 mm; 1x 30x14x220mm 1,32 €; 0,42 €
Rundstab Ø 4 mm; 50 mm 0,05 €
Holzscharnier CNC-Fräsen Schnitt
Möbelknopf (Griffknauf) Ø 34 mm 0,95 €
Neodym-Magnete (rund) 9 Stück a 12x2 mm 3,15 €
Moosgummi (weiß) 190x320x2 mm 0,99 €
Moosgummi (schwarz) 20x220x2 mm 0,69 €
USB-Ventilator 7,99 €
USB-A-Steckverbinder Buchse Pins nach außen 1,93 €
Schaltlitze (Kupferleitung / Kabel) 0,14 mm² x 3 m 1,29 €
Kupferplättchen 6 Stück a 7x7 mm 2 €
USB-Kabel zur Stromversorgung, einseitig USB-Stecker reicht 1,99 €
Holzschraube 2x12 mm 0,08 €
Holzleim verleimen der Spanplatten 1 €
Ventilatorkopfhalterung 3D-Druck
Schutzabdeckung 3D-Druck
optional für eine bessere Optik:
Holzspachtelmasse zum Verspachteln der verleimten Spanplatten 3 €
Grundierung (weiß) gemeinsame Grundierung für Holz und Spachtelmasse 2 €
PU-Acryl-Lack tiefscharz, reinweiß; jeweils seidenmatt 3 €