Bouw Sauron: De Semi-Humanoïde Robot – Complete Arduino Mega 2560 Handleiding
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino Mega 2560 | 1 |
| 1Sheeld (Bluetooth shield voor smartphone sensoren) | 1 |
| Android toestel | 1 |
Benodigde tools en machines
- Lasersnijder (voor houten delen)
Apps en online services
- Arduino IDE
- 1Sheeld Mobile App (Google Play)
- 1Sheeld Bibliotheek
Over dit project
Bouw een mensgrote semi-humanoïde robot geïnspireerd op Sauron uit Lord of the Rings. De robot heeft twee 3-DOF armen, een 3-DOF hoofd en een vast fundament. Drie bedieningsmodi, schakelbaar via twee drukknoppen (of 1Sheeld toggle buttons):
- Standby-modus – Autonome bewegingsserie voor demonstraties.
- Gamepad-modus – Handmatige besturing via 1Sheeld Gamepad shield.
- Imitatie-modus – Robot kopieert armenbewegingen van de gebruiker via smartphone sensoren (orientatie/gyroscoop) in een handschoen.
Ontworpen voor New York Maker Faire om kinderen te inspireren voor techniek (Arduino, 1Sheeld). Alle bestanden (CAD, schema's, code, DXF voor lasersnijder) zijn bijgeleverd.
Stap 1: Robotkop bouwen
Gebruik van open-source robotkop "Fritz" van xyzbot. Lasergesneden 3mm multiplex. 3D-geprinte oogdelen, wenkbrauwen en lippen weggelaten voor kosten/tijd. Volg de originele bouwvideo, maar sla basis- en 3D-print stappen over.
Stap 2: Robotlichaam bouwen
Draagconstructie van Artelon staven (50mm, 25mm, 15mm) en 3mm multiplex, verbonden met tong-en-groef verbindingen en schroeven (M4x20, M12x30, M4x10). Modulair ontwerp voor transporteerbaarheid. Zie bijgevoegde PDF-tekeningen.
Stap 3: Robotbasis maken
6mm staalplaat met gewichtsverlichtende openingen. Bevestiging aan bureau met 3 schroeven of 4-inch C-klemmen. DXF-bestand bijgeleverd.
Stap 4: Robotarmen bouwen
Modulaire armen met 3-DOF. Schulder: aluminium pan/tilt. Voorarm: gelasercut gesneden platen (Autodesk 123D Make). Wapen: balza hout zwaard/hak. SolidWorks model bijgeleverd voor momentberekening (3kg/cm servo's, zwaardere gekozen).
Stap 5: Sauron helm en armor (cosplay)
Gebaseerd op Instructables: Sauron Cosplay en Helm. Aangepast aan robotdimensies.
Stap 6: Electronica
- Arduino Mega + 1Sheeld voor servo-besturing (9 servo's: 3 per arm, 2 nek, 1 mond)
- 5V/5A voeding voor servo's en Arduino
- Kleine printplaat voor gemeenschappelijke VCC/GND
- 1Sheeld shields gebruikt: Gamepad, Orientation, Music Player, Toggle Button, Terminal
1Sheeld werking: Hardware shield op Arduino, Bluetooth naar Android app. Smartphone sensoren (gyroscoop, toetsenbord, audio) worden beschikbaar in Arduino.
Stap 7: Arduino Code
Code gebruikt OneSheeld en Servo bibliotheken. Interrupts op pin 2 en 3 voor moduswisseling. Drie modus-functies: standbyMode(), gamePadMode(), imitationMode().
#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_SHIELD
#define INCLUDE_MUSIC_PLAYER_SHIELD
#define INCLUDE_TERMINAL_SHIELD
#define INCLUDE_ORIENTATION_SENSOR_SHIELD
#include <OneSheeld.h>
#include <Servo.h>
Servo rightArm_Motor1, rightArm_Motor2, rightArm_Motor3;
Servo leftArm_Motor1, leftArm_Motor2, leftArm_Motor3;
Servo neckHorizontal, neckVertical, mouth;
const int modePin1 = 2, modePin2 = 3;
volatile int modeState1 = LOW, modeState2 = LOW;
volatile boolean gamepadMode_Enabled = false, imitationMode_Enabled = false;
const int ledPin1 = A0, ledPin2 = A1;
void setup() {
OneSheeld.begin();
pinMode(modePin1, INPUT); pinMode(modePin2, INPUT);
pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT);
digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, HIGH); // Sauron's ogen
attachInterrupt(digitalPinToInterrupt(modePin1), gampadMode_ChangeISR, CHANGE);
attachInterrupt(digitalPinToInterrupt(modePin2), imitationMode_ChangeISR, CHANGE);
rightArm_Motor1.attach(4); rightArm_Motor2.attach(5); rightArm_Motor3.attach(6);
leftArm_Motor1.attach(7); leftArm_Motor2.attach(8); leftArm_Motor3.attach(9);
neckHorizontal.attach(10); neckVertical.attach(11); mouth.attach(12);
// Home positie
rightArm_Motor1.write(95); rightArm_Motor2.write(150); rightArm_Motor3.write(20);
leftArm_Motor1.write(90); leftArm_Motor2.write(45); leftArm_Motor3.write(180);
neckHorizontal.write(105); neckVertical.write(30); mouth.write(100);
}
void loop() {
modeState1 = digitalRead(modePin1);
modeState2 = digitalRead(modePin2);
if (modeState1 == HIGH) { Terminal.println("GamePad Mode"); gamePadMode(); }
else if (modeState2 == HIGH) { Terminal.println("Imitation Mode"); imitationMode(); }
else { Terminal.println("Standby Mode"); standbyMode(); }
}
// Standby: voorgeprogrammeerde bewegingsserie met mondbeweging en geluid
void standbyMode() { /* ... uitgebreide sequentie met 9 posities ... */ }
// Gamepad: direct besturen via Gamepad shield knoppen
void gamePadMode() {
if (GamePad.isUpPressed()) { /* beide armen omhoog */ }
if (GamePad.isDownPressed()) { /* beide armen omlaag */ }
if (GamePad.isRightPressed()) { /* rechter arm zijwaarts */ }
if (GamePad.isLeftPressed()) { /* linker arm zijwaarts */ }
if (GamePad.isRedPressed()) { /* combo 1 */ }
if (GamePad.isOrangePressed()) { /* combo 2 */ }
if (GamePad.isGreenPressed()) { /* combo 3 */ }
if (GamePad.isBluePressed()) { /* combo 4 */ }
}
// Imitatie: smartphone orientatie → servo hoeken
void imitationMode() {
if (OrientationSensor.getY() > -90 && OrientationSensor.getY() <= 90)
leftArm_Motor1.write(map(OrientationSensor.getY(), -90, 90, 0, 180));
if (OrientationSensor.getZ() > -70 && abs(OrientationSensor.getZ()) <= 70) {
leftArm_Motor2.write(map(OrientationSensor.getZ(), 0, 60, 100, 160));
leftArm_Motor3.write(map(OrientationSensor.getZ(), 0, 60, 160, 100));
}
}
// Interrupt handlers voor moduswisseling
void gampadMode_ChangeISR() {
if (gamepadMode_Enabled && !imitationMode_Enabled) { gamepadMode_Enabled = false; imitationMode_Enabled = false; }
else { gamepadMode_Enabled = true; imitationMode_Enabled = false; }
}
void imitationMode_ChangeISR() {
if (imitationMode_Enabled && !gamepadMode_Enabled) { gamepadMode_Enabled = false; imitationMode_Enabled = false; }
else { gamepadMode_Enabled = false; imitationMode_Enabled = true; }
}
Stap 8: Sauron op Maker Faire New York
Foto's van de robot in actie tijdens de Maker Faire.
Stap 9: Toekomstige verbeteringen
- Bouwvideo opnemen
- Hoofd completeren met 3D-geprinte ogen, wenkbrauwen, lippen
- Vaste basis vervangen door 4 mecanum wielen voor mobiliteit
Schema's
Alle bijlagen: CAD-bestanden (SolidWorks, DXF), Arduino code (F5KJZGXIKMXG3DG.ino), 1Sheeld bibliotheek.
Productieproces
- Industriële Robots: Ontwerp, Productie en Toekomstige Trends
- Bouw een DIY SCARA-robot met Arduino – Stap-voor-stap Handleiding
- Efficiëntie Maximeren: Een Multi‑Robot Injectie‑Moulding Cel Produceert Een Complete Shaker Cup In Één Cyclus
- De toekomst van automatisering: Zelfreplicerende robots vormgeven Industry 4.0
- Bouw het ideale ERP-implementatieteam: Bewezen strategieën voor succes
- Raspberry Pi Robot Bouwen: Beginner Handleiding & Projecten
- Consistentie verbeteren met autonome spuitrobots
- Hoe verfrobots herwerk reduceren, consistentie verhogen en kosten besparen
- Herwerkkosten in productie reduceren: strategieën voor efficiëntie en kwaliteit
- Robotvisie in de Industrie: Van Visie naar Zelf-Programmering
- Wat Is Een Zelf-Programmerende Robot En Waarom Het Belangrijk Is