Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Einleitung: Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth)

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Dies ist ein einfaches Projekt von Android Bluetooth Auto mit Bluetooth-Steuerung. Arduino Controller wird verwendet,

Um zu steuern, um das Auto verwendete Android-Gerät mit einem integrierten Beschleunigungssensor. Nach vorne kippen - Auto geht nach vorne, Neigung nach links - Auto nach links dreht, nach hinten kippen - Auto geht zurück. Die Geschwindigkeit der Bewegung oder Drehung hängt davon ab, wie viel Sie das Gerät kippen. Empfindlichkeit und der Wert der in den Konfigurations Android-Anwendungen eingestellt Neigung. die Tasten auf dem Bildschirm: Auch ist eine normale Art und Weise zu steuern, zur Verfügung gestellt. Zusätzlich zu allen implementiert ich die Touch-Steuerung. Insgesamt 3 Wege, um den RC-Car zu steuern.

Funktionen des Geräts können Sie auf dem Video sehen oben

Schritt 1: Android Geräte

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Schritt 2: DIY Auto-Chassis

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Wir brauchen auch eine beliebige Chassis mit 2 oder 4 DC-Motoren. Sie können eine alte RC Spielzeugauto verwenden. Als Plattform ich eine kleine RC DIY-Plattform verwendet, kaufte für $ 25 auf AliExpress. Es ist am besten geeignet Spurfahrwerk für dieses Projekt.

Schritt 3: Controller (MCU)

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Sie müssen alle Arduino-kompatiblen Controller (Nano, Uno, Leonardo, Mini und andere)

Der Regler sollte 2 PWM und UART enthält.

Schritt 4: Bluetooth-Modul

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Als ein Bluetooth-Modul verwendet billigen chinesischen Modul Bluetooth Serial HC-06 (3-4 onAliExpress $). Anleitung Leitfaden für Bluetooth-Modul zu Arduino verbindet, ist hier.
Sie können HC-05 verwenden, HC-07 und andere seriellen Bluetooth-Module

Schritt 5: Motor Driver

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Ich benutzte L298N verdoppeln Brücke DC-Schrittmotor-Treiber-Modul. Es kostet 05.03 $ auf AliExpress.

Schritt 6: Andere Teile

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Schritt 7: Theorie

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Alle Berechnungen werden in der Android-Anwendung ausgeführt wird, und sofort die Werte 2 <2 L-255 \ rR-120 \ r
L - der Befehl an den linken Motor, R - für das Recht
Ein Strich bedeutet, die Motordrehung zu bewegen, zurück
255 - PWM-Wert (für Arduino ist die maximale Rotationsgeschwindigkeit)
\ R - Ende des Befehls.
Auf diesem Befehl RC Auto nach vorne und leicht nach rechts gedreht bewegen, wie rechts Motor langsam nach links dreht.

L255 \ rR-255 \ r
An diesem Befehl wird der linke Motor dreht sie zurück und nach vorn mit rechts, ein Auto gezwungen gegen den Uhrzeigersinn um seine Achse zu drehen.

H1 \ r
Befehl ist ein zusätzlicher Kanal, an den Sie zum Beispiel Leuchten verbinden können, Ton etc.

Symbole Befehl L, R und H kann in den Einstellungen der Android-Anwendungen definiert werden.

In dem MCU-Steuerprogramm stellt einen Timer, der den Motor, wenn der letzte Befehl schaltet ab, wurde vor mehr als n-Sekunden empfängt. Die Daten werden in dem EEPROM-Speicher des Controllers gespeichert und können von Android Gerät geändert werden. Der Bereich dieser Einstellung ist von 0,1 Sekunden bis 99,9 Sekunden. Diese Einstellung kann deaktiviert werden. Um mit EEPROM zu arbeiten liefert Befehle: Fr - Lesewerte 2 <2

siehe Blockschaltbild oben auf dem Bild,

Schritt 8: Applikation für Android

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Wie wir sehen können, verbindet die Arduino Bluetooth-Modul und einen Motortreiber mit zwei oder vier angeschlossenen Motoren.

Die Anwendung für Android wurde in Eclipse IDE geschrieben. Alle Quellen des Projekts und das Projekt für Eclipse, können Sie hier herunterladen. Android-Version auf dem Gerät muss> 3,0.

Die Anwendung enthält mehrere Aktivitäten. Haupttätigkeit ist ein Startbildschirm mit den Tasten verschiedene Betriebsmodi und Einstellungen laufen

Es gibt 3 Steuermodi Bluetooth-Auto: vom Beschleunigungsmesser, Screen-Tasten und Touch-Control.

Android Anwendungseinstellungen

Screenshot von Einstellungen CxemCar Android-Anwendung Version 1.0

Um eine Verbindung mit dem RC-Car Bluetooth-Modul herzustellen, müssen Sie die MAC-Adresse in den Programmeinstellungen festgelegt. Aber zuerst müssen Sie das Paar die Geräte auf Android-Gerät konfigurieren: öffnen Sie Einstellungen -> Bluetooth und klicken Sie auf „für Geräte Suchen“. Wenn das Telefon unseres Bluetooth-Modul findet, sie klicken und geben Sie das Kennwort für das Pairing (in der Regel „1234“)

Bluetooth-Modul MAC-Adresse möglich, aus jeder Anwendung, wie zum Beispiel Bluetooth-Terminal zu kennen. Um dies zu tun, klicken Sie auf „Gerät verbinden - Secure“ und in dem daraufhin angezeigten Fenster klicken Sie auf die Schaltfläche „Scan for devices“. Software wird durchsucht die Bluetooth-Geräte und zeigt diese MAC-Adresse.

Schritt 9: Arduino RC Car Wiring

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Schaltplan für Arduino Controller

In der Schaltung verwenden ich einen Jumper (in dem Schema JMP1), da mit einem Bluetooth-Modul verbunden ist unmöglich Last Skizze zum Arduino.

Ich gelötet ein Bluetooth-Modul an das Arduino und LED-Statuslicht. Für die Kommunikation zwischen Arduino und Bluetooth, lesen Sie diesen Artikel: Arduino und Bluetooth. Modul HC-06 platziert in Schrumpfschlauch 10 mm. Bluetooth-Zustands-LED mit Strombegrenzungswiderstand (Rechner) wurden ebenfalls in Schrumpfschlauch angeordnet.

In dem Steckbrett Plattform, bohrte ich ein Loch und sichere Motortreiber L298N. Arduino Platte angebracht mit doppelseitigem Klebeband

Zwischen der Autoplattform und Steckbrett platziert I 3 Li-Po-Akku 3,7V 1100 mAh. Stromversorgung der Steuerung und Motoren getrennt: von einem 3,7-V-Batterie betrieben Arduino und die Motoren und Treiber L298N aus zwei 3,7 V Batterien in Reihe geschaltet sind. Es gibt zwei 2-Stellung Leistungsschalter - eine Position der Strom von den Batterien zu den Verbrauchern ist, in der anderen Position Terminals geladen wird.

Schritt 10: Software

Einfaches RC Auto für Anfänger (Android Kontrolle über Bluetooth) 10 Schritte (mit Bildern)

Das Programm wurde in Arduino IDE 1.01 geschrieben.

#define D1 2 // Drehrichtung des Motors 1
#define M1 3 // PWM linken Motor
#define D2 4 // Drehrichtung des Motors 2
#define M2 5 // PWM rechten Motor
#define HORN 13 // zusätzlicher Kanal 1
// # AutoOff 2500 // Millisekunden, nach der Definition der Roboter stoppt, wenn die Verbindung

#define CMDL 'L' // UART-Befehl für den linken Motor
#define Cmdr 'R' // UART-Befehl für rechten Motor
#define CMDh 'H' // UART-Befehl für zusätzlichen Kanal (beispielsweise Horn)
#define CMDF 'F' // UART-Befehl für den Betrieb EEPROM
#define cmdr 'r' // UART-Befehl für die EEPROM-Operation (Lesen)
#define cmdw 'w' // UART-Befehl für die EEPROM-Betrieb (write)

char incomingByte; // eingehende Daten

char L_DATA [4]; // Array-Daten für den linken Motor
Byte L_index = 0; // Index des Arrays L
char R_DATA [4]; // Arraydaten für den rechten Motor
Byte R_index = 0; // Index des Arrays R
char H_Data [1]; // Arraydaten für zusätzlichen Kanal
Byte H_index = 0; // Index des Arrays H
char F_Data [8]; // Array-Daten für den EEPROM
Byte F_index = 0; // Index des Arrays F
char Befehl; // Befehl

unsigned long current, lastTimeCommand, AutoOff;

Leere setup () Serial.begin (9600); // Initialisierung UART
pinMode (HORN, OUTPUT); // zusätzlicher Kanal
pinMode (D1, OUTPUT); // Ausgabe für die Motordreh
pinMode (D2, OUTPUT); // Ausgabe für die Motordreh
/*EEPROM.write(0,255);
EEPROM.write (1,255);
EEPROM.write (2.255);
EEPROM.write (3.255); * /
timer_init (); // Initialisierung Software-Timer
>

Leere timer_init () uint8_t sw_autoOFF = EEPROM.read (0); // lesen EEPROM „aktiviert ist oder nicht, das Auto zu stoppen, wenn die Verbindung zu verlieren“
if (sw_autoOFF == '1')< // if activated
char var_Data [3];
var_Data [0] = EEPROM.read (1);
var_Data [1] = EEPROM.read (2);
var_Data [2] = EEPROM.read (3);
AutoOff = atoi (var_Data) * 100; // Variable AutoOff ms
>
wenn sonst (sw_autoOFF == '0')<
AutoOff = 999999;
>
else if (sw_autoOFF == 255) AutoOff = 2500; // Wenn der EEPROM leer ist, wird dafault Wert 2.5 sec
>
currenttime = Millis (); // die Zeit lesen vergangen, seit Programmstart
>

Leere Schleife () if (Serial.available ()> 0) < // if received UART data
incomingByte = Serial.read (); // raed Byte
if (incomingByte == CMDL) < // if received data for left motor L
command = CMDL; // Strombefehl
Memset (L_DATA, 0, sizeof (L_DATA)); // klar Array
L_index = 0; // Rücksetzen Array-Index
>
else if (incomingByte == Cmdr) < // if received data for left motor R
command = CMDR;
Memset (R_DATA, 0, sizeof (R_DATA));
R_index = 0;
>
else if (incomingByte == CMDh) < // if received data for additional channel
command = CMDh;
Memset (H_Data, 0, sizeof (H_Data));
H_index = 0;
>
else if (incomingByte == CMDF) < // if received data for EEPROM op
COMMAND = CMDF;
Memset (F_Data, 0, sizeof (F_Data));
F_index = 0;
>
else if (incomingByte == '\ r') = Befehl 'e'; // Ende der Linie
else if (incomingByte == '\ t') = Befehl 't'; // Ende der Leitung für EEPROM op

if (Befehl == CMDL - incomingByte = CMDL!) L_DATA [L_index] = incomingByte; // Speichere jedes Byte in dem Array
L_index ++; // Inkrement Array-Index
>
else if (Befehl == Cmdr - incomingByte = Cmdr!) R_DATA [R_index] = incomingByte;
R_index ++;
>
else if (Befehl == CMDh - incomingByte = CMDh!) H_Data [H_index] = incomingByte;
H_index ++;
>
else if (Befehl == CMDF - incomingByte = CMDF!) F_Data [F_index] = incomingByte;
F_index ++;
>
else if (Befehl == 'e')< // if we take the line end
Control4WD (atoi (L_DATA), atoi (R_DATA), atoi (H_Data));
Verzögerung (10);
>
else if (Befehl == 't')< // if we take the EEPROM line end
Flash_Op (F_Data [0], F_Data [1], F_Data [2], F_Data [3], F_Data [4]);
>
lastTimeCommand = Millis (); // die Zeit lesen vergangen, seit Programmstart
>
if (millis ()> = (lastTimeCommand + AutoOff))< // compare the current timer with variable lastTimeCommand + autoOFF
Control4WD (0,0,0); // das Auto stoppen
>
>

Leere Control4WD (int mLeft, int MRIGHT, uint8_t Horn)

bool directionL, Uhrzeigersinn leer; // Drehrichtung des Motors L298N
Byte wertl, Schätzer; // PWM M1, M2 (0-255)

if (mLeft> 0) = wertl mLeft;
directionL = 0;
>
else if (mLeft < 0) valueL = 255 - abs(mLeft);
directionL = 1;
>
sonst directionL = 0;
wertl = 0;
>

if (MRIGHT> 0) = Valuer MRIGHT;
Uhrzeigersinn leer = 0;
>
else if (MRIGHT < 0) valueR = 255 - abs(mRight);
Uhrzeigersinn leer = 1;
>
sonst den Uhrzeigersinn leer = 0;
Schätzer = 0;
>

analogWrite (M1, wertl); // Soll-Geschwindigkeit für den linken Motor
analogWrite (M2, Valuer); // Soll-Geschwindigkeit für die rechten Motor
digital (D1, directionL); // set Richtung linke Motordreh
digital (D2, Uhrzeigersinn leer); // set Richtung rechten Motordreh

digital (Horn, Horn); // zusätzlicher Kanal
>

nichtig Flash_Op (char FCMD, uint8_t z1, z2 uint8_t, uint8_t z3, z4 uint8_t)

Der Code verwendet eine Bibliothek mit EEPROM AVR-Speicher zu arbeiten. Arduino-Board von USART aus dem Bluetooth-Modul empfängt Daten bereit für den linken und rechten Motor. Alle grundlegenden Berechnungen werden in der Android-Anwendung ausgeführt.

Die Projektstruktur in Eclipse kann man auf dem Screenshot sehen oben.

Sie können den Quellcode für das Arduino herunterladen und das Projekt für Eclipse
Laden Sie APK-Anwendung für Android-Gerät

Die neueste Software-Version finden Sie auf dieser Seite zu finden
Video Demonstration des virtuellen Lenkrad-Modus (Version 1.2 und höher):

P. S. Entschuldigung für mein schlechtes Englisch

In Verbindung stehende Artikel