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

Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000

Komponenten und Zubehör

Arduino MKR1000 × 1

Benötigte Werkzeuge und Maschinen

Apps und Online-Dienste

Über dieses Projekt

Einführung

Ich wollte unbedingt einen Roboterarm komplett von Grund auf selbst entwerfen. Es gibt viele Open-Source-Designs, aber ich fand es reizvoll, einen von Grund auf zu designen, zu bauen und zu programmieren (und es war es).

Ich werde sowohl die Design- als auch die Programmierphase beleuchten, wobei der Fokus auf der Programmierung liegt, da es nicht nur um das Steuern von Servowinkeln geht.

Video des finalen Projekts: MathWorks Video

Ich verwendete Simulink, um einen Arduino MKR1000 zu programmieren, der als MCU den Roboterarm steuert. Anschließend fügte ich die Möglichkeit hinzu, den Arm von praktisch überall über ThingSpeak – eine offene IoT-Plattform mit MATLAB-Analytik – zu steuern.

Benötigte Hardware

Verwendete Software

Design

Um die Kosten niedrig zu halten, entwarf ich den Arm für Hobbyservos, speziell das Modell GS-9025MG. Das begrenzte das Endgewicht und die Größe, da Mikroservos nicht viel Drehmoment aufbringen und daher keine schweren Hebelarme heben können.

Ein Prototyp aus 6 mm (1/4 Zoll) Sperrholz erwies sich als zu schwer für die Servos. Ich verkürzte die Arme und nutzte 3 mm (1/8 Zoll) Sperrholz – das löste das Steuerproblem. Das Design erstellte ich in Fusion 360, exportierte es als DXF-Datei und ließ es laserschneiden.

Eine kontinuierliche DC-Spannung aus der Steckdose war nötig, da der Strombedarf aus Akkupacks sehr hoch war und diese schnell leerte.

Zur Motorsteuerung: Der Arduino MKR1000 hat 4 PWM-Pins, aber ich benötigte 5 für die 5 Servos. Ich wurde kreativ: Ein PWM-Pin steuert 2 Servos, und ein digitaler Pin schaltet per Transistor zwischen den beiden Servos um, sodass immer nur einer aktiv ist.

Schaltung dafür:

Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000

Verkabelung der Servos zum Arduino:

Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000

Programmierung

Die Programmierung hatte zwei Phasen: Prototyping (Aufbau und Ansteuern der Servos auf bestimmte Winkel) und präzise Steuerung (Anfahren von XY-Koordinaten via ThingSpeak).

Prototyping

Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000

Mit Schiebern und Konstanten-Blöcken konnte ich die Servos auf dem Arduino auf bestimmte Winkel fahren. Dieses Modell nutzte ich, um die Abweichungen zwischen Soll- und Ist-Winkeln sowie die zulässigen Winkelbereiche jedes Servos zu ermitteln.

Die Blöcke mit Zahnrad-Symbol sind die PWM-Schreibblöcke für die Servo-Winkel (0–180°).

Für die inverse Kinematik eines 2D-planaren Arms verwendete ich die Formeln von appliedgo.net/roboticarm – eine sehr gute Erklärung.

Präzise Steuerung

Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000

Obwohl komplexer, ist die Logik dieselbe: Ausgabeblöcke sind weiterhin die Servo-Schreibblöcke. Die Eingaben kommen nun nicht mehr von Schiebern, sondern werden vom ThingSpeak-Kanal gelesen. Die Eingaben sind X- und Y-Position des Arms, die über den MATLAB-Funktionsblock loc2angles in Sollwinkel umgerechnet werden. Der angles2loc-Block oben überwacht per Vorwärtskinematik, ob die Servowinkel die korrekte Eingabeposition ergeben.

Ein cooles Simulink-Tool nutzte ich: External Mode. Damit kann man das System überwachen, während es auf dem Arduino läuft.

Die Blöcke mit der grauen Wolke sind die ThingSpeak-Read-Blöcke aus dem Simulink Support Package für Arduino. Man gibt Channel-ID, Datenfeldnummer und Read-API-Key ein, und der Block liefert die Daten aus diesem Kanal und Feld.

ThingSpeak nutzen: Channel erstellen und verwenden

  1. Gehen Sie zu thingspeak.com
  2. Klicken Sie oben rechts auf „Sign in“ und melden Sie sich mit Ihrem kostenlosen MathWorks-Konto an.
  3. Auf dem Dashboard „New Channel“ klicken.
  4. Daten wie folgt ausfüllen (nur diese Felder sind nötig):
Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000
  1. Unten auf „Save channel“ klicken.
  2. Channel erstellt.
  3. Im MATLAB-Befehlsfenster oder per MATLAB Mobile App Daten schreiben:
    thingSpeakWrite(chID, [0.6963.94 -12 0 0], 'WriteKey', APIKEY, 'Fields', [1 2 3 4 5]);
    Die Werte im zweiten Argument ändern die entsprechenden Felder. Danach sehen die Channel-Daten so aus:
Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000

Modell ausführen

Nach ThingSpeak-Setup: In Simulink auf „Model Configuration Parameters“ (kleines Zahnrad oben), „Hardware Implementation“ wählen, „Hardware Board“ auf Arduino MKR1000 setzen. Unter „Target Hardware Resources“ → „WiFi Properties“ WLAN-Zugangsdaten eintragen.

Grüner „Run“-Button = External Mode; Blauer „Deploy“-Button = Auf Hardware flashen.

Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000

Wenn das Modell läuft, können Sie per MATLAB oder MATLAB Mobile neue Daten in die ThingSpeak-Felder schreiben und zusehen, wie sich der Roboterarm bewegt!

Code

MATLAB Central File Exchange: Controlling a Robotic Arm from Anywhere Using IoT

Herstellungsprozess

  1. Universelle Android-Fernbedienung mit Arduino, 1Sheeld & IR-Steuerung
  2. Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
  3. Arduino Power Control Center: N-FET, P-FET, Relais & RTC Kit
  4. Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
  5. Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
  6. Funktionaler 3D-gedruckter Roboterarm mit Arduino – Schritt-für-Schritt-Anleitung
  7. Arduino Rover per Firmata & Xbox One Gamepad steuern
  8. DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
  9. Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung
  10. Intelligenter Arduino-Roboterarm bauen: Einfaches DIY-Tutorial