DIY Handgebaren-gestuurde Arduino Robotarm – Stap‑voor‑Stap Bouwhandleiding
Onderdelen en Benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO (robotarm) | 1 |
| Arduino Nano R3 (handskoen) | 1 |
| JLCPCB Custom PCB (optioneel) | 1 |
| Servomotor MG996R | 6 |
| 5V Batterijpakket (bijv. 2200mAh RC) | 1 |
| PCA9685 16-kanaal Servodriver (I²C) | 1 |
| HC-05 Bluetooth-module | 2 |
| A4988 Stappenmotordriver | 1 |
| NEMA-17 Stappenmotor (basisrotatie) | 1 |
| Breadboard | 1 |
| IMU (MPU6050, 6 DoF) | 1 |
| Flex Sensor | 1 |
| 3D-geprinte robotarm-onderdelen (Thingiverse) | 1 set |
| 3D-geprinte handskoen/exoskelet (optioneel) | 1 |
Benodigde Gereedschappen
- 3D-printer (voor arm- en handskoen-onderdelen)
Over dit Project
Introductie: Geïnspireerd op films als Pacific Rim en Avatar, bouwen we een industriële robotarm op kleine schaal die wordt bestuurd door menselijke handgebaren. Dit is MARK 1 – de eerste iteratie.
Kenmerken MARK 1
- 6-as rotatie
- Draagbaar
- Besturing via handgebaren (handskoen)
- Voorprogrammeerbaar voor basis taken
- Draadloze besturing (Bluetooth)
- Tilvermogen: 600g (max 1kg)
Overzicht
We bouwen een 6-as robotarm die wordt bestuurd door een robotische handskoen. Natuurlijke gebaren (knijpen, polsrotatie) vertalen naar openen/sluiten van de gripper, rotatie van de arm, etc. De handskoen stuurt via Bluetooth (HC-05) commando's naar de arm.
Onderdelenlijst & 3D-print
- Robotarm: Thingiverse Wonder Tiger's 6-DOF Arm (3 delen: gripper, basis, kernarm). Printtijd ~40 uur.
- Handskoen: Thingiverse Roman 13's Exoskeleton Gauntlet (voor grotere handen: 105% schaal). Alternatief: een bouwhandskoen met sensors bevestigd.
Hoe het Werkt
Signaalstroom: Handskoen-sensors (flex, IMU) → Arduino Nano → Bluetooth Master (HC-05) → Bluetooth Slave (HC-05) op arm → Arduino UNO → PCA9685 servodriver → Servomotoren. Voor basissrotatie: Arduino UNO → A4988 → NEMA-17.
Sensoren in handskoen:
- Flex sensors: Weerstand verandert bij buigen → detecteer vingermovements.
- Accelerometer (MPU6050): Detecteer pols/arm rotatie (X, Y, Z).
Elke gebaar wordt gemapt op een karakter (bijv. 'f' = gripper dicht, 'F' = gripper open, 'S' = basis links) en via Bluetooth verzonden.
Robotarm Mapping
Een mapping-tabel koppelt ontvangen karakters aan specifieke servo-acties (zie originele artikel). Hoofdletters = tegengestelde richting.
Montage
- Robotarm: 3D-print en assembleer volgens Thingiverse-instructies. Gebruik de juiste schroeven/moeren.
- Servodriver & Voeding: Sluit PCA9685 aan op Arduino UNO (I²C: SDA A4, SCL A5). Voed servos vanuit externe 5V/2A+ bron (niet van Arduino!).
- NEMA-17 voor Basis: De MG996R is te zwak voor basisrotatie. NEMA-17 met A4988 biedt hoge koppel en precisie.
- Complete Bedrading: Zie schema voor alle verbindingen inclusief Bluetooth-modules.
Bluetooth Configuratie
| Module | Rol | Instelling |
|---|---|---|
| Handskoen HC-05 | Master | Baud 4800, AT+ROLE=1, AT+BIND=<slave_adres> |
| Arm HC-05 | Slave | Baud 4800, AT+ROLE=0 |
Programmeren – Robotarm (Arduino UNO)
Gebruikt de HCPCA9685 bibliotheek. Belangrijke code-fragmenten:
#include "HCPCA9685.h"
#define I2CAdd 0x40
HCPCA9685 HCPCA9685(I2CAdd);
// Parkeerposities, incrementen, min/max per servo
const int servo_joint_L_parking_pos = 60;
int servo_joint_L_pos_increment = 20;
int servo_joint_L_parking_pos_i = servo_joint_L_parking_pos;
int servo_joint_L_min_pos = 10;
int servo_joint_L_max_pos = 180;
void setup() {
Serial.begin(4800); // Bluetooth baudrate
HCPCA9685.Init(SERVO_MODE);
// Initialiseer alle servos op parkeerpositie
}
void loop() {
if (Serial.available() > 0) {
char state = Serial.read();
// Voorbeeld: basisrotatie links
if (state == 'S') { baseRotateLeft(); delay(5); }
// Gripper open/dicht
if (state == 'f') { // dicht
if (servo_joint_3_parking_pos_i < servo_joint_3_max_pos) {
HCPCA9685.Servo(4, servo_joint_3_parking_pos_i);
servo_joint_3_parking_pos_i += servo_joint_3_pos_increment;
}
}
// ... overige cases voor elke servo
}
}
void baseRotateLeft() {
digitalWrite(stepPin, LOW);
delayMicroseconds(stepDelay);
}
Let op: Hard stops voorkomen overschrijding van max hoek (bescherming tandwielen).
Programmeren – Handskoen (Arduino Nano)
// Sensor pinnen
int pinkie_Data = A1;
int finger_Data = A2;
int thumb_Data = A3;
const int MPU1 = 0x68, MPU2 = 0x69; // I²C adressen MPU6050
int response_time = 1000;
bool calibrated = false;
int thumb_high, thumb_low, finger_high, finger_low, pinkie_high, pinkie_low;
void loop() {
// Lees flex sensors
int pinkie = analogRead(pinkie_Data);
int finger = analogRead(finger_Data);
int thumb = analogRead(thumb_Data);
// Lees IMU's
GetMpuValue1(MPU1);
GetMpuValue2(MPU2);
// Eerst calibreren (bij reset)
if (!calibrated) {
delay(1000);
thumb_high = thumb * 1.15; thumb_low = thumb * 0.90;
finger_high = finger * 1.03; finger_low = finger * 0.80;
pinkie_high = pinkie * 1.06; pinkie_low = pinkie * 0.80;
calibrated = true;
}
// Gesture detectie & verzenden
if (finger >= finger_high) { Serial.print("F"); delay(response_time); } // open
if (finger <= finger_low) { Serial.print("f"); delay(response_time); } // dicht
// ... vergelijkbaar voor pinkie, thumb, IMU-gebaren
}
Resultaat & Volgende Stappen
De arm kan objecten oppakken en verplaatsen. Precisie kan verbeterd worden door code-optimalisatie en betere calibratie. De code is open source op GitHub – bijdragen zijn welkom!
Volgende stappen (MARK 2): Verbeterde mechanica, krachtmeting, autonom navigatie, meer sensoren.
CAD-bestanden (Thingiverse)
Productieproces
- Bouw een Bluetooth-gecontroleerde Raspberry Pi Robot met Audio Feedback
- Bouw je eigen DIY huiswerk-schrijfmachine thuis
- Bouw een Android-bestuurd extern voertuig met Raspberry Pi Motor Shield
- Servo-gestuurde obstakelvermijdende robot: Bouw met Arduino & HC-SR04
- Bouw Een Autonome Lijnvolgende Robot Met Arduino UNO
- Arduino-gebaseerde 6-DoF Robotarm Gestoeerd met Wii Nunchuk
- Bouw een Stemgecontroleerde Robot met Arduino Nano
- Ethernet-gestuurde robotarm: Remote control gemaakt simpel
- MobBob: Bouw Je Eigen Arduino Robot, Naadloos Bestuurd via Android Smartphone
- PiBot: De Arduino-aangedreven pianorobot voor precisiemuziek
- Slim Indoor Navigatie Robot Kit voor Arduino Projecten