Rollender Ball

Aus HRW FabLab MediaWiki
Wechseln zu: Navigation, Suche

Dieses Projekt behandelt die Eigenkonstruktion einer, aus dem 3D-Drucker erstellen, Kugel welche über den Beschleunigungssensor des Smartphones gesteuert wird.
Die Umsetzung erfolgte über eine auf PhoneGap basiertende Applikation, welche ihre Befehle per Bluetooth Low Energy an einen Genuino 101 überträgt.

Idee & Umsetzungsplanung

Nach einer anfänglicher Findugsphase im Projekttinder hat sich unsere Gruppe auf die Umsetzung dieser Kugel geeinigt. Inspiration holten wir uns von zahlreichen Eigenkonstruktionen aus dem Bereich der sozialen Medien sowie des komerziellen Sphero[1]. Zu Beginn planten wir eine ca. 18cm große Kugel aus Plexiglas zu bestellen, haben uns jedoch nach Rücksprache mit einem Mitarbeiter des FabLabs für eine selbstgedruckte Kugel aus dem 3D-Drucker entschieden. Allerdings ist jede alternative Kugel welche Platz für den Genuino mit Fahrwerk bietet geeignet. Die Kontruktion des Fahrwerkes kann sehr individuell gestaltet werden, wir haben uns für eine horizontalte Befestigung mit zwei Servos entschieden. Weil die Steuerung über einen Beschleunigunssensor erfolgen soll muss dies auch bei der Planung der Applikation berücksichtigt werden.

Bauplan

  • Bauteile
    • Kugel
    • Acht Neodym Magneten- Halterung für den Arduino
    • Arduino (hier: Genuino 101)
    • Zwei Servos
    • Zwei Räder
    • Akku (hier: Lithium-Polymer-Akku)
    • Acht Verbindungskabel
    • Halterung für den Akku
    • Gewichte
    • Smartphone mit PhoneGap zur Steuerung
  • Material
    • Heißkleber
    • Kabelbinder
    • ggf. Klebeband

Kugel

Die Kugel besteht aus zwei Halbkugeln welche über acht quadratische Neodym Magneten fixiert wird. Sie besitzt einen Außendurchmesser von 156.00 mm sowie einen Innendurchmesser von 140.00 mm. Die acht für die Magneten vorgesehenen Löcher erstrecken sich über das Volumen eines Würfels mit der Kantenlänge 5.00 mm. Dementsprechend groß müssen auch die acht Neodym Magneten sein. Weitere Details zur Kugel lassen sich aus diesem Fusion 360 Modell entnehmen. In unserem Bespiel wurde die Kugel nach diesem Modell aus dem 3D Drucker gedruckt. Wir empfehlen hier die Kugel mit der glatten Oberfläche aufliegend zu drucken um ein möglichst gutes Ergebnis zu erzielen.

Modell der Halbkugel

Funktionsweise

Das Zusammenspiel aus App und Arduino grafisch dargestellt

Die Funktionsweise wurde in zwei Hauptkomponente aufgeteilt; der Smartphone App die mit dem Arduino mit Bluetooth kommuniziert.

Smartphone Applikation

Sodass die Applikation auf iOS und Android ausführbar ist, wurde die App in Adobe PhoneGap[2] entwickelt.

Um die Phonegap App für eigene Zwecke zu nutzen muss zunächst die Anleitung auf der Phonegap Get Started Seite befolgt werden.

Über dem, in der verlinkten Anleitung, erstellten Projekt können dann unsere Quellcode Dateien gezogen werden die über dem Gitlab der Hochschule verfügbar gemacht worden sind.

Danach kann die Applikation in der Desktop App gestartet werden.

Auf dem Smartphone muss dann in der Phonegap App, die in der Desktop App angezeigten IP Adresse eingegeben werden.

Nutzung der App

Die App ist sehr schlicht und einfach gestaltet. Das rote Quadrat im Fadenkreuz zeigt an, wie das Smartphone geneigt ist.

Screenshot der App vor dem Verbinden

Sobald der Arduino bespielt und mit Strom versorgt ist, kann auf der App der "Verbinden"-Button betätigt werden.

Wird der Arduino mit Erfolg verbunden, wird das rote Quadrat blau und der Button erlaubt eine Trennung der Bluetooth Verbindung, falls gewünscht. Der Ball kann jetzt gesteuert werden.

Screenshot der App nach dem Verbinden

Arduino Programmierung

Für die Arduino Programmierung haben wir die curiBLE Bibliothek verwendet um die Bluetooth Low Energy Verbindung zu dem mobilen Endgerät her zu stellen. Für die Verbindung benötigt man eine uuid die man sich auf bestimmten Internet Seiten generieren lassen kann. Mit der uuid kann man nun einen BLE Service anlegen. Dieser Service kann benutz werden um Signale von dem Endgerät zu empfangen. Mit der Funktion BLEService.connected() wird geprüft ob ein Gerät mit dem Arduino verbunden ist. Mit der Funktion BLEService.written() wird geprüft ob etwas gesendet wurde. Falls eine Übertragung stattfand kann man mit BLEService.value() darauf zugreifen. Alle Werte die kleiner Null sind sind für den linken Servomotor bestimmt, die positiven Werte für den rechten. Um die Servos anzusteuern haben wir die Library servo.h verwendet. So können wir die Pins an denen die servos angeschlossen sind festlegen um später, über die entsprechenden Pins, die empfangenen Werte an die servos weiter zu geben.

Team

Media

Einzelnachweise

[1] Sphero: Offizielle Seite, abgerufen am 23.1.2018
[2] Adobe Phonegap: Offizielle Seite, abgerufen am 5.3.2018