Für die drahtlose Kommunikation empfiehlt sich das Bluetooth-Modul HC-05. Auf der Rückseite findet sich die Beschriftung der sechs Pins. Für erste Erfahrungen mit dieser Technik sei folgender Aufbau empfohlen:
Wie die Abbildung zeigt, ist ein Arduino-Nano über ein Breadboard mit einem Taster, dem Bluetooth-Modul HC-05 und einer LED vernetzt. Die LED ist mit GND und Pin 13, der Taster mit GND und Pin 8 verbunden. Die vier Pins des Bluetooth-Moduls sind auf der Rückseite beschriftet. Sie sind wie folgt verdrahtet: RX vom HC-05 über einen Spannungsteiler mit Pin 4, TX vom HC-05 mit Pin 3, GND mit GND und VCC vom HC-05 mit 5V. State und EN bleiben unverbunden.
Hinweis: Der Spannungsteiler ist nötig, weil RX vom HC-05 mit 3,3V angesteuert werden muss. Er kann so realisiert werden, dass Pin 13 über zwei Widerstände von 1 und 2 kOhm mit GND verbunden und die Spannung zwischen den beiden Widerständen abgegriffen wird. Ein Widerstand an der LED erübrigt sich bei den kleinen Strömen.
Ist der Aufbau über USB mit dem PC verbunden, erfolgt die Stromversorgung von dort. Wird der serielle Monitor aus der Arduino-IDE nicht benötigt, sollte 9V-Block verwendet werden. Er wird über GND und VIN mit dem Nano verbunden.
So verdrahtet werden beide Nanos mit folgendem Code programmiert:
#include <SoftwareSerial.h>
#define rxPin 3
#define txPin 4
#define button 8
#define ledPin 13
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);
int state = 20;
int buttonState = 0;
void setup() {
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
pinMode(button, INPUT_PULLUP );
mySerial.begin(38400); // HC-05 Baudrate (abgefragt mit AT+UART?)
}
void loop() {
if(mySerial.available() > 0){ // Abfrage nach seriellen Daten
state = mySerial.read(); // Lesen der seriellen Daten
}
// Kontrolle der LED
if (state == '1') {
digitalWrite(ledPin, HIGH); // LED AN
state = 0;
}
else if (state == '0') {
digitalWrite(ledPin, LOW); // LED AUS
state = 0;
}
// Abfrage des Tasters
buttonState = digitalRead(button);
if (buttonState == LOW) {
mySerial.write('1'); // Sendet '1' um die LED ünber Bluetooth einzuschalten
}
else {
mySerial.write('0');// Sendet '0' um die LED über Bluetooth auszuschalten
}
}
Hinweis: Bei der Programmierung oben wird die Bibliothek „SoftwareSerial“ genutzt, um auf dem Nano andere als die ausgezeichneten RX/TX-Pins für die Kommunikation nutzen zu können. Das erhöht die Verlässlichkeit bei der Datenübertragung und erspart das Lösen dieser Pins beim Übertragen von Code.
Der Sinn dieses Vorhabens liegt darin nachzuvollziehen, ob und wie die Kommunikation zwischen den Systemen funktioniert: Die Programmierung sorgt dafür, dass die Tasten auf beiden Systemen überwacht werden. Durch den Druck auf eine der beiden Tasten wird eine „1“ gesendet und auf der Empfängerseite die LED angeschaltet wird. Beim Loslassen der Taste wird eine „0“ gesendet und die LED ausgeschaltet.
Anspruchsvoll bei dieser Sache ist die Konfiguration der HC-05-Module. Sie müssen über sogenannte AT-Befehle für ihre Aufgaben vorbereitet werden. Dazu muss eine kleine Manipulation an oben gezeigtem Aufbau vorgenommen werden:
Zunächst müssen die Module in den sogenannten „AT-Modus“ versetzt werden. Dazu wird das USB Kabel gezogen, der kleine Knopf oberhalb des STATE-Pins auf dem HC-05 gedrückt und – ohne ihn loszulassen – das USB-Kabel wieder eingesteckt. Der Erfolg dieser Maßnahme zeigt sich daran, dass die LED am Modul statt rasch nun im 2-Sekunden-Takt blinkt.
War das erfolgreich, wird der serielle Monitor über die Arduino IDE gestartet mit folgenden Einstellungen in der Fußzeile rechts:
„Sowohl NL als auch CR“ und „38400 Baud„
In der Kopfzeile wird dann „AT“ (natürlich ohne die Anführungszeichen) eingetippt und auf „Senden“ oder die Return-Taste gedrückt. Wenn alles stimmt, sollte ein „OK“ im Monitor angezeigt werden. Dieses „OK“ wird bei allen erfolgreichen Eingaben gesendet und im Nachfolgenden nicht weiter erwähnt.
Da für den Aufbau zwei HC-05-Module benötigt werden, muss das eine Modul als „Master“ und das andere als „Slave“ konfiguriert werden. Die Abfrage einer solchen „Rolle“ lautet: „AT+ROLE?“ .
Beim „Master“-Modul muss die Antwort „+ROLE:1“ beim „Slave“-Modul „+ROLE:0“ lauten. Die Befehle, um diese „Rollen“ zuzuweisen, lauten: „AT+ROLE=1“ und „AT+ROLE=0“ .
Sollten Unsicherheiten bestehen hinsichtlich der Baudrate, so gibt der Befehlt „AT+UART?“ Aufschluss. Die Antwort sollte bei beiden Modulen „+UART:38400,0,0“ lauten. Ist das nicht der Fall, kann das Modul mit dem Befehl „AT+UART=38400,0,0“ auf die geforderte Baudrate gesetzt werden.
Das „Master“-Modul soll direkt mit dem „Slave“-Modul verbunden werden. Dazu muss die Adresse des „Slave“-Moduls ermittelt werden mit dem Befehl „AT+ ADDR?“ . Die Antwort sollt etwa wie folgt lauten: „+ADDR:98d3:a1:fd6bb5“ . Sie sollte notiert werden, um sie später beim „Master“-Modul verwenden zu können.
Das „Master“-Modul wird danach mit dem Befehl „AT+CMODE=0“ befähigt, die Adresse des „Slave“-Moduls direkt zu nutzen. Wird das zur Sicherheit nachgefragt mit „AT+CMODE?“ , sollte die Antwort „+CMOD:0“ lauten.
Ein letzter Befehl „AT+BIND=98d3,a1,fd6bb5“ (dann natürlich die ermittelte Adresse eingeben), schließt dann alle Vorbereitungen ab.
Hinweis: Bei der zu ermittelnden Adresse des „Slave“-Moduls werden Doppelpunkte angezeigt, bei der Eingabe ins „Master“ Modul müssen diese aber – wie am Beispiel oben gezeigt – durch Kommas ersetzt werden.
Für die finale Erprobung empfiehlt es sich beide Aufbauten über einen frischen 9V-Batterieblock mit Strom zu versorgen. Beim Anschließen spielt die Reihenfolge keine Rolle.
Wer Lust und Zeit hat, kann auch eine eigene App entwickeln. Am schnellsten gelingt das unserer Erfahrung nach mit dem „App Inventor 2“ von Google. Eine englischsprachige Anleitung zum Installieren der kostenlosen Softwarepakete findet sich im Internet.
Wie man mit dem App Inventor eine App zum Ein- und Ausschalten einer LED erstellt, haben wir in einer Schritt-für-Schritt-Anleitung zusammengefasst: Download.
Und hier noch der zur Selbstbau-App passende Arduino-Sketch:
Wer es noch anspruchvoller mag, dem sei das Erstellen einer App empfohlen, mit der solche wie im Kapitel „Durstige Motoren“ vorgestellte Selbstbau-Roboter ferngesteuert werden können.
Eine Anleitung zur Programmierung der App und des Fahrzeugs können hier heruntergeladen werden: Download.
Das Bluetooth-Modul HC-05 kann preisgünstig hier erworben werden.