Ein per Bluetooth gesteuertes Fahrzeug selbst bauen

Hier die Details zu dem Video in dem ich zeige wie einfach es ist mit einem Arduino Nano, einen Bluetooth Modul und mit dem Motortreiber Modul, an dem zwei bis vier Gleichstrommotoren mit Doppelwellengetriebe angeschlossen sind, ein kleines funkgesteuertes Fahrzeug zu bauen. Es kann mit der App dabble (die für Android oder IPhone kostenlos erhältlich ist) gesteuert werden.

Hardware:

Arduino Nano
Getriebemotor (3-9V) inkl. Rad
MotoDriver2
HM-10 Bluetooth Modul

dabble das gamepad für das Smartphone:

Google Play Store
Apple Store

Quellcode:

#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_MODULE
#include <Dabble.h>

const int rechterMotorAktiv = 5;
const int linkerMotorAktiv = 6;
const int linksvor = 7;
const int linksrueck = 8;
const int rechtsvor = 9;
const int rechtsrueck = 10;

void setup()
{
  pinMode(rechterMotorAktiv, OUTPUT);
  pinMode(linkerMotorAktiv, OUTPUT);
  pinMode(linksvor, OUTPUT);
  pinMode(linksrueck, OUTPUT);
  pinMode(rechtsvor, OUTPUT);
  pinMode(rechtsrueck, OUTPUT);

  Dabble.begin(9600, 2, 3); //(baudRate,Pin RX,Pin TX)
}

void loop()
{
  int speed = 180;
  //wenn nichts gedrückt wird, setzte "0" STOP
  analogWrite(rechterMotorAktiv, 0);
  analogWrite(linkerMotorAktiv, 0);    
  analogWrite(rechtsvor, 0);
  analogWrite(linksvor, 0);
  analogWrite(rechtsrueck, 0);
  analogWrite(linksrueck, 0);

  Dabble.processInput();
  if (GamePad.isUpPressed())
  {
    analogWrite(rechterMotorAktiv, 255);
    analogWrite(linkerMotorAktiv, 255);
    analogWrite(rechtsvor, speed);
    analogWrite(linksvor, speed);
    delay(200);
  }

  if (GamePad.isDownPressed())
  {
    analogWrite(rechterMotorAktiv, 255);
    analogWrite(linkerMotorAktiv, 255);
    analogWrite(rechtsrueck, speed);
    analogWrite(linksrueck, speed);
    delay(200);
  }

  if (GamePad.isLeftPressed())
  {
    analogWrite(rechterMotorAktiv, 255);
    analogWrite(linkerMotorAktiv, 255);
    analogWrite(rechtsvor, speed);
    analogWrite(linksrueck, speed);
    delay(200);
  }

  if (GamePad.isRightPressed())
  {
    analogWrite(rechterMotorAktiv, 255);
    analogWrite(linkerMotorAktiv, 255);
    analogWrite(rechtsrueck, speed);
    analogWrite(linksvor, speed);
    delay(200);
  }
}

Quellcode Vers. 2:

#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_MODULE
#include <Dabble.h>

int rechterMotorAktiv=5; 
int linkerMotorAktiv=6;
int linksvor=7;
int linksrueck=8;
int rechtsvor=9;
int rechtsrueck=10;

void setup()
{
  pinMode(rechterMotorAktiv,OUTPUT);
  pinMode(linkerMotorAktiv,OUTPUT);
  pinMode(rechtsvor,OUTPUT);
  pinMode(rechtsrueck,OUTPUT);
  pinMode(linksvor,OUTPUT);
  pinMode(linksrueck,OUTPUT);

  motorTempo(0,0);      
  Dabble.begin(9600, 2, 3);
}

void loop()
{
  int rechtsTempo=0;
  int linksTempo=0;
  Dabble.processInput();
  if (GamePad.isUpPressed())
  {
    rechtsTempo = 255;
    linksTempo = 255;
  }

  if (GamePad.isDownPressed())
  {
    rechtsTempo = -255;
    linksTempo = -255;
  }

  if (GamePad.isLeftPressed())
  {
    rechtsTempo = 0;
    linksTempo = 255;
  }

  if (GamePad.isRightPressed())
  {
    rechtsTempo = 255;
    linksTempo = 0;
  }

  motorTempo(rechtsTempo, linksTempo);
}

void motorTempo(int rechtsTempo, int linksTempo)
{
  if (rechtsTempo < 0)
  {
    digitalWrite(rechtsvor,LOW);
    digitalWrite(rechtsrueck,HIGH);    
  }
  else if (rechtsTempo >= 0)
  {
    digitalWrite(rechtsvor,HIGH);
    digitalWrite(rechtsrueck,LOW);      
  }

  if (linksTempo < 0)
  {
    digitalWrite(linksvor,LOW);
    digitalWrite(linksrueck,HIGH);    
  }
  else if (linksTempo >= 0)
  {
    digitalWrite(linksvor,HIGH);
    digitalWrite(linksrueck,LOW);      
  }

  analogWrite(rechterMotorAktiv, abs(rechtsTempo));
  analogWrite(linkerMotorAktiv, abs(linksTempo));    
}

Informationsquellen:
dabble bei thestempedia.com
Datenblatt des Herstellers von MotoDriver2
Datenblatt des Bluetooth Modul HM-10

Grundplatte zum ausdrucken:
Arduino Robot Car Chassis 4WD


Video:

Ergänzende Information:
Nicht im Video zu sehen, ist das entfernen der beiden Jumper des MotoDriver2 an Pin ENA und ENB.
Erst dann kann es mit einem Jumperkabel mit dem Arduino an Pin 5+6 verbunden werden.

, ,