Otto DIY - Funduino Otto "Do It Yourself"
Ein kleiner süßer Roboter, angetrieben von vier Miniaturservos kann er separat seine beiden Füße und Beine bewegen. Die Programmierung mit Hilfe der Arduino-Software ist sehr einfach. Genau wie in unseren Anleitungen können die einzelnen Module nach und nach programmiert werden.
Die Bauteile im Überblick:
- 1x Funduino Nano R3 (Arduino kompatibel)
- 4x Servo SG90
- 1x Erweiterungs-Shield für Arduino UNO/NANO (I/O Shield – Protoshield)
- 1x HC-05 Ultraschallsensor
- 20x Steckkabel (w/w)
- 1x 9V Batterieklemme mit DC-Stecker
- 1x DC-Adapter mit Schraubklemmen
- 1x Passiver Lautsprecher
- 1x Ein/Aus Schalter (wird beim Funduino Gehäuse nicht benötigt)
- 1x USB Kabel
- Schrauben und Servozubehör
- Gehäuseteile bestehend aus Funduino-Otto: Oberteil (Kopf), Unterteil, 2x Bein, 2x Fuß
Mit etwas Ausdauer und Geschick beim Programmieren bewegt sich der Roboter nach dem Programmieren wie ein Tänzer und pfeift seine eigene Melodie. Auch die Erkennung von Gegenständen ist durch den eingebauten Ultraschall-Abstandssensor kein Problem.
In diesem Video zeigt OTTO, was er kann:
OTTO DIY hat bereits eine sehr große Community, die unter folgenden Links Hilfe und Anleitungen bereitstellt:
GitHub Datenbank mit allen Informationen:
Wenn du einen 3D-Drucker hast, kannst du dir die Teile auch selbst ausdrucken.
Es gibt mittlerweile sehr viele Versionen des Roboters, die bei Thingiverse heruntergeladen werden können. Die Versionen sind entweder nur optisch verändert, oder bieten neue und weitere Funktionen.
Hier gibt es die Originaldateien zum Download bei Thingiverse:
Funduino hat ebenfalls ein eigenes Design erstellt, bei dem es jedoch keinerlei Unterschiede bzgl. der Programmierung des Roboter gibt. Lediglich der Aufbau unterscheidet sich in folgenden Elementen:
Unterschiede „Funduino OTTO“ und „OTTO DIY“
1 Das NANO-Protoshield, also die Platine, auf der die Module angeschlossen werden, befindet sich an der Rückwand des Roboterunterteils anstelle auf der Kopfunterseite.
Vorteil: Wenn an der Elektronik gearbeitet werden muss, fällt einem nach dem Abnehmen des Kopfes nicht ein Großteil der Elektronik entgegen.
2) Durch das aufrecht stehende Protoshield befindet sich, erreichbar durch eine Durchführung im Kopf, der Stromanschluss an der Oberseite des Kopfes,
Vorteil: Man kann außenliegende Spannungsquellen schön während der Programmierphase kurzfristig einsetzen, ohne den Kopf demontieren zu müssen.
3) Durch den außenliegenden Anschluss für die externe Spannungsversorgung wird kein Ein- und Ausschalter mehr benötigt. Kopfseitig kann zum starten des Roboters einfach der Stecker eingesteckt werden.
Vorteile:
- Kein Löten zum Anschluss des Schalters mehr erforderlich
- Durch den genormten Anschluss für die externe Spannungsversorgung am Protoshield, der in der Funduino-Version verwendet werden kann, ist man sehr flexibel in der Verwendung unterschiedlicher Spannungsversorgungsmöglichkeiten.
Im Funduinoshop kann man den Bausatz für „Funduino OTTO“ mit und ohne gedrucktem Gehäuse bekommen:
Aufbau
- Stelle zuerst 2 der Servos auf 90° ein. Stecke dazu den Aufsatz auf und drehe den Servo auf 90°
2. Die Servos werden in den Bauch des Ottos eingesetzt und festgeschraubt.
3. Die zurechtgeschnittenen Clips werden in die Ottobeine eingesetzt.
4. Die Beine werden nun am Bauch des Ottos festgeschraubt.
5. Danach werden in beide füße jeweils ein kurzer, zurechtgeschnittener Clip eingesetzt und festgeschraubt.
6. Richte die Servos wie zuvor schon auf 90° aus, setze diese nun in den Füßen ein und schraube sie fest.
7. Die Kabel der Servos werden durch die Beine geführt in den Innenraum des Otto Bauches. Dann werden die Füße festgeklemmt und die Servos festgeschraubt.
8. Stecke nun den NANO Mikrocontroller in das Expansion Board und verbinde die Kabel der Servos folgendermaßen:
Linkes Bein – Pin 2
Rechtes Bein – Pin 3
Linker Fuß – Pin 4
Rechter Fuß – Pin 5
Stecke dann das Expansion Board in die Halterung im Bauch.
9. Jetzt wird der Ultraschallsensor in die Augenöffnung eingesetzt.
10. Nehme vier Steckkabel und stecke sie an den Ultraschallsensor. Verbinde die anderen Enden mit den Pins 8 und 9.
Sicher sind dir schon die Beschriftungen G, V und S auf dem Expansion Board aufgefallen. Die sind jetzt wichtig.
Pin des Ultraschallsensors | Expansion Board Pin | Pin Spezifizierung |
GND | 8 | G |
Echo | 9 | S |
Trig | 8 | S |
Vcc | 9 | V |
11. Stecke zwei weitere Steckkabel an den Lautsprecher und verbinde diese mit dem Pin 13 am Expansion Board. Die ‚+‘ Seite wird dabei an ‚S‘ angeschlossen, die ‚-‚ Seite an ‚G‘
12. Jetzt ist ein guter Moment die Batterieklemme an die Batterie zu stecken und durch die Öffnung zu führen.
Fertig!
Naja… fast.
Du musst noch den Otto programmieren.
Dazu brauchst du die Arduino IDE und musst ein Arduino Programm für den Otto Roboter überspielen. Suche am einfachsten in der IDE nach OttoDIYLib
. Das ist eine Bibliothek, die das programmieren deines Ottos sehr stark erleichtert
Füge am Anfang des Codes immer diesen Code mit ein, dann kannst du auf die Bibliothek des Ottos zugreifen.
#include <Otto.h>
Otto Otto;
#define LeftLeg 2 // Linkes Bein Pin
#define RightLeg 3 // Rechtes Bein Pin
#define LeftFoot 4 // Linker Fuß Pin
#define RightFoot 5 // Rechter Fuß Pin
#define Buzzer 13 //Lautsprecher Pin
Im Setup muss folgendes noch stehen:
void setup() {
Otto.init(LeftLeg, RightLeg, LeftFoot, RightFoot, true, Buzzer);
Otto.home();
}
Du kannst jetzt auf verschiedene Funktionen zurückgreifen, die der Otto nun ausführen kann…
Bewegungen:
Otto.walk(schritte, zeit, richtung);
schritte
Heißt einfach nur wie häufig du diese Bewegung wiederholen möchtest, ohne weitere Codezeilen zu schreibenzeit
(weiter unten alsT
notiert) ist die Zeit die das ausgeführt wird in Millisekunden. Eine höhere Zeitangabe verlangsamt die Schnelligkeit; Versuche Werte zwischen 500 und 3000 (3000 = Sehr langsam, 2000 = langsam, 1000 = normal, 500 = schnell)richtung
ist die Richtung in die der Otto laufen soll:1
um nach Vorne zu laufen,-1
zum rückwärts laufen.
Als Beispiel:
Otto.walk(2, 1000, 1);
In diesem Beispiel geht der Otto 2 Schritte nach vorne in 1000 Millisekunden.
Otto.turn(schritte, T, richtung);
schritte
heißt wie viele Schritte der Otto machen sollT
ist die Zeit in der er die Schritte machen sollrichtung
– 1 heißt hier, dass sich der Otto nach links dreht, -1 dass er sich nach rechts dreht.
Otto.bend (schritte, T, richtung);
schritte
heißt wie viele Schritte der Otto machen sollT
ist die Zeit in der er die Schritte machen sollrichtung
– 1 heißt hier, dass sich der Otto nach links beugt, -1 dass er sich nach rechts beugt.
Otto.shakeLeg (schritte, T, richtung);
schritte
heißt wie viele Schritte der Otto machen sollT
ist die Zeit in der er die Schritte machen sollrichtung
– 1 heißt hier, dass sich der Otto nach links beugt, -1 dass er sich nach rechts beugt.
Otto.jump(schritte, T);
- hier fehlt die Richtung, da das keinen Sinn ergeben würde einen Richtungs Parameter zu haben.
- Der Otto kann jedoch nicht wirklich springen, aber er versucht es immerhin 😁
Tänze
Hier gibt es einen weiteren Parameter, h, der die größe der Bewegungen beschreibt. Dadurch können die Tänze interessanter werden.
Otto.moonwalker(schritte, T, h, richtung);
(Anzahl der Schritte, T, h, 1 = links, -1 = rechts)h
: Versuch doch mal eine Zahl zwischen 15 und 40.
Otto.crusaito(schritte, T, h, richtung);
(Anzahl der Schritte, T, h, 1 = links, -1 = rechts)h
: Versuch doch mal eine Zahl zwischen 20 und 50.
Otto.flapping(schritte, T, h, richtung);
(Anzahl der Schritte, T, h, 1 = vorne, -1 = hinten)h
: Versuch doch mal eine Zahl zwischen 10 und 30.
Otto.swing(schritte, T, h);
(Anzahl der Schritte, T, h)h
: Versuch doch mal eine Zahl zwischen 0 und 50.
Otto.tiptoeSwing(schritte, T, h);
(Anzahl der Schritte, T, h)h
: Versuch doch mal eine Zahl zwischen 0 und 50.
Otto.jitter(schritte, T, h);
(Anzahl der Schritte, T, h)h
: Versuch doch mal eine Zahl zwischen 5 und 25.
Otto.updown(schritte, T, h);
(Anzahl der Schritte, T, h)h
: Versuch doch mal eine Zahl zwischen 0 und 90.
Otto.ascendingTurn(schritte, T, h);
(Anzahl der Schritte, T, h)h
: Versuch doch mal eine Zahl zwischen 5 und 50.
Sounds
Der Otto kann verschiedene Töne erzeugen und Lieder singen.
Otto.sing(songName);
Indem wir den Inhalt der Klammer ändern, können wir mit Leichtigkeit verschiedene Melodien abspielen. Um Melodien zu wiederholen, muss diese Funktion einfach nur wiederholt werden..
- S_connection
- S_disconnection
- S_buttonPushed
- S_mode1
- S_mode2
- S_mode3
- S_surprise
- S_OhOoh
- S_OhOoh2
- S_cuddly
- S_sleeping
- S_happy
- S_superHappy
- S_happy_short
- S_sad
- S_confused
- S_fart1
- S_fart2
- S_fart3
Otto._tone(10, 3, 1);
(Noten Frequenz, Abspielzeit, Leise Zeit)
Otto.bendTones (100, 200, 1.04, 10, 10);
(Ausgangsfrequenz, Schlussfrequenz, Zusatz, Abspielzeit, Leise Zeit)
Gesten
Das beste zum Schluss: Mit einer Kombination aus den Bewegungen und Sounds kann der Otto verschiedene Gesten/Emotionen ausdrücken.
Das geht über die Funktion
Otto.playGesture(gesture);
Otto.playGesture(OttoHappy);
Otto.playGesture(OttoSuperHappy);
Otto.playGesture(OttoSad);
Otto.playGesture(OttoVictory);
Otto.playGesture(OttoAngry);
Otto.playGesture(OttoSleeping);
Otto.playGesture(OttoFretful);
Otto.playGesture(OttoLove);
Otto.playGesture(OttoConfused);
Otto.playGesture(OttoFart);
Otto.playGesture(OttoWave);
Otto.playGesture(OttoMagic);
Otto.playGesture(OttoFail);
Wie zu sehen ist, ist das eigentlich ziemlich einfach, Sieht aber ziemlich fortgeschritten aus.
Funduino - Dein Onlineshop für Mikroelektronik
-
Dauerhaft bis zu 10% Rabatt für Schüler, Studenten und Lehrkräfte
-
Mehr als 3.500 Artikel sofort verfügbar!
-
Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.