Terminator-Hand
Aufbau
Verwendet wurden unter anderem:
- Bausatz aus dem 3D-Drucker, im Internet bestellbar
- Arduino Uno und zwei Servomotoren
- eine Energiezelle aus der Zukunft
- ersatzweise geht auch ein altes Netzteil (ca. 9 Volt & 0,5–1,5A Ampere)
- Schrauben und Muttern verschiedener Größen
- 2-mm-Gewindestangen
- kleine LEDs nach Bedarf
- Kabel und einfache Stromversorgung
- Metallfarbe oder Chrom-/Silberlack
- Kunststoffkleber und Schraubenkleber (Loctite)
Funktion und Wirkung
Die Terminator-Hand besteht ursprünglich aus Kunststoffteilen, die zusammengeklebt werden. Ich hatte den Bausatz damals bei Etsy gefunden; der Preis lag bei etwa 150 Euro.
Ich wollte daraus etwas mehr machen und habe deshalb zwei Servomotoren eingebaut: einen für die Drehung des Unterarms und einen für die Bewegung der Finger. Einer der Servos ist gut versteckt im unteren Teil des Armes, der andere ist seitlich noch dezent zu erkennen.
Der schwierigste Teil war der Bau einer funktionierenden, stabilen Zugmechanik für die Finger, weil die dünnen inneren Fingerstreben aus Kunststoff das nicht ausgehalten hätten. Erst im dritten Versuch erwiesen sich sehr dünne Gewindestäbe mit 2 mm Durchmesser als stabile Lösung.
Der Arduino zur Steuerung sitzt im Sockel des Modells. Dort ist auch die Energiezelle aus der Zukunft verborgen. Eine selbstständig flackernde LED aus einer alten Vape sorgt zusätzlich für etwas Stimmung. Ergänzend kann auch noch ein mp3-Modul am Arduino verbaut werden, welches den passenden Sound über ein paar Lautsprecher abspielt.
Wichtig war mir vor allem, die technische, skelettartige Wirkung der Hand zu erhalten.
Arduino-Code
/* TERMINATOR beide Motoren */
/* FINGER PIN 8 */
/* UNTERARM PIN 9 */
#include <Servo.h> // Servo-Bibliothek
Servo servo_finger; // Servo Finger
Servo servo_unten; // Servo Unterarm
void setup() {
servo_finger.attach(8); // Steuerleitung an Pin 8
servo_unten.attach(9); // Steuerleitung an Pin 9
}
void loop() {
delay(5000);
// Unterarm dreht nach vorn
servo_unten.write(20);
delay(1000);
for (int pos = 20; pos <= 90; pos++) {
servo_unten.write(pos);
delay(40);
}
// Finger gehen zu, erstes Mal
servo_finger.write(90);
delay(1000);
for (int pos = 90; pos >= 0; pos--) {
servo_finger.write(pos);
delay(7);
}
// Finger gehen auf, erstes Mal
delay(100);
for (int pos = 0; pos <= 90; pos++) {
servo_finger.write(pos);
delay(7);
}
// Finger gehen zu, zweites Mal
delay(1000);
for (int pos = 90; pos >= 0; pos--) {
servo_finger.write(pos);
delay(5);
}
// Finger gehen auf, zweites Mal
delay(100);
for (int pos = 0; pos <= 90; pos++) {
servo_finger.write(pos);
delay(5);
}
// Unterarm dreht zurück
delay(1000);
for (int pos = 90; pos >= 20; pos--) {
servo_unten.write(pos);
delay(30);
}
}