Joy Robot: Arduino-ESP8266 Roboter für Kinderkliniken
Komponenten und Materialien
| Komponente | Menge |
|---|---|
| Arduino UNO | 1 |
| Espressif ESP8266 ESP-01 | 1 |
| SG90 Mikro-Servomotoren | 6 |
| DC-Motor mit Getriebe und Gummireifen | 2 |
| L298N H-Brücken-Treiber | 1 |
| Adafruit 16-Kanal 12-bit PWM/Servo-Treiber (PCA9685, I2C) | 1 |
| MAX7219 8x8 LED-Matrix | 4 |
| SparkFun Dual H-Brücke L298 | 1 |
| 18650 Akku | 2 |
| 18650 Akkuhalter | 2 |
| Arduino Proto Shield | 1 |
| 1N4001 Diode | 1 |
| Widerstand 10k Ohm | 3 |
Benötigte Werkzeuge und Maschinen
- 3D-Drucker
Apps und Online-Dienste
- Autodesk Fusion 360 (CAD)
- Arduino IDE
- Android SDK
Über das Projekt
Auszeichnungen: 1. Platz im Instructables Wheel Contest, 2. Platz im Arduino Contest, Finalist im Design for Kids Challenge. Danke an alle, die abgestimmt haben!
Projektseite: Instructables
Ziel und Konzept
Roboter sind überall – von industriellen Anwendungen bis zur Weltraumforschung. Meine Favoriten sind jedoch Roboter für Spaß und Unterhaltung! Dieses DIY-Roboter-Projekt wurde entwickelt, um Kinder in Krankenhäusern zu unterhalten und ihnen Freude zu bereiten. Der Fokus liegt auf Wissensaustausch und technologischer Innovation zur Unterstützung von NGOs, die in Kinderkliniken arbeiten.
Dieses Tutorial zeigt, wie man einen ferngesteuerten humanoiden Roboter baut, der über WLAN mit einem Arduino Uno und ESP8266-Modul gesteuert wird. Er nutzt Servomotoren für Kopf- und Armbewegungen, DC-Motoren für kurze Fahrstrecken und ein Gesicht aus LED-Matrizen. Die Steuerung erfolgt über einen beliebigen Webbrowser per HTML-Oberfläche. Ein Android-Smartphone in der Brust des Roboters überträgt Video und Audio zur Steuerzentrale.
Das Tutorial deckt 3D-Druck, Montage, Elektronik und Arduino-Code ab, damit jeder den Roboter nachbauen kann.
Verwandte Tutorials
- WiDC: WLAN-gesteuerter FPV-Roboter
- LED-Matrix-Array mit Arduino steuern
- Wi-Servo: Servomotoren per Browser steuern
Team
Besonderer Dank an die Teammitglieder: Thiago Farauche, Diego Augustus, Yhan Christian, Helam Moreira, Paulo de Azevedo Jr., Guilherme Pupo, Ricardo Caspirro, ASEBS.
Weitere Links
Schritt 1: Ein bisschen Geschichte
Das Projekt 'Robô da Alegria' (Joy Robot) entstand 2016 in der Region Baixada Santista (Brasilien) mit dem Ziel, Technologie zu entwickeln und die Community für die Maker-Bewegung zu begeistern. Inspiriert von freiwilligen Projekten von NGOs in Kinderkliniken sollte ein Roboter mit Open Hardware und Open Source Tools entwickelt werden, der Kindern im Krankenhaus Freude bringt.
Der Ursprung liegt Ende 2015 nach einem Vortrag der Association of Startups of Baixadas Santista (ASEBS). Es wurde ein Projekt ohne Preisgeld angestrebt, das Menschen altruistisch für einen guten Zweck zusammenbringt.
Der Roboter durchlief viele Iterationen: Von einem einzelnen Kopf mit mechanischen Augen und Augenbrauen zur heutigen humanoiden Form. Verschiedene Materialien und Elektronik wurden getestet: Vom Acryl- und MDF-Prototyp zum 3D-gedruckten Körper. Von einer einfachen Bluetooth-Steuerung mit zwei Servos zu 6 Servomotoren und 2 DC-Motoren per Webinterface über WLAN.
Die gesamte Struktur wurde mit Fusion 360 designt und 3D-gedruckt. Um den Druck in Makerspaces/FabLabs zu ermöglichen (maximale Druckzeit oft begrenzt), wurden alle Teile so aufgeteilt, dass jedes Teil unter 3 Stunden druckt. Die Teile werden geklebt oder verschraubt.
Das Gesicht aus LED-Arrays ermöglicht emotionale Ausdrücke. Servogesteuerte Arme und Hals geben Mobilität für Interaktion. Im Kern steuert ein Arduino Uno alle Peripherie, inklusive ESP8266 für WLAN-Kommunikation. Ein Smartphone in der Brust überträgt Audio/Video und kann auch für Spiele/Interaktion genutzt werden.
Schritt 2: Werkzeuge und Materialien
Werkzeuge
- 3D-Drucker (gesamter Körper wird gedruckt, viele Stunden Druckzeit)
- PLA-Filament (weiß und schwarz)
- Schraubendreher (meiste Teile werden verschraubt)
- Sekundenkleber
- Zange und Seitenschneider
- Lötkolben und Lötzinn
Elektronik
- Arduino Uno – Hauptcontroller, steuert Motoren und kommuniziert mit WLAN-Modul
- ESP8266-01 – WLAN-Modem, empfängt Befehle vom Webinterface
- SG90 Servomotoren (x6) – 4 für Arme, 2 für Kopfbewegungen
- DC-Motoren mit Getriebe und Gummireifen (x2) – für kurze Fahrstrecken
- L298N Dual H-Brücke (x1) – wandelt Arduino-Signale in Motorleistung um
- 16-Kanal Servo-Controller (PCA9685) – steuert 6 Servos über 2 Arduino-Pins (I2C)
- MAX7219 8x8 LED-Matrix (x4) – Roboter-Gesicht
- Micro-USB-Kabel – Code-Upload
- Jumper-Kabel (female-female, male-female)
- Smartphone (Motorola Moto E 4,3" oder ähnlich) – Video/Audio-Übertragung
- 18650 Akku (x2) – Stromversorgung Arduino & Peripherie
- 18650 Akkuhalter (x1)
- 1N4001 Dioden (x2)
- 10 kOhm Widerstände (x3)
- Ein/Aus-Schalter 20mm (x1)
- Proto Shield – erleichtert Verdrahtung
Mechanik
- Kugellager-Räder (x2)
- M2x6mm Schrauben (~70)
- M2x10mm Schrauben (~20)
- M2x1,5mm Muttern (x10)
- M3x40mm Schrauben (x4)
- M3x1,5mm Muttern (x4)
Die Links sind Vorschläge – frei woanders kaufen.
Schritt 3: 3D-Druck
Der Roboter besteht aus 36 verschiedenen Teilen, mostly ohne Stützen, 10% Infill. Druckzeit pro Teil < 3 Stunden.
Teileliste
- Kopf oben (rechts/links)
- Kopf unten (rechts/links)
- Kopf-Seitenkappen (rechts/links)
- Gesicht Rückplatte & Frontplatte
- Hals-Achse 1, 2, 3 & Hals-Mitte
- Arm (rechts/links), Schulter (rechts/links), Schulterbecher (rechts/links), Schulterscheibe (rechts/links), Arm-Achse (rechts/links)
- Brustkorb (rechts/links), Brust (rechts/links/vorne)
- Räder (rechts/links), Basis
- Handy-Halterung
- Rücken (rechts/links), Knöpfe (rechts/links), Verriegelung (rechts/links)
STL-Dateien: Thingiverse | Pinshape | YouMagine | Cults3D
Bekannte Probleme (Prototyp)
- Kabelkonflikte zwischen Servos und Schulter
- Reibung zwischen Kopf und Brustkorb
- Reibung zwischen Rädern und Struktur
- Einige Schraubenlöcher zu eng – aufbohren/feilen nötig
Kein 3D-Drucker?
- Freund fragen
- Makerspace/FabLab in der Nähe (Teile < 4h Druckzeit)
- Eigenen Drucker kaufen (z.B. Anet A8 ~165$)
- Interesse an DIY-Kit? Nachricht senden (Tindie möglich)
Schritt 4: Schaltplan-Übersicht
Kern: Arduino Uno. Interfaces ESP8266-01 für WLAN-Fernsteuerung.
- 16-Kanal Servo-Controller (I2C) → 6 Servos (2 Hals, 4 Arme)
- 5x 8x8 LED-Matrizen (MAX7219) → Arduino
- 2 DC-Motoren → L298N H-Brücke → 4 Arduino Digital-Pins
Stromversorgung: Zwei USB-Powerbanks (eine für Motoren, eine für Arduino). Einzige Powerbank führte zu ESP8266-Verbindungsabbrüchen bei Motor-Start/Stopp.
Smartphone in der Brust für Video/Audio-Streaming zur Steuerzentrale (PC). Kann auch Befehle an ESP8266 senden.
Hinweis: Komponenten sind nicht optimal gewählt (NodeMCU statt Arduino+ESP, Raspberry Pi statt Smartphone), aber Arduino war zum Projektstart günstigster und zugänglichster Einstieg.
Schritt 5: Gesicht montieren
4x 8x8 LED-Matrix auf schwarzer PLA-Rückplatte (2,5h Druck, 10% Infill, keine Stützen). Aufgrund Platzmangel: Matrix-Anschlüsse entlöten, auf Platinenrückseite versetzen (Pins zur Mitte).
Matrizen mit 16 M2x6mm Schrauben an Rückplatte befestigen. Verkettung: 1. Matrix → Arduino (5-polig), weitere Matrizen per female-female Jumper (DOUT → DIN). Frontplatte mit 4 M2-Schrauben verschließen, Kabel ordentlich verlegen.
Schritt 6: Kopf montieren
Kopf = 8 Teile (weißes PLA, 0,2mm, 10% Infill, keine Stützen, ~18h Druck): Kopf oben/unten (je 2), Seitenkappen (2), Hals-Achse 1 & 2.
Ober-/Unterteil jeweils zweiteilig, mit Sekundenkleber verbinden. Seitenkappen verschrauben (demontierbar für Reparatur). Vor Schließen: Gesicht einbauen, Brustkorb montieren (nächster Schritt).
Servo #5 an Hals-Achse 1, Servo #6 an Hals-Achse 2 (je 2 M2x6mm Schrauben). Hals-Achse 2 → Hals-Mitte (nächster Schritt). Gesicht in Kopf einsetzen.
Schritt 7: Brustkorb & Schultern
~12h Druck. 5 Teile: Brustkorb (2), Schultern (2), Hals-Mitte, Hals-Achse 3.
Brustkorb-Hälften verkleben. Schultern mit M2x10mm an Brustkorb, Servos #2 & #4 in Schultern einbauen (Kabeldurchführung beachten!). Hals-Mitte + Hals-Achse 3 mit 4 M2x6mm verbinden, an Schultern befestigen (gleiche Schrauben, 4 M2x1,5mm Muttern).
Servo #6 an Hals-Achse 3 (2 Schrauben), Hals-Achse 3 in Hals-Mitte einsetzen, 4 M2x6mm fixieren.
Schritt 8: Arme montieren
~5h pro Arm. 4 Teile: Schulterbecher, Schulterscheibe, Arm-Achse, Arm.
Arm-Achse mittig am Arm (3 M2x6mm), Servohorn am anderen Ende. Servo #1/#3 in Schulterbecher, Horn an Arm-Achse montieren. 2. Horn-Loch für Servo #2/#4 (bereits an Schulter). Kabeldurchführung in Becher/Schulter. Schulterscheibe mit 2 M2x6mm schließen.
Schritt 9: Brust montieren
2 Teile (rechts/links, ~4h Druck). Verbindet Brustkorb mit Unterteil (Räder/Basis). Schultern passen in obere Brust – Ausrichtungsbolzen + Kleben empfohlen. 6 Löcher unten für Rad-Montage.
Servos mit Aufklebern beschriften für leichtere Verkabelung.
Schritt 10: Räder montieren
3 Teile: Räder (links/rechts), Frontplatte. ~10h Druck.
- DC-Motoren anlöten (Kabel für H-Brücke)
- Motoren mit je 2 M3x40mm Schrauben+Muttern befestigen
- Frontplatte ankleben (verbindet Struktur)
- Frontplatte hat 6 Löcher oben → 6 M2x6mm Schrauben an Brust
Schritt 11: Handy-Halterung
1 Teil (~1h Druck). Für Motorola Moto E (4,3"), ähnliche Größen möglich. Handy positionieren, Halterung mit 4 M2x6mm andrücken. Wichtig: USB-Kabel vor Festziehen anschließen (Platz sehr knapp, USB-Stecker musste gekürzt werden).
Schritt 12: Basis montieren
1 Teil (~4h Druck). Montage:
- 16-Kanal Servo-Controller (4 M2x6mm)
- L298N H-Brücke (4 M2x6mm)
- Arduino Uno (4 M2x6mm)
- Proto Shield aufsetzen
- Verkabelung (Schritt 14)
- 2 Kugellager-Räder (je 2 Schrauben, Kabel dazwischen einklemmen)
- Basis an Rad-Sektion schrauben
Schritt 13: Rückseite & Stromversorgung
Abnehmbarer Deckel für Zugriff auf Elektronik, Akku-Laden, Smartphone Ein/Aus. 6 Teile: Rückseite (2), Knöpfe (2), Verriegelung (2). ~5,5h Druck. Hälften verkleben (gut trocknen lassen!).
Strom: 2x 18650 in Halter, in Reihe (7,4V). Minus → Arduino GND. Plus → Ein/Aus-Schalter → Arduino Vin. 2 Dioden in Reihe nach Akkus: 2×3,7V - 2×0,7V = 6,0V für Servos & DC-Motoren (nicht effizient, aber funktional).
Schalter an Rückseite (M2x6mm + M2x1,5mm). Akkuhalter (4 M2x6mm). Verriegelungszylinder schleifen für bessere Passung. Knöpfe ankleben. Deckel rastet ein, Knöpfe drehen zum Verriegeln.
Schritt 14: Verkabelung
Arduino Pin-Belegung
- D2 → L298N IN4
- D3 → L298N IN3
- D6 → L298N IN2
- D7 → L298N IN1
- D9 → MAX7219 DIN
- D10 → MAX7219 CS
- D11 → MAX7219 CLK
- D4 → ESP8266 RXD
- D5 → ESP8266 TXD
- A4 → SDA (Servo-Controller)
- A5 → SCL (Servo-Controller)
- Vin → Akku Plus (vor Dioden)
- GND → Akku Minus
ESP8266-01
- RXD → Arduino D4
- TXD → Arduino D5
- GND → Arduino GND
- VCC → Arduino 3V3
- CH_PD → Arduino 3V3
L298N H-Brücke
- IN1 → D7, IN2 → D6, IN3 → D3, IN4 → D2
- +12V → Akku Plus (nach Dioden)
- GND → Arduino GND
- OUT1 → Motor 1, OUT2 → Motor 2
MAX7219 (1. Matrix)
- DIN → D9, CS → D10, CLK → D11
- VCC → Arduino 5V, GND → Arduino GND
MAX7219 (weitere Matrizen)
- DIN → DOUT (vorherige), CS → CS (vorherige), CLK → CLK (vorherige)
- VCC → VCC (vorherige), GND → GND (vorherige)
16-Kanal Servo-Controller (PCA9685)
- SCL → A5, SDA → A4
- VCC → Arduino 5V, GND → Arduino GND
- V+ → Akku Plus (nach Dioden), GND → Arduino GND
Schritt 15: Arduino-Code
Arduino IDE installieren. Benötigte Bibliotheken:
- LedControl.h – LED-Matrizen Steuerung
- Adafruit_PWMServoDriver.h – Servo-Steuerung (PCA9685)
Code in 9 Dateien aufgeteilt:
- RobodaAlegria.ino – Hauptsketch, Bibliotheken, globale Variablen
- _05_Def_Olhos.ino – Augen-Matrizen (8x8, 9 Ausdrücke je Auge, links/rechts getrennt)
- _06_Def_Boca.ino – Mund-Matrizen (16x8, 9 Ausdrücke)
- _10_Bracos.ino – Vorgefertigte Arm-/Hals-Bewegungen (mov1() bis mov9())
- _12_Rosto.ino – Gesichts-Update (Kombination Augen + Mund)
- _13_Motores_DC.ino – DC-Motor-Funktionen
- _20_Comunicacao.ino – ESP8266-Kommunikation
- _80_Setup.ino – Initialisierung: Start-Gesicht, Motor-Positionen, WLAN-Verbindung
- _90_Loop.ino – Hauptschleife: ESP8266-Befehle empfangen, Ausgaben steuern
Download: RoboAlegria.rar. In _80_Setup.ino: SSID (XXXXX) & Passwort (YYYYY) eintragen, ESP8266-Baudrate prüfen. Arduino per USB verbinden, Code hochladen.
Schritt 16: Android-Apps
- IP Webcam: Video/Audio-Stream
- Screen Mirror: Bildschirm-Spiegelung
- Eigenes Android-Spiel für Robot-Interaktion (noch instabil, nicht veröffentlicht)
Schritt 17: Steuerinterface
HTML-Interface (interface.rar entpacken, in Firefox öffnen). Zwei Bereiche:
- Links: Kamera-Stream (IP Webcam) & Bildschirm-Spiegelung
- Rechts: Steuerbuttons
Eingabefelder: ESP8266 IP, IP Webcam IP, Screen Mirror IP.
Tab "Ações predefinidas": 9 Körperbewegungen, 13 Gesichtsausdrücke.
Tab "Ações personalizadas": 6 Servo-Winkel individuell, 9 Augen-Varianten, 8 Mund-Varianten. JavaScript sendet Befehle an ESP8266-IP.
Pfeiltasten: Vorwärts/Rückwärts, Links/Rechts drehen.
Mikrofon-Freigabe → Lautstärke löst Sprech-Animation aus (Empfindlichkeit einstellbar). Einstellungen: Arm/Hals-Geschwindigkeit konfigurierbar.
Download: interface.rar
Schritt 18: Viel Spaß!
Einschalten und Freude verbreiten! Tutorial teilen, bei Instructables Contests abstimmen! 😊
Code & Ressourcen
- Arduino Code:
RoboAlegria.rar(Download) - HTML Interface:
interface.rar(Download) - LedControl Bibliothek: GitHub
- Adafruit PWM Servo Driver: GitHub
3D-Modelle (CAD)
Herstellungsprozess
- Raspoulette: Solar-betriebenes autonomes Hühnerklappen-System Prototyp
- DIY Wall-E-inspirierter Raspberry Pi CD-Box-Roboter
- Rolling Alarm Robot: Intelligentes, mobiles Wecksystem mit Raspberry Pi und Google Kalender
- Einen motorisierten Minecraft-Creeper-Roboter mit Arduino bauen
- Archimedes: Der emotionserkennende KI-Roboter-Eule
- Sprachgesteuerter Computer-Vision-Roboter auf Windows 10 IoT Core bauen
- ROS Roboter: Terminal-gesteuerte Navigation auf Raspberry Pi
- Simple Pi Robot: 2-WD Autonomer Rover mit Raspberry Pi bauen
- Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte
- Linearmotoren verstehen: Von elektrischer Energie zur präzisen Linearbewegung