Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise21:uselessbox1public:start

Useless Box Projektdokumentation


Themenbeschreibung und Überblick

Die „Useless Box“ ist ein Roboter, dessen einzige Aufgabe es ist, den Schalter, der sich auf seiner Oberseite befindet, im ausgeschalteten Zustand zu halten. Um dies zu erreichen, ist er mit einem Arm ausgestattet, welcher sich bei Umlegen des Schalters durch externe Faktoren ausfährt. Zusätzlich verfügt der Roboter über eine eigene Persönlichkeit. Er hat unterschiedliche Reaktionen auf das Umlegen des Schalters.

Das Gesamtsystem besteht im wesentlichen aus drei Teilen. Einem ausfahrbaren Arm zum Umlegen des Schalters, einem Arduino zur Messung und Auswertunge der Daten aus Sensoren sowie dem Gestell, welches die Technik „versteckt“.

Die Inspiration für diesen Roboter stammt aus dem Internet:
https://www.youtube.com/watch?v=apVR5Htz0K4

Useless Box von außen
Abbildung 1: Useless Box Außenansicht
Inneres der Useless Box
Abbildung 2: Useless Inneres der Useless Box

Konstruktion

Von außen betrachtet sieht unser Roboter wie eine normale und harmlose Box aus Holz aus. Auf der Oberseite befindet sich ein Schalter. Die Technik befindet sich im Inneren und ist „versteckt“.

Bauteile

Arduino Nano

Ein Arduino ist ein Mikrocontroller mit diversen Input und Output Schnittstellen (Pins). Über ihn sind alle Komponenten des Roboters miteinander verknüpft und können angesteuert werden. Mit der Arduino Software haben wir das Programm geschrieben, welches auf dem Arduino ausgeführt wird und die einzelnen Pins und Komponenten ansteuert.

Schalter

Der Schalter an der Außenseite der Box ist das wichtigste Bauteil des Roboters. Denn erst durch Umlegen des Schalters wird der Roboter „zum Leben erweckt“.\\+ Es handelt sich hierbei um einen Kipp-Schalter, der innerhalb des Quellcodes als sogenannter Pullup-Schalter implementiert ist. Das bedeutet, dass der interne Widerstand des Arduinos genutzt wird, um die vom Arduino gelesenen Werte am Schalter entweder auf Null oder Eins zu setzten. Sämtlicher „Lärm“, also Werte, die zwischen Null und Eins liegen, werden eliminiert.

Servo

Der Servo wird zum Ansteuernd des Armes verwendet. Wenn der Schalter auf der Oberfläche der Box umgelegt wird, schickt der Arduino ein Signal an den Servo, wodurch dieser dann den Arm so bewegt, dass der Schalter umgelegt wird.

Stepper-Motoren

An der Unterseite der Box befinden sich zwei Stepper-Motoren. Mit diesen werden die Räder der Box betrieben. Vorne befindet sich zudem ein drittes, frei bewegliches Rad, welches nicht angesteuert wird und dafür sorgt, dass der Roboter sich problemlos fortbewegen kann.
Durch den Arduino lassen sich beide Räder unabhängig voneinander ansteuern. Dadurch lässt sich der Roboter gut fortbewegen und auch das Drehen auf der Stelle ist möglich.

Treiber

Die DRV8825 Stepper Motor Treiber helfen dabei, die jeweils richtige Dreh-Geschwindigkeit, -Richtung, -Kraft und Position anzusteuern. Für jeden Stepper-Motor wird einer dieser Treiber benötigt.

Ultraschallsensor

Der Ultraschallsensor HC-SR04 dient zur Distanzermittlung. Er befindet sich auf der Oberseite der Box in der Nähe des Kipp-Schalters. Sollte sich ein Objekt dem Schalter nähern, lässt sich dies anhand der Daten des Ultraschallsensors feststellen. Basierend darauf kann der Roboter reagieren und sich beispielsweise rückwärts vom Objekt entfernen.

Akku + LiPo Batteriewächter + Spannungsregler

Der Akku ist für die Stromversorgung des Arduinos und somit auch allen anderen Bauteilen verantwortlich. Hierbei wird ein 11V-Akku benötigt, da sonst nur einer der beiden Stepper-Motoren angetrieben werden kann. Da diese Spannung jedoch für einen Arduino, welcher bei einer Spannung von 5V arbeitet, zu hoch ist, wird die am Arduino anliegende Spannung über einen Spannungsregler auf ca. 4,9V begrenzt. Der Servo sowie die beiden Stepper-Motoren für die Räder sind direkt an den 11V-Akku angeschlossen.

Lautsprecher

Um auch akustische Signale und „Warnungen“ zu verteilen, benutzen wir einen Lautsprecher sowie eine Mikro SD Karte. Mit der entsprechenden Bibliothek, die wir auf GitHub (https://github.com/TMRh20/TMRpcm/wiki) gefunden haben, lassen sich die auf der SD Karte gespeicherten Sounds abspielen.

Materialliste

Bauteil Anzahl
Arduino Nano 1
Servo 1
Stepper Motor 2
Stepper Motor Driver (DRV8825) 2
Rad (d=9cm) 2
Kipp-Schalter 1
Ultraschallsensor HC-SR04 1
Lautsprecher 1
Breadboard 1
LiPo-Akku 11V 1
Spannungsregler 1
Diverse Elektronische Bautile (s. Schaltplan) 1

Tabelle 1: Materialliste

Für den Bau des Gehäuses
Holz
Schrauben
Winkel
Scharniere

Tabelle 2: Materialliste für das Gehäuse.

Useless Box Inneres
Abbildung 3: Bauteile

Schaltplan

Schaltplan
Abbildung 4: Schaltplan

Pinbelegungstabelle

Bauteil Signalfunktion Pinnummer
Stepper Motor Driver links Direction 3
Step 2
Stepper Motor Driver rechts Direction 5
Step 4
Ultraschallsensor Trigger 9
Echo 8
Servo 11
Kipp-Schalter 12

Tabelle 3: Pinbelegungstabelle

Methoden und Umsetzung

Messen der Entfernung

Damit der Roboter erkennen kann, ob sich ein Objekt dem Schalter nähert, haben wir einen Ultraschallsensor eingebaut, welcher es ermöglicht, Abstände und Entfernungen zu messen. Um die Entfernung zu bestimmen, sendet der Sensor ein Signal aus. Anschließend wird gemessen, wie lange es dauert, bis dieses Signal wieder vom Sensor empfangen wird. Anhand der gemessenen Zeit lässt sich mit Hilfe der Schallgeschwindigkeit der Abstand des Objektes bestimmen:

Entfernung = (Geschwindigkeit x Zeit) / 2

Da wir nur den Abstand zwischen Sensor und Objekt haben möchten, müssen wir die Entfernung halbieren.

Schallgeschwindigkeit: 340 m/s ⇒ 0,034 cm/mikrosekunde

⇒ Entfernung = (0,034 x Zeit)/2

Bei einer beispielhaften Dauer von 850 Mikrosekunden zwischen Senden und Empfangend es Signals ergibt sich also eine Entfernung von:

⇒ (0,034 x 20) / 2 = 14,45cm

Da diese Berechnung mehrmals pro Sekunde durchgeführt wird, lässt sich leicht erkennen, ob sich ein Gegenstand dem Schalter nähert. Um Messfehler zu umgehen wird bei unserem Roboter immer ein Mittelwert aus mehreren Messergebnissen berechnet, bevor eine Entscheidung getroffen wird.

Ablauf

Abbildung 5: Ablauf
Ablauf
Abbildung 6: Reaktion des Roboters abhängig von der Zählvariable

Damit die Useless Box reibungslos funktionieren kann, gibt es zwei wichtige Abläufe, die parallel zueinander ablaufen. Zum Einen wird bei jedem Umlegen des Schalters eine Zählvariable um 1 erhöht. Anschließend wird der Servo gecalled, wodurch der ausfahrbare Arm betätigt wird und den Schalter wieder in seine ursprüngliche Position bewegt.

Abhängig von der Zählvariable kann der Roboter verschiedene Aktionen ausführen. Dies wird im zweiten Ablauf festgehalten. In Abhängigkeit vom Wert der Variable entsteht die „Reaktion“ des Roboters. Aus der Grafik lässt sich beispielsweise erkennen, dass der Roboter erst beim dritten Umlegen des Schalters beginnt, wegzufahren. Und erst nach dem 5. Mal wird der Ultraschallsensor benutzt, um die Entfernung zu Objekten vor dem Roboter zu messen.

Ergebnis und Diskussion

Wir haben es erfolgreich geschafft, die Grundfunktionen der Box zu implementieren und auch einige extra Features zu installieren. Jedoch hatten wir einige Probleme damit, die Räder zum Laufen zu bringen, weshalb wir leider keine Zeit mehr hatten, diese noch vielen weiteren Features zu widmen. Zudem ist der Treiber für den Lautsprecher durchgebrannt, weshalb wir keine Musik mehr abspielen können, was ein wichtiges Feature der Box sowie eine wichtige Charaktereigenschaft des Roboters gewesen wäre.

Für die Zukunft ergeben sich noch haufenweise weitere Möglichkeiten, den Roboter in seiner Persönlichkeit zu erweitern. So lässt sich der Code anhand der vorher geschriebenen Bibliotheken und Methoden sehr einfach um zahlreiche Aktionen erweitern. Zudem bietet auch der Roboter einige Erweiterungsmöglichkeiten.

Beispielsweise könnte man mehrere zusätzliche Sensoren einbauen, die anhand der Messwerte aus der Umgebung zu einer mehr „zufälligen“ Reaktion führen können. Da die Messwerte unterschiedlich sein können, könnte man dies als einen „Randomizer“ benutzen.

Mit deutlich mehr Zeit würde eine zweite Version des Roboters zudem mehrere Schalter haben, die auch hier zahlreiche Möglichkeiten für mehr Reaktionen bieten, damit der Roboter nach und nach immer mehr „Charakter“ bekommt.

Code

projektewise21/uselessbox1public/start.txt · Zuletzt geändert: 2022/05/14 19:27 von d.golovko