Bluetooth-Kochbuch für den Arduino

Bluetooth eignet sich hervorragend um drahtlos mit einem Arduino zu kommunizieren. Preiswerte Bluetooth-Module gibt es z.B. unter der Bezeichnung JY-MCU-Modul. Sie sind für unter 10 € zu haben.

BT01

Es gibt sehr viele Parameter und Möglichkeiten die Module zu konfigurieren. Hier möchte ich,  wie in einem Kochbuch, die minimal erforderlichen Einstellungen beschreiben, um die einfachste Kommunikation einzustellen.

Das Modul mit dem Chip HC-06 kann nur als Slave arbeiten. Das heißt es kann nicht aktiv Kontakt mit einem anderen Bluetooth-Gerät aufnehmen. Es wartet bis es kontaktiert wird.

Das Modul  mit dem HC-05 kann auch als Master konfiguriert werden kann. Das heißt ein HC-05-Modul kann sich automatisch mit einem bestimmten anderen Bluetooth-Modul (z.B. ein HC-06-Modul) verbinden. So können z.B. zwei Arduinos miteinander Kontakt aufnehmen und kommunizieren.

Beide Module können direkt an 5 V angeschlossen werden, denn sie haben einen Spannungregler der die Anschlußspannung für den Bluetooth-Chip auf 3,3V  herunterregelt. Die TXD /RXD Anschlüsse funktionieren ebenfalls problemlos mit dem 5V TTL-Spannungslevel des Arduino.

Man kann also einfach VCC (5V) und GND mit dem Arduino verbinden und die TXD und RXD Anschlüsse gekreuzt, also TXD an RX und RXD an TX, anschliessen.  Achtung wenn man die Standard-Anschlüsse benutzt (Pin 0 und 1), dann darf  diese Verbindung nur solange bestehen, wie der USB-Port nicht angeschlossen ist bzw. kein USB-Daten-Verkehr (Download/Serial-Port) stattfindet.

Die bessere Lösung ist die Softserial-Libray zu nutzen und z.B. an Port 2/3 eine 2. Serial-Verbindung einzurichten. Mit der Arduino-Entwicklingssoftware wird eine Libary und ein Beispielprogramm mitgeliefert. Dieses Beispielprogramm sendet einfach alle auf der einen Schnittstelle empfangenen Daten an die andere Schnittstelle. Damit läßt sich der Datenverkehr testen und das Bluetoothmodul konfigurieren. Die Baudrate für das Bluetooth-Modul muß auf 9600 Baud gesetzt werden.

Eine Anwendung könnte so entwickelt werden, dass die Kommunikation, die später über Bluetooth abgewickelt werden soll, zuächst über den Serial-Port getestet wird und anschliessend das Bluetooth-Modul angeschlossen wird.

Als Bluetooth-Mastergerät nutzt man am besten einen PC, ein Smartphone oder ein Tablett. Das Bluetooth Modul HC-06 hat, werksseitig eingestellt, den Namen „linvor“; der Pin-Code ist 1234. Also z.B. in Android in Einstellungen -> Bluetooth gehen und dort nach Geräten suchen. Gefundenes Gerät mit dem Namen „linvor“ markieren und „pairen“. Dabei den PinCode 1234 eingeben.  Jetzt können Apps auf Smartphone/Tablett mit dem Bluetooth-Module verbunden werden. Einfache Android Apps (nicht nur) zum Testen sind z.B.

  • Arduino Bluetooth Terminal
  • BlueTerm
  • Blue Control

Wer für seine Bluetooth Anwendung selbst eine Android-App erstellen will, nimmt als Vorlage am besten das von Google bereitgestellte Beispiel Bluetooth-Chat. Achtung unbedingt die UUID z.B. auf „00001101-0000-1000-8000-00805F9B34FB“ ändern, sonst klappt das Verbinden mit den hier beschriebenen Bluetooth-Chips nicht.

Wer mehr Sicherheit und Eindeutigkeit möchte, sollte den Namen und den Pin-Code seines Bluetooth-Moduls ändern.

Das geht so : Oben genanntes Beispielprogramm zu Softserial auf Baudrate 9600 ändern und uploaden. Bluetooth-Modul anschliessen und den Serialmonitor starten. Jetzt (ganz wichtig !) die Einstellung  „Kein Zeilenende“  wählen.

Folgendes Senden (Das Modul darf z.Zt. keine Bluetooth-Verbindung haben) :

Umschalten auf Kommandomodus:

Senden :         AT

Antwort :         OK

Name (max. 20 Zeichen) z.B. auf „blauerZahn“ setzen:

Senden           AT+NAMEblauerZahn

Antwort :         Oksetname

Pin-Code auf 5678 setzen

Senden :         AT+PIN5678

Antwort :         OKsetPIN

Das vorstehende Beispiel ist nur für den HC-06 Chip gültig ! Die Programmierung eines HC-05-Moduls als Master erfolgt etwas anders.

Um das HC-05 Modul für die automatische Verbindung mit einem anderen Bluetooth-Modul zu programmieren, muß man dessen Geräteadresse kennen. Leider kann man dies Adresse nicht über die o.g. Programmierschnittstelle des HC-06-Moduls abfragen. Die Geräteadresse des HC-06-Moduls muß man z.B. am Tablett bei Geräte suchen, zum Gerätenamen „linvor“ ablesen. Das ist eine 6 Byte lange Hexadezimalzahl z.B. 12:23:34:45:56:67

Zum Konfigurieren des HC05-Moduls wieder das oben genannte Beispielprogramm zum Softserial laden und jetzt die Kommunikation mit dem Softserial-Anschluß des Bluetooth-Modules auf 38400 Baud stellen,  und auf den Arduino uploaden. Wie oben beschrieben das Bluetooth-Modul mit dem Arduino verbinden und zusätzlich den Pin KEY mit +3,3 V verbinden.

Jetzt den USB-Stecker abziehen, ggf vorher am PC den Serial-Monitor schliessen. Das Bluetooth-Modul wird stromlos. Nach kurzer Wartezeit wieder anschliessen. Jetzt bootet auch das Bluetooth-Modul, dabei ist der KEY-Pin auf HIGH und das Modul geht jetzt in den Programmier-Modus. Es stellt dabei die Baudrate automatisch auf  38400 Baud.

Folgendes Senden (Das Modul darf z.Zt. keine Bluetooth-Verbindung haben) :

Kommandomodus einleiten :

Senden :         AT

Antwort :         OK

Partner-Gerät 12:23:34:45:56:67 spezifizieren  (NAP: UAP: LAP- Schreibweise)

Senden :         AT+BIND=1223,34,455667

Antwort :         OK

Einstellung „Mit spezfiziertem Gerät automatisch verbinden“

Senden :         AT+CMODE=0

Antwort :         OK

Rolle als „Master“ setzen

Senden :         AT+ROLE=1

Antwort :         OK

Das wars.

Merkwürdiger Weise benötigt des HC05-Modul zum Verbinden den Pin-Code des Partnergerätes nicht.

Es sei noch erwähnt, das bei dem HC-05-Modul der Pin STATE signalisiert, dass die Bluetooth-Verbindung zum Partnergerät besteht. Am besten diesen Pin mit dem Arduino einlesen und an einem anderen Ausgangspin, eine blaue LED ansteuern. So ist der Verbindungszustand sichtbar und das Bluetooth-Modul wird nicht mit dem Strom für die LED belastet.

Hubert Baumgarten

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.