Wie erstelle ich einen DIY Arduino und Bluetooth gesteuerten Roboterarm?
Im letzten Jahrhundert ist die Robotik das aufstrebendste Forschungsgebiet. Roboter haben die Kontrolle über fast alles übernommen, was Menschen früher getan haben. Wir können sehen, wie autonome Roboter verschiedene Aufgaben in unserer Gesellschaft ausführen. Es gibt auch einige ferngesteuerte Roboter, die uns bei der Durchführung verschiedener Operationen helfen. Von der Herstellung von Nano-Schaltkreisen auf dem Gebiet der Technik bis hin zur Durchführung komplexer Operationen auf dem Gebiet der Medizin sind Roboter zuverlässiger als Menschen.
In diesem Projekt werden wir einen Roboterarm herstellen, der von einem Arduino-Mikrocontroller gesteuert wird. Es wird über Bluetooth mit Hilfe einer Android-Fernbedienungs-App gesteuert.
Wie steuere ich einen Roboterarm mit Arduino?
Jetzt, da wir die Zusammenfassung unseres Projekts kennen. Lassen Sie uns weitere Informationen über die Schaltung sammeln und mit dem Bau eines Bluetooth-gesteuerten Roboterarms beginnen und diesen über Bluetooth steuern.
Schritt 1: Sammeln der Komponenten
Der beste Ansatz, um ein Projekt zu starten, besteht darin, eine vollständige Liste der Komponenten zu erstellen. Dies ist nicht nur ein intelligenter Weg, um ein Projekt zu starten, sondern erspart uns auch viele Unannehmlichkeiten in der Mitte des Projekts. Eine Liste der Komponenten dieses Projekts finden Sie unten:
Schritt 2: Studieren der Komponenten
Da wir eine vollständige Liste aller Komponenten haben, die wir verwenden werden, gehen wir einen Schritt voraus und führen eine kurze Studie aller Komponenten durch.
Arduino Nano ist eine Mikrocontroller-Karte, die verschiedene Operationen in verschiedenen Schaltkreisen ausführt. Es erfordert eine C-Code das sagt dem Board, welche Aufgaben wie auszuführen sind. Es verfügt über 13 digitale E / A-Pins, sodass wir 13 verschiedene Geräte bedienen können. Arduino Nano hat genau die gleiche Funktionalität wie Arduino Uno, ist jedoch recht klein. Der Mikrocontroller auf der Arduino Nano-Platine ist ATmega328p.Wenn Sie mehr als 13 Geräte steuern möchten, verwenden Sie Arduino Mega.
HC-05 Drahtloser serieller Bluetooth-Transceiver: Wir benötigen in diesem Projekt drahtlose Kommunikation, daher verwenden wir die Bluetooth-Technologie und für das Modul, das verwendet wird, ist HC-05. Dieses Modul verfügt über mehrere programmierbare Baudraten, die Standardbaudrate beträgt jedoch 9600 Bit / s. Es kann entweder als Master oder als Slave konfiguriert werden, während ein anderes Modul HC-06 nur im Slave-Modus arbeiten kann. Dieses Modul hat vier Pins. Eine für VCC (5 V) und die restlichen drei für GND, TX und RX. Das Standardkennwort dieses Moduls lautet 1234 oder 0000. Wenn wir zwischen zwei Mikrocontrollern kommunizieren oder mit einem Gerät mit Bluetooth-Funktionalität wie einem Telefon oder Laptop kommunizieren möchten, hilft uns HC-05 dabei. Es sind bereits mehrere Android-Anwendungen verfügbar, was diesen Vorgang erheblich vereinfacht.
Ein typischer Roboterarmbesteht aus mehreren Segmenten und hat normalerweise 6 Gelenke. Es enthält mindestens 4 Schrittmotoren, die vom Computer gesteuert werden. Schrittmotoren unterscheiden sich von anderen Gleichstrommotoren. Sie bewegen sich genau in exakten Schritten. Diese Roboterarme werden verwendet, um verschiedene Operationen auszuführen. Wir können sie manuell über eine Fernbedienung bedienen oder sie so programmieren, dass sie autonom arbeiten.
Schritt 3: Zusammenbau der Komponenten
Jetzt wissen wir über die Funktionsweise aller verwendeten Hauptkomponenten Bescheid. Beginnen wir mit dem Zusammenbau und machen wir eine Schaltung, um einen ferngesteuerten Roboterarm zu bauen.
- Bringen Sie das Arduino Nano-Brett am Steckbrett an. Der Arduino wird über das Plus- und Minuskabel des Adapters mit Strom versorgt.
- Platzieren Sie das Bluetooth-Modul auch auf dem Steckbrett. Schalten Sie das Bluetooth-Modul über Arduino ein. Verbinden Sie den Tx-Pin des Bluetooth-Moduls mit dem Rx-Pin der Arduino Nan-Karte und den Rx-Pin des Bluetooth-Moduls mit dem Tx-Pin der Arduino Nano-Karte.
- Da wir wissen, dass es 4 Schrittmotoren gibt. Jeder hat einen technischen Namen. Sie heißen Ellbogen, Schulter, Base, und Greifer. Die Vcc und Masse aller Motoren sind gemeinsam und mit dem Plus und Minus des 6V-Adapters verbunden. Der Signal-Pin aller vier Motoren wird mit Pin 5, Pin 6, Pin 9 und Pin 11 von Arduino Nano verbunden.
- Stellen Sie sicher, dass die von Ihnen hergestellten Verbindungen dem folgenden Schaltplan entsprechen.
Schritt 4: Erste Schritte mit Arduino
Wenn Sie mit der Arduino IDE noch nicht vertraut sind, machen Sie sich keine Sorgen, da im Folgenden eine schrittweise Anleitung zum Einrichten und Verwenden der Arduino IDE mit einer Mikrocontroller-Karte erläutert wird.
- Laden Sie die neueste Version von Arduino IDE von Arduino herunter.
- Schließen Sie Ihr Arduino Nano-Board an Ihren Laptop an und öffnen Sie das Bedienfeld. Klicken Sie dann auf Hardware und Sound. Klicken Sie nun auf Geräte und Drucker.Hier finden Sie den Anschluss, an den Ihre Mikrocontroller-Karte angeschlossen ist. In meinem Fall ist es COM14aber es ist auf verschiedenen Computern unterschiedlich.
- Klicken Sie auf das Menü Tool und stellen Sie die Karte auf ein Arduino Nano aus dem Dropdown-Menü.
- Stellen Sie im selben Tool-Menü den Port auf die Portnummer ein, die Sie zuvor in der Geräte und Drucker.
- Stellen Sie im selben Tool-Menü den Prozessor auf ein ATmega328P (alter Bootloader).
- Um Code für den Betrieb der Servomotoren zu schreiben, benötigen wir eine spezielle Bibliothek, mit der wir verschiedene Funktionen für Servomotoren schreiben können. Diese Bibliothek wird zusammen mit dem Code unter dem folgenden Link angehängt. Klicken Sie auf, um die Bibliothek einzuschließen Skizze> Bibliothek einschließen> ZIP hinzufügen. Bibliothek.
- Laden Sie den unten angehängten Code herunter und fügen Sie ihn in Ihre Arduino IDE ein. Klick auf das hochladen Taste, um den Code auf Ihrer Mikrocontroller-Karte zu brennen.
Klicken Sie hier, um den Code herunterzuladen.
Schritt 5: Herunterladen der App
Da haben wir nun die gesamte Schaltung zusammengebaut und den Code auf die Mikrocontroller-Karte hochgeladen. Laden Sie eine mobile App herunter, die als Fernbedienung für den Roboterarm fungiert. Eine kostenlose App ist im Google Play Store erhältlich. Der Name der App ist Little Arm Robot Control. Um eine Bluetooth-Verbindung herzustellen, schalten Sie Bluetooth auf Ihrem Handy ein. Gehen Sie zu den Einstellungen und koppeln Sie Ihr Handy mit dem HC-05-Modul. Drücken Sie anschließend die Bluetooth-Taste in der App. Wenn es grün wird, bedeutet dies, dass die App jetzt verbunden und betriebsbereit für den Roboterarm ist. Es gibt Schieberegler, mit denen Sie den Roboterarm wie gewünscht bedienen können.
Schritt 6: Den Code verstehen
Der Code ist gut kommentiert und leicht zu verstehen. Bur noch, es wird unten kurz erklärt.
1. Zu Beginn ist eine Bibliothek enthalten, um einen Code zum Betreiben von Servomotoren zu schreiben. Eine andere Bibliothek math.hist enthalten, um verschiedene mathematische Operationen im Code auszuführen. Es werden auch vier Objekte initialisiert, die für die vier Servomotoren verwendet werden sollen.
#einschließen// Arduino-Bibliothek #include // Standard-C-Bibliothek #define PI 3.141 Servo baseServo; Servo SchulterServo; Servo EllenbogenServo; ServogreiferServo; int Befehl;
2. Anschließend wird eine Struktur deklariert, die Werte für die Servomotoren für Basis, Schulter und Ellbogen annimmt.
struct JointAngle {// Deklarieren einer Struktur int base; int Schulter; int Ellenbogen; };
3. Danach werden einige Variablen initialisiert, um den gewünschten Griff, die Verzögerung und die Position des Servomotors zu speichern. Die Geschwindigkeit wird auf 15 eingestellt, und es wird ein Objekt erstellt, das den Wert des Winkels in der Struktur annimmt.
int gewünschterGrip; int gripperPos; int erwünscht Verzögerung; int servoSpeed = 15; int ready = 0; struct JointAngle gewünschterAngle; // gewünschte Winkel der Servos
4. void setup ()ist eine Funktion, mit der die Pins von Arduino auf INPUT oder OUTPUT gesetzt werden. Hier in dieser Funktion haben wir erklärt, dass der Pin der Motoren mit welchen Pins des Arduino verbunden wird. Es wird auch sichergestellt, dass der Arduino den seriellen Eingang nicht zu lange liest. In dieser Funktion werden auch die Ausgangsposition und die Baudrate eingestellt. Die Baudrate ist die Geschwindigkeit, mit der die Mikrocontroller-Karte mit den angeschlossenen Servos und dem Bluetooth-Modul kommuniziert.
void setup () {Serial.begin (9600); baseServo.attach (9); // verbindet das Basisservo an Pin 9 mit dem ServoobjektschulterServo.attach (10); // bringt das Schulterservo an Pin 9 am Servoobjekt an elbowServo.attach (11); // bringt das Ellbogenservo an Pin 9 am Servoobjekt an gripperServo.attach (6); // verbindet das Greiferservo an Pin 9 mit dem Servoobjekt Serial.setTimeout (50); // stellt sicher, dass das Arduino nicht zu lange seriell liest Serial.println ("gestartet"); baseServo.write (90); // Anfangspositionen der ServosschulterServo.write (150); elbowServo.write (110); bereit = 0; }}
5. servoParallelControl ()ist eine Funktion, die verwendet wird, um die aktuelle Position des Roboterarms zu erkennen und ihn gemäß dem Befehl zu bewegen, der über die mobile App gegeben wird. Wenn die aktuelle Position kleiner als die tatsächliche ist, bewegt sich der Arm nach oben und umgekehrt. Diese Funktion gibt den Wert der aktuellen Position und die Geschwindigkeit des Servos zurück.
int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // lese die aktuelle Position int newPos = startPos; // int theSpeed = speed; // definiere, wo sich die Position in Bezug auf den Befehl befindet // wenn die aktuelle Position kleiner ist als die tatsächliche Aufwärtsbewegung if (startPos <(thePos-5)) {newPos = newPos + 1; theServo.write (newPos); Verzögerung (theSpeed); return 0; } else if (newPos> (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); Verzögerung (theSpeed); return 0; } else {return 1; }}
6. void loop ()ist eine Funktion, die wiederholt in einer Schleife ausgeführt wird. Diese Funktion liest die Daten, die seriell kommen, und speichert den Winkel jedes Servos in der Struktur. Zunächst wird der Status aller Servos auf Null gesetzt. Hier eine Funktion servoParallelControl ()wird aufgerufen und Parameter werden darin übergeben. Diese Funktion gibt den Wert zurück und wird in einer Statusvariablen gespeichert.
void loop () {if (Serial.available ()) {ready = 1; erwünschteAngle.base = Serial.parseInt (); gewünschter Winkel.Schulter = Serial.parseInt (); gewünschter Winkel.elbow = Serial.parseInt (); gewünschterGrip = Serial.parseInt (); gewünschte Verzögerung = Serial.parseInt (); if (Serial.read () == '\ n') {// Wenn das letzte Byte 'd' ist, hören Sie auf zu lesen und führen Sie den Befehl 'd' aus, der für 'done' steht. Serial.flush (); // alle anderen im Puffer gestapelten Befehle löschen // Abschluss des Befehls senden Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int done = 0; while (done == 0 && ready == 1) {// das Servo in die gewünschte Position bringen status1 = servoParallelControl (requiredAngle.base, baseServo, requiredDelay); status2 = servoParallelControl (gewünschte Winkel.Schulter, SchulterServo, gewünschte Verzögerung); status3 = servoParallelControl (gewünschterAngle.elbow, elbowServo, gewünschte Verzögerung); status4 = servoParallelControl (gewünschter Chip, GreiferServo, gewünschte Verzögerung); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // end of while}
Dies war das ganze Verfahren zur Herstellung eines Roboterarms. Nach dem Brennen des Codes und dem Herunterladen der App sollte der Roboter einwandfrei funktionieren, wenn die Schieberegler in der App bewegt werden. Sie können den Arm auch so programmieren, dass er autonom arbeitet, um die gewünschte Aufgabe auszuführen.