Autor_in

Zugehöriger Workspace

Art des Projekts

Studienarbeit im Grundstudium

Entstehungszeitraum

Sommersemester 2017

How Big Was The Fish? - Interface Blockseminar

How Big Was The Fish? - Interface Blockseminar

In diesem kompakten Blockseminar wurden zunächst an drei Tagen die Grundlagen der Softwareentwicklung zur Nutzung mit dem Arduino Microcontroller vermittelt und anschließend an drei weiteren Tagen im "Hackathon"-Teil je ein freies Projekt im Rahmen vermittelten Technologien von den Teilnehmern umgesetzt.

Gelehrt bzw. genutzt wurde u.a.: JavaScript, Johnny-Five, Socket, Twit, Arduino Microkontroller, Terminal, HTML & CSS.

Coding 1x1

Die ersten drei Tage wurde sehr viel vermittelt -- von allgemeinen Grundlagen bis hin zu spezifischen Problemloesungen.

Im Folgenden wird das eigene Projekt "How Big Was The Fish?" der folgenden drei Tage dokumentiert.

Hacking! [#Projektfindung]

Würden angehende Fischer in ihrer Fischereiprüfung das Schätzen von Längenmaßen übern, gäbe es vielleicht etwas weniger Anglerlatein auf der Welt.
Von dieser immensen Problemstellung ausgehend, hatte ich mir vorgenommen ein Gerät zu entwickeln, das auf spielerische Weise das "händische" Darstellen von Längen zu üben hilft.

Hacking! [#Planung]

Über ein Webinterface (localhost) würde der Spieler das Spiel starten, die von ihm zu zeigende Länge ablesen und nach einem kurzen Countdown diese mit seiner rechten Hand im Abstand zum Infrarotsensor darstellen, welcher in einer linken Pappmache-Hand verbaut sein würde.
Das Erbenis seiner Längendarstellung würde anschließend auf dem Bildschirm dargestellt.

Zunächst galt es zwischen den existierenden Sensoren den geeignetsten auszuwählen. Nach dem studieren einer Vielzahl von Datenblättern und Tipps aus Foren der maker-Community stellte sich raus, dass sowohl der Ultraschall-Distanzsensor HC-SR04 als auch der Infrarot-Distanzsensor GP2Y0A21YKOF von SHARP gleichermaßen Vor- und Nachteile in ihren Eigenschaften (wie z.B. die Genauigkeit für Distanzen unter 1m oder die Erkennung von unebenen Objekten) für dieses Projekt mitbringen würden.

Da Johnny-Five für die Nutzung des Ultraschallsensors ein spezielles Firmata bzw. "Backpacking" für den Arduino voraussezt, wählte ich im Hinblick auf die kurze Projektlaufzeit den Infrarotsensor.

[Schematic] ggf + fritzing

Der simple Hardware-Aufbau.

Hacking! [#actual Hacking!]

Der hardwareseitige Teil des Spiels ist vom Aufbau her recht simpel.
Für den Ultraschallsensor gibt es in Johnny-Five eine Implementierung, die die nicht-linearen Werte des Sensors automatisch direkt in cm bzw. inches umrechnet und in einer Variablen speichert.
Lediglich meine linke Hand aus Pappmaché abzuformen war eine Riesensauerei sprich Herausforderung.

Der Sensor ist an das Arduino-Uno-R3-Board angeschlossen, auf dem die Standart-Firmata ausgeführt wird. Über den USB-Port kommuniziert diese mit node JS, das zuvor über das Terminal gestartet und die index.js ausgeführt hat.
Dank den Node.js-Modulen Socket bzw. Express können die "Johnny-Five-JS-Datei" und die JS-Datei des lokalen Webinterface' miteinander kommunizieren bzw. die HTML- und CSS-Datei auslesen und modifizieren.

Das Umdenken vom für mich gewohnten Schreiben von relativ linear ablaufendem Arduino-Code (C++) in die für mich neue asynchrone Welt von Javascript für Johnny-Five bzw. das Frontend viel mir zunächst nicht leicht, nach dem Lösen vieler "Mikro-Probleme" und dem häufigen Auslagern von Funktionen an den kann ich konstatieren, dass es an sich leichter verständlich bzw, einfacherer zu schreiben ist.

Beim Erstellen des Frontend-Interface' habe ich neben JS ebenfalls viel Neues über HTML und CSS lernen können, wenngleich ich das Schreiben in Markup-Languages abgesehen von Markdown eher uninteressant finde.

Ausblick

Zweieinhalb Tage sind sehr wenig und am Ende benötigen derartige Projekt immer länger, als anfangs gedacht.
Deswegen musste ich auf ein Leaderboard, das Generieren von Zufallswerten für die zu zeigende Länge, das Tweeten von Scores über das "twit"-Modul usw. verzichten müssen und vieles mehr.
Bei Gelegenheit werde ich das Projekt um diese Funktionien erweitern... wahrscheinlich aber nicht.
Leider zu spät entdeckt: Der Lasersensor VL53L0X von Adafruit.
Er scheint wesentlich präzierere Messdaten liefern zu können und falls er sich mit Johnny-Five steuern lässt, so ist er ideal für dieses Projekt geeignet.

Kurznotiz

Dieses Seminar ist, bedingt durch hochschulinterne Veränderungen, das letzte seiner Art gewesen und ich bin froh diese meine letzte Chance genutzt zu haben!