Arduino kontrolliert Bluetooth-bot

4 Schritt:Schritt 1: Toy Gehirnchirurgie Schritt 2: Die Verdrahtung Schritt 3: Test (mit Kätzchen) Schritt 4: Code

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Diese instructable wird Ihnen zeigen, wie ein altes Spielzeug R / C Auto vom Secondhand-Shop (1,50 €) in eine bluetooth gesteuerten Roboter zu konvertieren. Um die Konvertierung zu machen, benötigen Sie einen Arduino (jede Art), eine L298N Dual 2-Ampere-Motor-Controller (oder ähnlich), und eine Bluetooth-Serial-Adapter von Sparkfun.com.

Wir werden zunächst alle vorhandenen Schaltung zu entfernen aus dem alten Spielzeug und bereiten sie für ihre neue Köpfe. Dann werden wir das Arduino, Motorsteuerung und Bluetooth-Adapter auf die Oberseite des Rahmens und Draht alles oben zu installieren. Schließlich gibt es ein paar Schritte, um die auf Ihrem Computer abzuschließen, um es mit dem Bluetooth-Adapter auf den Roboter zu koppeln. Der Bauprozess ist einfach und unkompliziert, mit Heißkleber, um jede Leiterplatte zu sichern -, die leicht entfernt werden kann später, wenn gewünscht.

Um diese zu steuern bot, habe ich mehrere Tasten auf der Tastatur zugewiesen zur Durchführung von verschiedenen Bewegungen aus der Robotermotoren. Durch Nachdem Sie das Bluetooth-bot an Ihren Computer Öffnen einer Klemme, können Sie serielle Befehle senden, indem Sie die "i" (vorwärts), "j" (links), "k" (rückwärts), und "l" (rechts) Tasten, um die Bot in jede Richtung zu befehlen.

Hier ist ein kurzes Video von der bluetooth-bot in Aktion:



Alle Teile können bei Sparkfun.com gekauft werden, und der Motor-Controller kann sowohl als Schutzschild (Ardu-Moto Schirm) gekauft werden, oder von Grund auf neu mit den mitgelieferten Leiterplatten-Layout-Dateien aufgebaut. Sie können eine der Dateien für dieses Projekt (Code und PCB-Dateien) von hier gebraucht herunterladen:

https://sites.google.com/site/arduinorobotics/arduino-robotics/free_project

Benötigtes Werkzeug: Abisolierzange / Schere Lötkolben kleinen Schraubendreher Heißklebepistole
Stückliste: Arduino L298N Motortreiber PCB oder Ardumoto Schild Bluetooth Mate-Gold- (oder Silber ) Draht alten R / C Spielzeug mit Arbeitsmotoren (alles andere wird verschrottet werden)

Dieses Projekt wurde aus meinem neuen Buch mit dem Titel "Arduino Robotics" von Apress Verlags links. Ich beschloss, es online hinzufügen, für jedermann zu bauen. Wenn Sie dieses mögen und mehr Arduino-basierte Projekte, wie es sehen wollen (einschließlich der Lawnbot400, fahrbar Seg-bot, GPS geführte robo-Boot, und viele mehr), Besuche die Homepage zu buchen:

Arduino Robtics

Sie können auch überprüfen, einige andere Projekte, die ich online gebucht meiner Website.

Schritt 1: Toy Gehirnchirurgie



Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Die Leiterplatte, die in der Spielzeugpanzer / Auto Basis installiert war hatte einen kleinen Kristall für den Einsatz mit einem Rundfunksender und ein paar Transistoren, um eine kleine H-Brückenschaltung für jeden Motor vorzunehmen. Wir werden die alten Schaltkreis mit einem Arduino, einer seriellen Bluetooth-Adapter und einem L298N Doppelmotor-Controller-IC zu ersetzen. Das Arduino ist neu programmierbar, so können Sie eine Vielzahl von verschiedenen Verhaltensweisen, die mit Ihren Bot zu erhalten, obwohl ich nur bis grundlegende Bewegungsbefehle (FWD, REV rechts, links,) eingestellt.

Zuerst Streifen der R / C Auto, das Sie aus dem Secondhand-Laden, der alle seine elektronischen Eingeweide. Dies umfasst die Motorsteuerung, R / C-Kristall, und andere PCB installiert. Wir müssen nur zwei Drähte für jeden Motor und einen Satz von Leitungen an dem Batteriefach. Der Code für dieses Projekt ist für die Verwendung mit einem "Tank-steer" Bauartroboters bestimmt sind, unter Verwendung von einem Motor auf jeder Seite des Roboters, wie ein Panzer. Mit bidirektionale Steuerung jedes Motors, können wir den Roboter in einem Kreis ohne vorwärts oder rückwärts drehen (eine so genannte "Null-Wendekreis"). Diese Art der Steuerung ist sehr effektiv, insbesondere bei geringeren Geschwindigkeiten.

Hinweis: Sie müssen nicht haben finden ein Spielzeugfahrzeug mit Panzerketten, gibt es viele R / C Spielwaren an der Sparsamkeit-Geschäft, das Räder haben, aber nutzen Tank Lenk - nur sicherstellen, dass Sie Ihr Fahrzeug einen Antriebsmotor auf jeder Seite installiert hat . Ich war in der Lage, mehrere "verfolgt" Tank-Lenk Fahrzeuge in meinem örtlichen Secondhand-Laden zu finden, mit regelmäßigen Besuchen und ein paar Monate Zeit.

Sobald Sie die alte elektronische Schaltungen aus dem Spielzeug zu entfernen, haben wir einen Ort, um die Arduino-Board, den Motor-Steuerplatine und den kleinen Bluetooth-Adapter (wir werden das Batteriefach, um das Spielzeug gebaut verwenden) Montage benötigen. Wenn Sie eine Ardumoto Schild für die Arduino nutzen, benötigen Sie nur einen Ort, um die Arduino montieren. Ich habe eine Heißklebepistole, um einen kleinen Klecks Leim auf der Oberseite des Spielzeugbasis hinzufügen - hängen Sie dann das Arduino. Mit Low-Temp Kleber das Arduino halten sicher befestigt, sondern auch ermöglicht es Ihnen, um es später zu entfernen, ohne Schaden, falls gewünscht.

Ich entwarf eine kleine Platine, die eine L298N Doppelmotor-Treiber-IC verwendet, um (2) DC-Motoren in beiden Richtungen und mit voller Geschwindigkeit steuern. Die PCB-Dateien wurden mit dem Freeware-Version von Eagle CAD erstellt und kann verwendet werden, um Ihre eigenen Motor-Controller zu bauen. Wenn Sie nicht eine eigene PCB zu bauen, können Sie die Ardumoto Motor-Controller von Sparkfun.com die eine Oberflächenmontage-Version des gleichen L298N IC (Steuerstift Umwandlung kann im Code erforderlich) verwendet zu kaufen.

Laden Sie die Dateien für die Adler L298N Motorsteuerung und Code für dieses Projekt hier:
https://sites.google.com/site/arduinorobotics/arduino-robotics/free_project

Schritt 2: Die Verdrahtung

Arduino kontrolliert Bluetooth-bot
Um einen Roboter läuft über Bluetooth zu bekommen, gibt es sehr wenige Verbindungen. (3) Drähte, um jeden Motor von der Arduino zu Motorsteuergerät zu steuern, (2) Drähte für den seriellen Bluetooth-Adapter an Arduino, die (4) Motorleitungen, und ein paar Stromkabel. Früher habe ich männlich-Stiftleisten zur Patch-Kabel von der Arduino zum Motor-Steuergerät PCB (beide mit Buchsenleisten) zu machen. Wenn Sie die Sparkfun Ardumoto Schild sind, werden Sie nicht brauchen, um die Motorsteuerung auf die Arduino, nur den Bluetooth-Adapter und Stromkabel.

Die L298N Motortreiber-IC verwendet 3 Eingänge für jeden Motor (Eingang A, Eingang B und aktivieren), um die Geschwindigkeit und Richtung zu bestimmen. Drehzahlregelung ist am einfachsten, indem Sie die Eingänge A und B, um die Richtung zu bestimmen, und mit dem Stift aktivieren, um die PWM-Drehzahlsteuersignal gelten geführt.

Finden Sie in der vorgesehenen Schaltplan für bestimmte Verbindungen.
Schritt 3: Test (mit Kätzchen)

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Arduino kontrolliert Bluetooth-bot

Nachdem Sie die Verbindungen zwischen dem Bluetooth Mate, Arduino und L298N Motorsteuerung vorgenommen haben, ist es Zeit, die Batterien in das Batteriefach installieren. und laden Sie die Code in das Arduino.

Mit der Code geladen wird, werden Sie zu "Paar" der Bluetooth-Adapter und Bluetooth-Mate auf Ihrem Computer benötigen. Der Prozess, dies zu tun wird etwas anders sein, je nachdem, welches Betriebssystem Sie verwenden. Erste Plug in jedem Standard-Bluetooth-Adapter

Die folgenden Schritte beschreiben, wie Sie Ihr Bluetooth-Gerät mit Ubuntu 10.10:

Schritt 1. Schalten Sie Bluetooth-bot und sicherstellen, dass die Power-LED auf dem Bluetooth-Mate ist On (blinkt rot).
Schritt 2. Öffnen Sie Bluetooth-Manager (System> Einstellungen> Bluetooth Manager) - Wenn es nicht, offen Terminal und geben Sie:
"Sudo apt-get install blueman", und dann weiter.
Schritt 3: Klicken Sie auf die Schaltfläche Suchen, um neue Geräte zu entdecken.
Schritt 4. Klicken Sie rechts auf das Bluetooth-Kamerad aus der Liste (Mine wurde gelistet als "FireFly - A4C7") und wählen Sie die Option "Serial Port" - könnten Sie auch sehen Sie Ihre Handy zeigen sich auf der Liste, wenn verfügbar, stellen Sie sicher, Sie das richtige Gerät auszuwählen.
Schritt 5: Nun sehen Sie ein Dialogfeld fragt nach dem Passcode des Bluetooth-Mate - Mine wurde standardmäßig auf "1234" gesetzt.
Schritt 6. Mit dem Passcode eingegeben wurde, wird Bluetooth Kamerad sollte nun an den PC angeschlossen werden - das rot blinkende Licht auf die Bluetooth Kollege wird grün leuchten Sie, dass er angeschlossen ist, lassen.
Schritt 7. Zur Kontrolle der Bot, öffnen Sie ein Terminal und geben Sie den folgenden: "screen / dev / rfcomm0 115200"

Der vollständige Demonstrationsvideo auf, wie Sie Ihr Bluetooth-bot mit Ihrem PC finden Sie hier:



Jetzt sollten Sie die Steuerung Ihres Roboters mit der Tastatur. Sicherstellen, dass die Feststelltaste ausgeschaltet ist und verwenden die folgenden Schlüssel (Kleinbuchstabe i, j, k und l), um Ihre Roboter bewegen. Hält eine Taste gedrückt wird ständig in Bewegung führen, loslassen und der Bot aufhören sollten:

forward = "i"
umkehren = "K"
links = "j"
rechts = "l"

Geschwindigkeitswert UP = "."
Geschwindigkeitswert DOWN = ","
max speed = "/"

Zusätzlich können Sie die Geschwindigkeit Wert, der an die Motoren durch Drücken der Punkt, Komma geschrieben wird Slash zurück Tasten zu ändern, und. Die "Komma" Taste wird die Drehzahlwert (0-255) zu senken, die "Periode" Schlüssel wird verwendet, um den Drehzahlwert (in Schritten von 5) zu erhöhen, und die "Backslash" Taste wird verwendet, um den Satz speed_value 255 (max).

Jede andere Taste, die auf der Computertastatur mit dem Terminal offen gedrückt wird, wird eine Antwort (die LED blinkt) zu erhalten, aber keine Motor Aktion geboten werden. Wenn Sie möchten, um verschiedene Schlüssel zu den Steuerungsfunktionen zuzuweisen, öffnen Sie einfach die Serienmonitor (bei 115.200 bps) und drücken Sie die Taste, die Sie verwenden möchten - die Arduino wird die Byte-Wert auf der seriellen Monitor jeder Taste, die gedrückt wird angezeigt , so können Sie den angezeigten Wert zu erfassen und entsprechend zu modifizieren die Skizze.

Sobald Sie Ihre Bluetooth-bot zum Laufen zu bringen, können Sie mehr Bewegungsfunktionen hinzufügen und den Code ändern, wie du willst - wenn Sie mess it up, laden Sie einfach die Original-Code erneut. Der Code ist auch auf der nächsten Seite zur Ansicht verfügbar.

Schritt 4: Code

Arduino kontrolliert Bluetooth-bot
Dieser Code kann aus dem Buch-Website heruntergeladen werden:
https://sites.google.com/site/arduinorobotics/arduino-robotics/free_project

// Bluetooth-bot v1
// Arduino Robotics inoffizielle Kapitel 14
// Verwenden Bluetooth Mate-Seriell-Adapter, um Befehle vom PC zu empfangen
// Arduino dekodiert Befehle in Motorbewegungen
// Erstellt Highspeed-Serienverbindung für die Robotersteuerung mit der Tastatur
// Verwendet Tasten "i" = vorwärts, "j" = links, "k" = rückwärts, und "l" = rechts
// Drehzahlregelung ist auch mit "," = Geschwindigkeit nach unten, umgesetzt "." = Beschleunigen, und "/" = max Drehzahl.

// L298 Motorsteuerungsvariablen
int M1_A = 12; // Wenn mit Ardumoto, ändern an Pin 13
int M1_PWM = 11;
int M1_B = 10; // Wenn mit Ardumoto, entfernen Sie diese Variable

int M2_A = 4; // Wenn mit Ardumoto, ändern an Pin 12
int M2_PWM = 3;
int M2_B = 2; // Wenn mit Ardumoto, entfernen Sie diese Variable

// LED-Pin auf Arduino D13 befestigt
int LED = 13;

// Variable in serielle Daten zu speichern
int incomingByte = 0;

// Variable Geschwindigkeitswert speichern
int speed_val = 255;

//////////////////////////////

Leere setup () {

TCCR2B = TCCR2B & 0b11111000 | 0x01; // PWM-Frequenz für Pins 3 und 11 bis 32 kHz zu ändern, so wird es keine Motor Jammern sein

// Auf 115.200 bps starten serielle Monitor
Serial.begin (115200);

// Ausgabe erklären
pinMode (LED, Ausgang);

pinMode (M1_A, OUTPUT);
pinMode (M1_PWM, OUTPUT);
pinMode (M1_B, OUTPUT);

pinMode (M2_A, OUTPUT);
pinMode (M2_PWM, OUTPUT);
pinMode (M2_B, OUTPUT);

// Motoren ausschalten, indem Standard
M1_stop ();
M2_stop ();

Verzögerung (500);

}

////////////////////////////////////

Leere Schleife () {

// Check für die serielle Daten
if (Serial.available ()> 0) {
// Lesen des ankommenden Byte:
incomingByte = Serial.read ();
// Falls vorhanden, blink LED und drucken empfangenen seriellen Daten.
digital (LED, HIGH);
// Sagen, was man hat:
Serial.print ("Ich erhielt:");
Serial.println (incomingByte);
// 10 Millisekunden zu verzögern, um serielle Aktualisierungszeit ermöglichen
Verzögerung (10);

// Überprüfen eingehende Byte für Richtung
// Wenn Byte gleich "46" oder "", - zu erhöhen Geschwindigkeit
if (incomingByte == 46) {
speed_val = speed_val + 5;
test_speed ();
Serial.println (speed_val);
}
// Wenn Byte gleich "44" oder "." - Niedrigere Geschwindigkeit
else if (incomingByte == 44) {
speed_val = speed_val - 5;
test_speed ();
Serial.println (speed_val);
}
// Wenn Byte gleich "47" oder "/" - Max Geschwindigkeit
else if (incomingByte == 47) {
speed_val = 255;
test_speed ();
}

// Wenn Byte gleich "105" oder "i", vorwärts zu gehen
else if (incomingByte == 105) {
M1_forward (speed_val);
M2_forward (speed_val);
Verzögerung (25);
}
// Wenn Byte gleich "106" oder "j", gehen Sie nach links
else if (incomingByte == 106) {
M1_reverse (speed_val);
M2_forward (speed_val);
Verzögerung (25);
}
// Wenn Byte gleich "108" oder "l", gehen Sie nach rechts
else if (incomingByte == 108) {
M1_forward (speed_val);
M2_reverse (speed_val);
Verzögerung (25);
}
// Wenn Byte gleich "107" oder "k", gehen Sie umgekehrt
else if (incomingByte == 107) {
M1_reverse (speed_val);
M2_reverse (speed_val);
Verzögerung (25);
}
// Andernfalls stoppen beide Motoren
else {
M1_stop ();
M2_stop ();
}

}

else {
M1_stop ();
M2_stop ();
digital (LED, LOW);
}
}

Leere test_speed () {
// Begrenzen Geschwindigkeitswert zwischen 0-255
if (speed_val> 250) {
speed_val = 255;
Serial.println ("MAX");
}
if (speed_val <0) {
speed_val = 0;
Serial.println ("MIN");
}

}

/////////// Motorik ////////////////

nichtig M1_reverse (int x) {
digital (M1_B, LOW);
digital (M1_A, HIGH);
analogWrite (M1_PWM, x);
}

nichtig M1_forward (int x) {
digital (M1_A, LOW);
digital (M1_B, HIGH);
analogWrite (M1_PWM, x);
}

Leere M1_stop () {
digital (M1_B, LOW);
digital (M1_A, LOW);
digital (M1_PWM, LOW);
}

nichtig M2_forward (int y) {
digital (M2_B, LOW);
digital (M2_A, HIGH);
analogWrite (M2_PWM, y);
}

nichtig M2_reverse (int y) {
digital (M2_A, LOW);
digital (M2_B, HIGH);
analogWrite (M2_PWM, y);
}

Leere M2_stop () {
digital (M2_B, LOW);
digital (M2_A, LOW);
digital (M2_PWM, LOW);
}