Smartphone-G-Sensor-gesteuerter Roboter-Auto mit Arduino und Bluetooth
Komponenten und Zubehör
| Arduino UNO | ×1 |
| HC-06 Bluetooth-Modul | ×1 |
| Motortreiber-Chip L298N | ×1 |
| Beliebige Roboter-Auto-Plattform (Zweirad) | ×1 |
Apps und Online-Dienste
- RemoteXY
Über dieses Projekt

Schritt 1
Baue das Roboter-Auto mit einer beliebigen verfügbaren Plattform auf Zweirad-Basis. Das Anschluss-Schema der elektronischen Komponenten ist in der untenstehenden Abbildung dargestellt. Du benötigst ein Arduino UNO oder kompatibles Board, Bluetooth HC-05 (06) Modul, Motortreiber und eine Stromversorgungsbatterie. Getriebemotoren werden auf der Plattform montiert und treiben die Roboter-Räder an.

Schritt 2
Gehe auf die RemoteXY-Service-Website unter https://remotexy.com/en/editor/ und erstelle eine grafische Benutzeroberfläche zur Steuerung des Roboters. Stelle eine Steuerfunktion mit dem G-Sensor für den Joystick ein. Ein Beispiel für die Oberfläche ist in der untenstehenden Abbildung dargestellt. Klicke auf den Button „Get source code“.

Schritt 3
Lade den Quellcode der GUI herunter und öffne ihn in der Arduino IDE. Zum Kompilieren benötigst du die RemoteXY.h-Bibliothek; sie kann von https://remotexy.com/en/library/ heruntergeladen werden. Du kannst bereits versuchen, den Code in den Arduino zu laden und mit der mobilen App zu verbinden. Aber da dies erst der leere Code ist, musst du die erforderliche Funktionalität hinzufügen, die die grafische Oberfläche mit dem Motortreiber verknüpft.
Schritt 4
Dann musst du die Roboter-Steuerungsfunktionalität zum Quellcode hinzufügen, indem du die grafische Oberfläche nutzt. Dafür wird die RemoteXY-Struktur verwendet. Die RemoteXY-Struktur zeigt alle deine GUI-Steuerelemente an.
Der resultierende Quellcode ist unten dargestellt. Du kannst ihn kompilieren und auf den Arduino hochladen.
Schritt 5
Installiere die mobile RemoteXY-App von https://remotexy.com/en/download/. Wenn die App auf einem mobilen Gerät läuft, drücke den Bluetooth-Verbindungsbutton in der Liste, wähle den Namen deines Bluetooth-Moduls – für HC-05 (06) Module ist der Name typischerweise INVOR oder HC-06.
Es funktioniert!
Code
Fernsteuerung des Roboter-Autos über RemoteXY Mobile App (C/C++)
Die RemoteXY.h-Bibliothek kannst du unter https://remotexy.com/en/library/ herunterladen.
/////////////////////////////////////////////
// RemoteXY include library
/////////////////////////////////////////////
#define REMOTEXY_MODE__SOFTWARESERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>
/* RemoteXY connection settings */
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600
/* RemoteXY configurate */
unsigned char RemoteXY_CONF[] = {
3,0,23,0,1,5,5,15,41,11,
43,43,1,2,0,6,5,27,11,5,
79,78,0,79,70,70,0
};
/* this structure defines all the variables of your control interface */
struct {
/* input variable */
signed char joystick_1_x; /* =-100..100 x-coordinate joystick position */
signed char joystick_1_y; /* =-100..100 y-coordinate joystick position */
unsigned char switch_1; /* =1 if switch ON and =0 if OFF */
/* other variable */
unsigned char connect_flag; /* =1 if wire connected, else =0 */
} RemoteXY;
/////////////////////////////////////////////
// END RemoteXY include
/////////////////////////////////////////////
/* defined the right motor control pins */
#define PIN_MOTOR_RIGHT_UP 7
#define PIN_MOTOR_RIGHT_DN 6
#define PIN_MOTOR_RIGHT_SPEED 10
/* defined the left motor control pins */
#define PIN_MOTOR_LEFT_UP 5
#define PIN_MOTOR_LEFT_DN 4
#define PIN_MOTOR_LEFT_SPEED 9
/* defined the LED pin */
#define PIN_LED 13
/* defined two arrays with a list of pins for each motor */
unsigned char RightMotor[3] = {PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED};
unsigned char LeftMotor[3] = {PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN, PIN_MOTOR_LEFT_SPEED};
/* speed control of the motor
motor - pointer to an array of pins
v - motor speed can be set from -100 to 100 */
void Wheel (unsigned char * motor, int v) {
if (v > 100) v = 100;
if (v < -100) v = -100;
if (v > 0) {
digitalWrite(motor[0], HIGH);
digitalWrite(motor[1], LOW);
analogWrite(motor[2], v * 2.55);
} else if (v < 0) {
digitalWrite(motor[0], LOW);
digitalWrite(motor[1], HIGH);
analogWrite(motor[2], (-v) * 2.55);
} else {
digitalWrite(motor[0], LOW);
digitalWrite(motor[1], LOW);
analogWrite(motor[2], 0);
}
}
void setup() {
/* initialization pins */
pinMode(PIN_MOTOR_RIGHT_UP, OUTPUT);
pinMode(PIN_MOTOR_RIGHT_DN, OUTPUT);
pinMode(PIN_MOTOR_LEFT_UP, OUTPUT);
pinMode(PIN_MOTOR_LEFT_DN, OUTPUT);
pinMode(PIN_LED, OUTPUT);
/* initialization module RemoteXY */
RemoteXY_Init();
}
void loop() {
/* event handler module RemoteXY */
RemoteXY_Handler();
/* manage LED pin */
digitalWrite(PIN_LED, (RemoteXY.switch_1 == 0) ? LOW : HIGH);
/* manage the right motor */
Wheel(RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
/* manage the left motor */
Wheel(LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
}
Schaltplan

Herstellungsprozess
- Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
- WLAN-gesteuerter Raspberry Pi Roboter mit Python bauen – Schritt-für-Schritt
- DTMF-Decoder mit Arduino bauen – ganz ohne zusätzlichen IC
- Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
- SERENA: Eigenes Arduino Mega 2560 Alarmsystem mit TFT-LCD-Touchscreen
- Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
- Android-gesteuertes Roboterfahrzeug mit Raspberry Pi Motor Shield
- Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen
- Sprachgesteuerter Roboter mit Arduino Nano bauen
- MobBob: Eigenen Arduino-Roboter bauen, per Android-Smartphone steuern