Bluetooth ist ein Industriestandard gemäß IEEE 802.15.1 für die Datenübertragung zwischen Geräten über
kurze Distanz per Funktechnik (WPAN). Dabei sind verbindungslose sowie verbindungsbehaftete Übertragungen
von Punkt zu Punkt und Ad-hoc- oder Piconetze möglich (ISM-Band zwischen 2,402 GHz und 2,480 GHz).
Die Reichweite beträgt je nach Leistung und Klasse zwischen 1-100m, meist jedoch um die 10m.
(Weitere Details siehe: Wikipedia - Bluetooth
Mit dem Bluetooth-Modul HC-05 ist eine drahtlose Kommunikation zwischen einem Arduino und z.B. einem
Smartphone oder Laptop möglich. Es können Daten zum Mikrocontroller gesendet aber auch vom Mikrokontroller
empfangen werden (Slave und Master).
Zur Bluetooth-Steuerung wurde hier ein Android-Smartphone mit der App
BlueTerm
bzw.
Serial Bluetooth Terminal
verwendet. Nach der Installation und Öffnen der App lässt man einen Scan über alle empfangsbereiten
Bluetooth-Geräte in der Umgebung laufen. Dann verbindet man sich mit dem HC-05 (Passwort: 1234) und kann
dann Befehle übertragen.
HC-05 | Arduino |
---|---|
GND | GND |
VCC | 3,3V - 6V |
RX (nur 3,3V!) | TX |
TX | RX |
Vorsicht: der RX-Pin am Bluetooth-Modul darf nur mit 3,3V betrieben werden!
Ein Spannungsteiler muss daher die 5V des Arduino-Pins TX verringern.
Achtung! Beim Hochladen auf den Mikrocontroller muss das Bluetooth-Modul herausgenommen
werden, sonst erscheint eine Fehlermeldung, dass der Code nicht hochgeladen werden kann. Danach kann man
das Modul wieder einsetzen.
Zur Steuerung via Bluetooth habe ich die Android-App
BlueTerm
bzw.
Serial Bluetooth Terminal
verwendet.
#define PIN_LED 7
char blueToothValue;
byte ledStatus = 0;
void setup()
{
Serial.begin(9600);
pinMode(PIN_LED, OUTPUT);
}
void loop()
{
if(Serial.available()) {
blueToothValue = Serial.read();
}
switch(blueToothValue) {
case '1':
if(ledStatus == 0) {
digitalWrite(PIN_LED, HIGH);
Serial.println("LED is on");
ledStatus = 1;
}
break;
case '0':
if(ledStatus == 1) {
digitalWrite(PIN_LED, LOW);
Serial.println("LED is off");
ledStatus = 0;
}
break;
}
}
Achtung! Beim Hochladen auf den Mikrocontroller muss das Bluetooth-Modul herausgenommen
werden, sonst erscheint eine Fehlermeldung, dass der Code nicht hochgeladen werden kann. Danach kann man
das Modul wieder einsetzen.
Zur Steuerung via Bluetooth habe ich die Android-App
Arduino Bluetooth RC Car verwendet.
#include <Servo.h>
#define PIN_LED_RED 13
#define PIN_LED_GREEN 12
#define PIN_RELAY 8
#define PIN_SERVO 9
#define BLINK_DELAY 300
char blueToothValue;
byte ledStatus = 0;
bool emergencyBlink = false;
unsigned int lastBlinkAction = 0;
Servo servoMotor;
void setup()
{
Serial.begin(9600);
pinMode(PIN_LED_RED, OUTPUT);
pinMode(PIN_LED_GREEN, OUTPUT);
pinMode(PIN_RELAY, OUTPUT);
servoMotor.attach(PIN_SERVO);
}
void loop()
{
if (emergencyBlink == true) {
if (millis() - lastBlinkAction >= BLINK_DELAY) {
lastBlinkAction += BLINK_DELAY;
ledStatus++;
ledStatus%=2;
}
digitalWrite(PIN_LED_RED, ledStatus);
digitalWrite(PIN_LED_GREEN, ledStatus);
}
if(Serial.available()) {
blueToothValue = Serial.read();
switch(blueToothValue)
{
case 'X':
emergencyBlink = true;
Serial.println("Emergency on");
break;
case 'x':
emergencyBlink = false;
ledStatus = 0;
digitalWrite(PIN_LED_RED, LOW);
digitalWrite(PIN_LED_GREEN, LOW);
Serial.println("Emergency off");
break;
case 'W':
Serial.println("Frontlight on");
digitalWrite(PIN_LED_GREEN, HIGH);
break;
case 'w':
Serial.println("Frontlight off");
digitalWrite(PIN_LED_GREEN, LOW);
break;
case 'U':
Serial.println("Backlight on");
digitalWrite(PIN_LED_RED, HIGH);
break;
case 'u':
Serial.println("Backlight off");
digitalWrite(PIN_LED_RED, LOW);
break;
case 'F':
Serial.println("Motor on");
digitalWrite(PIN_RELAY, HIGH);
break;
case 'B':
Serial.println("Motor off");
digitalWrite(PIN_RELAY, LOW);
break;
case 'L':
Serial.println("Left");
servoMotor.write(45);
break;
case 'R':
Serial.println("Right");
servoMotor.write(135);
break;
case 'S':
break;
default:
Serial.println("unknown: " + String(blueToothValue));
break;
}
}
}
zurück