Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Komponenten und Zubehör

6 DoF Roboterarm 1
Nunchuk-Controller 1
Arduino Mega 2560 1
Control Shield 1

Apps und Online-Dienste

Über dieses Projekt

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Roboterarme sind faszinierend! Fabriken weltweit nutzen sie zum Lackieren, Löten und präzisen Bewegen. Sie finden sich in der Raumfahrt, Unterwasser-ROVs und sogar in medizinischen Anwendungen.

Und jetzt können Sie eine günstigere Version zu Hause, im Büro oder Labor haben! Müde von repetitiven Aufgaben? Programmieren Sie Ihren eigenen Roboter zur Hilfe... oder zum Chaos! :D

In diesem Tutorial zeige ich, wie man einen Roboterarm montiert und mit einem Arduino Mega programmiert. Als Steuerung dient ein Nintendo Nunchuk – günstig, leicht zu beschaffen und voller Sensoren.

Es gibt mehrere Nutzungsmöglichkeiten: Ohne Roboterarm-Kit können Sie Arduino-Programmierung und Nunchuk-Interfacing lernen. Oder Sie üben Elektronik- und Mechanik-Fähigkeiten.

Schritt 1: Werkzeuge und Materialien

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Verwendete Werkzeuge und Materialien:

Später wurde ich auf einen Nunchuk-Adapter hingewiesen, der die Breadboard-Verbindung erleichtert (Link). Eine gute Option, um Lötzeit zu sparen und den Originalstecker nicht zu zerstören (wie in Schritt 9 beschrieben).

Der SainSmart 6-Achsen-Arm enthält bereits:

Andere Roboterarm-Kits finden Sie online oder Sie entwerfen Ihren eigenen (z. B. 3D-druckbar).

In den folgenden 7 Schritten zeige ich den Arm-Aufbau vor der Verkabelung. Wenn Sie kein ähnliches Kit haben, können Sie Schritte überspringen. Andere Kits aufbauen und direkt zu Elektronik/Programmierung springen.

Jeder Schritt enthält ein animiertes GIF (nur Desktop-Version der Website).

Schritt 2: Roboterarm montieren – Teil 1: Basis

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Der erste Teil ist die Basis: zwei U-förmige Halter, rückseitig mit vier M3-Schrauben und Muttern verbunden. Der einfachste Montageschritt.

Schritt 3: Roboterarm montieren – Teil 2: Servo #1

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Der erste Servomotor wird senkrecht zur Basis mit einem Servo-Halter montiert (4 M3-Schrauben). Servo #1 oben drauf, ebenfalls mit 4 M3-Schrauben. Ein kreisförmiges Metallhorn wird auf die Servo-Achse gesetzt. Die mitgelieferten Plastikhörner werden nicht verwendet.

Schritt 4: Roboterarm montieren – Teil 3: Servo #2

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Ein weiterer Servo-Halter wird senkrecht zum vorherigen montiert, mit 4 Schrauben am Horn von Servo #1 befestigt. Servo #2 wird installiert (4 M3-Schrauben/Muttern, Metallhorn). Ein U-Halter wird am Horn befestigt (4 Schrauben). Eine M3-Schraube gegenüber der Servo-Achse gibt Stabilität; ein Lager sitzt auf dieser Schraube und wird mit einer M3-Mutter fixiert. So ist der U-Halter fest mit der Servo-#2-Zentralachse verbunden.

Schritt 5: Roboterarm montieren – Teil 4: Servo #3

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Ein weiterer U-Halter wird mit 4 M3-Schrauben/Muttern montiert. Am anderen Ende wird Servo #3 mit Metallhorn und 4 Schrauben installiert. Ein Servo-Halter verbindet sich mit dem Motor, ein L-Profil linkt zum Servo-Halter. Wieder wird ein Lager gegenüber der Servo-Achse verwendet.

Schritt 6: Roboterarm montieren – Teil 4: Servo #4

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Ein U-Halter verbindet sich mit dem L-Profil (4 M3-Schrauben/Muttern). Servo #4 wird am U-Halter montiert (4 Schrauben). Ein weiterer Servo-Halter verbindet sich mit dem Servo.

Schritt 7: Roboterarm montieren – Teil 4: Servo #5

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Der fünfte Servo wird senkrecht zu Servo #4 mit einem weiteren Servo-Halter verbunden (4 M3-Schrauben/Muttern).

Schritt 8: Roboterarm montieren – Teil 4: Servo #6

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Der Greifer wird an die Servo-#5-Achse angeschlossen. Oben drauf wird Servo #6 mit Schrauben, Muttern und Metallhorn befestigt. Der Greifer hat Zahnräder, die die Servodrehung in lineare Greiferbewegung umwandeln.

Schritt 9: Nunchuk-Controller vorbereiten

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Gründe für den Nintendo Nunchuk:

Unglücklicherweise hat der Nunchuk einen komplizierten Stecker. Um ihn an den Arduino anzuschließen, musste ich das Kabel durchtrennen und die Adern freilegen – danach funktioniert er nicht mehr an der Wii... :/

Zuerst Stecker abschneiden, Isolierung entfernen. Mit Multimeter und Aderfarben die Funktion jeder Ader bestimmen (Vcc, GND, SCL, SDA) anhand des Stecker-Schemas. Aderfarben sind nicht standardisiert; hier drei Varianten:

Original: SDA=grün, SCL=gelb, 3V3=rot, GND=weiß

Replika #1: SDA=gelb, SCL=weiß, 3V3=grün, GND=rot

Replika #2: SDA=blau, SCL=weiß, 3V3=rosa, GND=grün

Ich lötete die Adern an Male-Jumper für einfachere Arduino-Verbindung (Lötkolben, Schrumpfschlauch). Der erwähnte Nunchuk-Adapter erleichtert die Breadboard-Verbindung.

Schritt 10: Schaltungen verdrahten

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Nach Strukturmontage und Nunchuk-Anschluss geht es an die Verkabelung. Ich nutzte das mitgelieferte Control Board Shield, das spezifische Anschlüsse für Servos, Netzteil etc. hat.

Nunchuk-Verbindung (Arduino Mega / Shield):

Bei Arduino Uno andere Pins:

Servos (Control Shield Terminals):

Ohne Shield (direkt Arduino):

Externes 12V-Netzteil (>2A) nötig – Servos verbrauchen viel Strom. Bei zu schwachem Netzteil vibrieren Servos, werden heiß, verlieren Kraft. Netzteil erst nach Code-Upload anschließen (Power-Button auf Shield auf OFF). USB-Kabel an Arduino stecken und weiter.

Schritt 11: Arduino IDE einrichten

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

1. Neueste Arduino IDE herunterladen & installieren (Windows, Linux, macOS): arduino.cc

2. Bibliotheken hinzufügen

Robert Eisele's Nunchuk-Bibliothek: Website, Download: GitHub

In Arduino IDE: Sketch → Include Library → Manage Libraries → Bibliothek hinzufügen.

Bibliotheksfunktionen:

Winkel werden in Radiant zurückgegeben – im Code in Grad umgerechnet.

Schritt 12: Arduino-Code

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Arduino-Sketch herunterladen. USB an Computer, Code hochladen (dauert etwas – Zeit für Like/Share! :D). Nach Upload USB abziehen, Netzteil anschließen, Power-Button einschalten. Code startet sofort.

Warnung: Beim Start bewegt sich der Arm sehr schnell in die Startposition – Vorsicht vor Verletzungen oder Schäden!

Startwinkel der Servos müssen je nach Montage angepasst werden.

Code-Erklärung:

Vor setup(): Bibliotheken (nunchuk.h, wire.h, servo.h) importieren, Pins definieren, globale Variablen deklarieren. angle# = Startposition jedes Servos (bei anderer Startposition Werte ändern). servo#_speed = Bewegungsgeschwindigkeit (höher = schneller). angle#min/max = Winkelbegrenzungen zur Kollisionsvermeidung.

// Bibliotheken
#include <nunchuk.h>
#include <wire.h>
#include <servo.h>

// Pins definieren
#define SERV1 8
#define SERV2 9
#define SERV3 10
#define SERV4 11
#define SERV5 12
#define SERV6 13

Servo s1, s2, s3, s4, s5, s6;

// Startwinkel
int angle1 = 90, angle2 = 30, angle3 = 0;
int angle4 = 90, angle5 = 90, angle6 = 45;

// Geschwindigkeiten
int servo1_speed = 3, servo2_speed = 3, servo3_speed = 3;
int servo4_speed = 1, servo5_speed = 1;

// Winkelbegrenzungen
int angle1min = 0, angle1max = 180;
int angle2min = 0, angle2max = 180;
int angle3min = 0, angle3max = 180;
int angle4min = 0, angle4max = 180;
int angle5min = 0, angle5max = 180;
int angle6min = 0, angle6max = 180;

boolean display_angles = true;

setup(): Servos an Pins anhängen, Startpositionen setzen. Serial (9600) und I2C (Nunchuk) starten.

void setup() {
  s1.attach(SERV1); s1.write(angle1);
  s2.attach(SERV2); s2.write(angle2);
  s3.attach(SERV3); s3.write(angle3);
  s4.attach(SERV4); s4.write(angle4);
  s5.attach(SERV5); s5.write(angle5);
  s6.attach(SERV6); s6.write(angle6);
  Serial.begin(9600);
  Wire.begin(); nunchuk_init();
}

loop(): Nunchuk jede Iteration auslesen. Je nach Werten verschiedene Aktionen.

void loop() {
  if (nunchuk_read()) {
    int x = nunchuk_joystickX();
    int y = nunchuk_joystickY();
    boolean z = nunchuk_buttonZ();
    boolean c = nunchuk_buttonC();
    float pitch = nunchuk_pitch();
    float roll = nunchuk_roll();

Joystick X steuert Servo #1 (Links/Rechts). Rauschunterdrückung: nur bei |x| > 90 reagieren.


// Links drehen
if (x > 90) {
  angle1 -= servo1_speed; display_angles = true;
  if (angle1 < angle1min) angle1 = angle1min;
}
// Rechts drehen
if (x < -90) {
  angle1 += servo1_speed; display_angles = true;
  if (angle1 > angle1max) angle1 = angle1max;
}
s1.write(angle1);

Joystick Y steuert Servo #3 (Hoch/Runter), Servo #2 bleibt fix.

Greifer-Rotation via Roll/Pitch (Beschleunigungssensor) – nur bei gedrückter C- oder Z-Taste aktualisiert.

Nur C gedrückt: Roll-Winkel als Sollwert für Servo #5. Geschwindigkeit proportional zum Fehler. Ähnlich für Servo #4 mit Pitch.

// Beschleunigungssensor nur bei gedrückten Tasten aktivieren
// Greifer rotieren (nur Z gedrückt)
if (c && !z) {
  roll = roll * 57.0 + 90.0; // in Grad
  servo5_speed = abs(angle5 - roll)/10 + 1;
  if (roll > angle5) { angle5 += servo5_speed; display_angles = true; }
  if (roll < angle5) { angle5 -= servo5_speed; display_angles = true; }
  s5.write(angle5);
}

Greifer schließt bei gedrückten C UND Z. Bei Loslassen einer Taste öffnet er sich.

// Greifer öffnen/schließen (beide Tasten)
if (z && c) { s6.write(90); display_angles = true; } // schließen
else { s6.write(45); } // öffnen

Am Ende: Serial Monitor zeigt aktuelle Servowinkel (hilfreich für Startwinkel-Wahl).

nunchuk.ino

Schritt 13: Bedienung

Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung

Alles bereit – Roboter einschalten und Spaß haben!

Der Nunchuk steuert fünf Bewegungen (siehe Bilder): Rechts/Links-Drehung, Hoch/Runter, Greifer-Rotation, Greifer Hoch/Runter, Greifer Öffnen/Schließen. Bewegungen lassen sich kombinieren.

Code kann für andere Bewegungs-Kombinationen (Tasten + Joystick-Winkel) angepasst werden.

Code

nunchuk.ino (Arduino)

Keine Vorschau (nur Download).

GitHub

https://github.com/infusion/Fritzing/tree/master/Wii-Nunchuk

Herstellungsprozess

  1. Internet-gesteuerter Video-Streaming-Roboter mit Arduino & Raspberry Pi bauen
  2. Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
  3. Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000
  4. Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen
  5. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
  6. Funktionaler 3D-gedruckter Roboterarm mit Arduino – Schritt-für-Schritt-Anleitung
  7. Sprachgesteuerter Roboter mit Arduino Nano bauen
  8. Ethernet-gesteuerter Roboterarm: Fernsteuerung leicht gemacht
  9. Sprachgesteuerte Haushaltsgeräte: Bluetooth-Steuerung mit Google Assistant
  10. Intelligenter Arduino-Roboterarm bauen: Einfaches DIY-Tutorial