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.

Roboterarm

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 einen C-Code, der dem Board mitteilt, welche Aufgaben wie ausgeführt werden sollen. 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-Karte ist ATmega328p. Wenn Sie mehr als 13 Geräte steuern möchten, verwenden Sie Arduino Mega.

Arduino Nano

Drahtloser serieller Bluetooth-Transceiver HC-05: In diesem Projekt benötigen wir drahtlose Kommunikation, daher verwenden wir die Bluetooth-Technologie und für das verwendete Modul 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 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.

HC-05 Bluetooth-Modul

Ein typischer Roboterarm besteht aus mehreren Segmenten und enthält 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.

Roboterarm.

Schritt 3: Zusammenbau der Komponenten

Jetzt wissen wir über die Funktionsweise aller verwendeten Hauptkomponenten Bescheid. Beginnen wir mit dem Zusammenbau und machen eine Schaltung, um einen ferngesteuerten Roboterarm zu bauen.

  1. Bringen Sie das Arduino Nano-Brett am Steckbrett an. Der Arduino wird über das Plus- und Minuskabel des Adapters mit Strom versorgt.
  2. 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.
  3. Da wir wissen, dass es 4 Schrittmotoren gibt. Jeder hat einen technischen Namen. Sie heißen Ellbogen, Schulter, Basis und Greifer. 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.
  4. Stellen Sie sicher, dass die von Ihnen hergestellten Verbindungen dem folgenden Schaltplan entsprechen.Schaltplan

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.

  1. Laden Sie die neueste Version von Arduino IDE von herunter Arduino.
  2. 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 COM14, aber es ist auf verschiedenen Computern unterschiedlich.Port finden
  3. Klicken Sie auf das Tool-Menü und stellen Sie das Board im Dropdown-Menü auf Arduino Nano ein.Board einstellen
  4. Stellen Sie im selben Tool-Menü den Port auf die Portnummer ein, die Sie zuvor in den Geräten und Druckern beobachtet haben.Port einstellen
  5. Stellen Sie im selben Tool-Menü den Prozessor auf ATmega328P (Old Bootloader) ein.Prozessor
  6. 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. Um die Bibliothek einzuschließen, klicken Sie auf Skizze> Bibliothek einschließen> ZIP hinzufügen. Bibliothek.Bibliothek einschließen
  7. Laden Sie den unten angehängten Code herunter und fügen Sie ihn in Ihre Arduino IDE ein. Klicken Sie auf die Schaltfläche zum Hochladen, um den Code auf Ihrer Mikrocontroller-Karte zu brennen.Hochladen

Um den Code herunterzuladen, Klicke hier.

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 der 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 ist. Es gibt Schieberegler, mit denen Sie den Roboterarm wie gewünscht bedienen können.

App

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 weitere Bibliothek math.h ist 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 <Servo.h> // Arduino-Bibliothek #include <math.h> // 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ünschtAngle; // 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, mit der die aktuelle Position des Roboterarms erfasst und gemäß dem Befehl der mobilen App bewegt 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);
delay(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 wird eine Funktion servoParallelControl () aufgerufen und Parameter ü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 (); erwünschter Winkel.bogen = 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ünschter Winkel.Schulter, SchulterServo, gewünschte Verzögerung); status3 = servoParallelControl (gewünschter Winkel.bogen, elbowServo, gewünschter 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.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *