Versuche mit dem
Bluetooth-Modul BTM-222
Das Projekt in Elektor
3/2012
hat mich wieder auf das Thema Bluetooth gestoßen. Dort ging es um
die Steuerung eines AVR-Controllers per Smartphone und
Bluetooth. Vor einiger Zeit hatte ich schon mal erste Versuche
mit
Bluetooth unternommen (siehe Bluetooth-RS232-Adapter
AS519),
die Sache dann aber wieder aus den Augen verloren. Jetzt wollte ich
noch mal richtig durchstarten und habe mir zwei Adapter
BTM-222
bestellt. Eigentlich alles ganz einfach, aber es gab zahlreiche
Fallstricke, und
vor dem ersten richtigen Erfolg lagen viele Stunden und viel Hilfe von
meinem Sohn Fabian.
Test mit STK500
Wie legt man am schnellsten los? Eine große Hilfe war die GPS-Homepage
von Klaus H. Hirschelmann http://www.kh-gps.de/btm222.htm.
Dort konnte ich die Pinbelegung und die nötigen Kommandos finden.
Er verwendet das Modul mit einem RS232-Pegel-Wandler. Ich
dagegen
wollte es direkt mit einem Mikrocontroller verbinden. Man braucht
eigentlich nur fünf Anschlüsse, Masse, zweimal
Betriebsspannung 3,3 V, RXD und TXD. Zusätzlich ein Stückchen
Draht als Antenne. Für den ersten Versuch sollte das STK500
herhalten. Seine Arbeitsspannung wurde auf 3,3 V programmiert. Die
erste Verbindung sollte direkt über den MAX232 auf dem STK500
gehen.
Lötprobleme
Alles kein Problem, dachte
ich zuerst, da reichen ein paar Drähtchen direkt an den halbierten
Platinenaugen am Rand der Platine. Aber da hatte ich die mechanische
Stabilität dieser Anschlüsse überschätzt. An einem
der Anschlüsse muss das Anschlussdrähtchen wohl zu fest
gezogen haben, denn die innere vergoldete Metallfläche löste
sich. Das war genau der Vcc-Anschluss am Pin 17. Man kann den Pin ja
noch am Rand anschließen, dachte ich. Mit dem Terminal konnte ich
allerdings keinen Kontakt zu dem Modul aufnehmen. Nach vielen
vergeblichen Versuchen habe ich dann mal mit dem Ohmmeter nachgemessen
und festgestellt, dass ich überhaupt keine Vcc-Verbindung mehr
hatte. Ganz scharf mit der Lupe hingeschaut: Die Multilayer-Platine hat
offensichtlich eine Vcc-Lage in der Mitte. Da komme ich so leicht nicht
mehr dran.
Terminalverbindung
Also noch mal von vorn
mit dem zweiten Modul, das nun mit größerer Sorgfalt auf
eine Lochrasterplatine gesetzt wurde. Und dann habe es den ersten
Teilerfolg, eine Verbindung zum Terminal.
Man muss es nur auf 19200 Baud einstellen. In der Default-Einstellung
ist das Echo aktiv, alle Zeichen werden also zurückgeschickt.
Trifft man ein gültiges Kommando, kommt die passende Antwort. Der
erste Test lautet AT <Enter>, die Antwort ist OK.
Jetzt
kann man noch alles möglich eingeben und damit irgendwelche
Grundeinstellungen verändern. Aber das kann man auch lassen, denn
am Ende hat sich gezeigt, dass die Default-Einstellungen genau das
sind, was gebraucht wird. Das Modul ist dann ein Slave, der vom PC als
Master kontaktiert werden kann.
Bluetooth-Dongle
Jetzt sollte es ja eigentlich ganz einfach sein:
Bluetooth-Dongle einstecken, Verbindung herstellen, eine virtuelle
COM-Schnittstelle
nutzen. Aber das wollte einfach nicht funktionieren! Was hab ich alles
vermutet! Probleme mit der Stromversorgung, falsche Grundeinstellungen,
vielleicht braucht der Bluetooth-Dongle zu viel Strom um am USB-Hub
betrieben
zu werden, oder vielleicht läuft die ganze Sache völlig anders, als ich
es mir
vorstelle. Also dringender Hilferuf an meinen Sohn, der sich mit
Handys,
Bluetooth-Headsets und solchen Dingen viel besser auskennt. Trotzdem
haben wir
stundenlang herumprobiert, bis alles klar war und so einfach
funktionierte, wie
man es sich eigentlich vorstellt.
Um es kurz zu machen, es gibt zahlreiche Bluetooth-Dienste, darunter
auch das
hier benötigte Serial Port Profile (SPP). Eigentlich hatten wir
gedacht, dass
dies eine Grundfunktion aller Bluetooth-Dongles ist, aber das ist
leider nicht
so. Genau der kleine USB-Adapter (Mitte, schwarz), mit dem zuerst
getestet
wurde, kannte diese Protokoll offensichtlich nicht. Da muss man erst
mal drauf
kommen! Fabian hatte dann noch einen anderen (grau, rechts), mit dem
hat es auf
Anhieb funktioniert. Die Installation war ganz einfach uns
selbsterklärend. Sie
hängt offensichtlich von dem jeweiligen Dongle-Modell
ab. Den blauen
Adapter (links) hatte ich vor längerer Zeit schon mal unter XP
installiert,
aber damit gab es nur Chaos. Ein weiterer Test an Windows 7 verlief
dann auch
mit diesem Adapter erfolgreich.
Der graue Adapter erkennt das BTM-222-Modul unter
XP und bildet zwei neue COM-Schnittstellen, COM56 und COM57 in
Abhängigkeit
davon, ob die Verbindung vom PC oder vom Modul initiiert wurde. Die
hohen COM-Nummern
kommen daher, dass ich schon so viele USB-Adapter neu installiert
hatte.
Für den eigentlichen Test brauche ich jetzt zwei
Terminal-Programme. Eines bedient den Dongle und soll COM56 öffnen. Auf
der
andern Seite (COM1 über STK500 am BTM-222) erscheint eine
CONNECT-Meldung. Dann
kann man auf beiden Seiten Zeichen abschicken, die an der jeweils
anderen Seite
ankommen.
Im verbundenen Zustand werden AT-Kommandos nicht mehr
angenommen, sondern als Text weiter gesendet. Auch Sonderzeichen bzw.
beliebige
Bytes zwischen 0 und 255 kommen unverändert an der anderen Seite an.
Super,
dann steht beliebigen Mikrocontroller-Anwendungen nichts mehr im Wege.
Bluetooth verhält sich tatsächlich so wie ein über Funk verlängertes
RS232-Kabel.
Noch eine spannende Frage: Kann ich an CM56 auch
andere Baudraten verwenden? Ein Test zeigte folgendes: Die Baudrate
konnte zwar
auf 9600 geändert werden. Am seriellen Anschluss des BTM-222 kam aber
trotzdem
19200 Baud an. Was zählt ist also die eingestellte Baudrate des Moduls.
Andere Geräte
Ein Laptop mit eingebautem Bluetooth. funktioniert prima mit
Terminal.exe.
Ein Adroid-Handy mit der von Elektor entwickelten App "Schalten
mit Android und Bluetooth" nimmt sofort Kontakt auf, die
Daten erscheinen wie erwartet.
Die
Bluetooth-Verbindung mit einem Mikrocontroller eröffnet ganz neue
Möglichkeiten. Bluetooth arbeitet auch über etwas größere Entfernungen und
sogar
durch Wände hindurch. Denkbar sind deshalb sogar Aufgaben, die eine
Datenübertragung von außerhalb des Hauses benötigen. Ein mögliches
Anwendungsfeld
wären Wetterstationen, die im Garten aufgestellt werden. Aber auch
Aufgaben wie
die Fernüberwachung der Batteriespannung eines Motorrades oder die
Temperaturüberwachung in einem Gewächshaus sind auf diese Weise lösbar.
Die
weiter unten vorgestellten Lösungen mit dem ES-M32 und der
Bluetooth-Platine
von Modul-Bus vermitteln einen ersten Eindruck.
Bluetooth
am ATmega32 mit 5 V
Während das Bluetooth-Modul mit 3,0 V oder 3,3 V
arbeitet, werden die meisten 8-Bit-Mikrocontroller noch immer mit 5 V
versorgt.
Hier ging es um das ES-M32,
das neben RS232 und USB nun auch noch eine
Bluetooth-Schnittstelle erhalten sollte. Also braucht man einen
zusätzlichen
Spannungsregler. Die unterschiedlichen Pegel an den Datenleitungen TXD
und RXD
lassen sich mit Widerständen anpassen. Der 10-k-Widerstand zum
RX-Eingang BTM-222 sollte den Eingangsstrom
begrenzen. Messungen
zeigen aber, dass die Signalspannung am Eingang trotzdem bei 5 V liegt.
Das
bedeutet, dass der Eingang ohnehin schon 5-V-kompatibel war. Beide
Widerstände
dienen also eher zur Beruhigung der Nerven. Zusätzlich hat das Modul
jetzt noch
eine LED erhalten, die den verbundenen Zustand anzeigt. Ohne diese LED
war es
schwierig, weil die tatsächliche Verbindung andernfalls nicht eindeutig
zu
erkennen war.
Die vier erforderlichen Anschlüsse wurden mit dem
ES-M32 verbunden. Der Test gelang mit dem ASCII-basierten Interface,
das
kürzlich in ELEXS
vorgestellt wurde. Hier worden drei analoge Eingangsspannungen
über die entsprechenden Kommandos abgefragt.
Bluetooth-Platine
von AK Modul-Bus
Die von Modul-Bus entworfene Platine erfüllt zwei
Aufgaben: Zum einen ist sie für den direkten Anschluss an einen
Mikrocontroller
vorgesehen und hat dabei eine Pegelwandlung 3,3 V / 5 V. Ein
3,3-V-Spannungsregler ist auf der Platine, ebenso wie eine integrierte
Antrenne. Der zehnpolige Anschluss ist kompatibel zum STK500 und zum
ES-M32.
Man kann die Platine dafür an der Bruchkante kürzen. Zum anderen ist
die
Platine mit einem RS232-Inverterter und einem DB9-Stecker ausgerüstet
und zum
Anschluss an ein Interface mit RS232 vorgesehen. Die Platine ersetzt in
dem
Fall das COM-Kabel. Die Leerplatine ist auf Anfrage
bei AK-Modul-Bus erhältlich, bestückte Platinen sind in Planung.
Der
Prototyp wurde vollständig bestückt und hat nun beide
Schnittstellen, die alternativ eingesetzt werden können.
Die Pfostensteckbuchse auf der Unterseite passt auf
das STK500. Steckt am sie auf den Port D, erhält die Platine von dort
die
Betriebsspannung 5 V und die Verbindung zu D0/RXD und D1/TXD. Man kann
nun über
Bluetooth mit einem Controller auf dem Board Daten austauschen.
In
der gleichen Weise kann man den Port D auf dem ES-M32 verwenden.
Bluetooth ist dann eine dritte Schnittstelle neben USB und RS232.
Die Platine kann auch direkt an ein Interface wie
CompuLAB, SIOS oder SIOSLAB angeschlossen werden. In dem Fall muss die
Betriebsspannung
5 V entweder extern über den +5-V-Anschluss auf der Bluetooth-Platine
zugeführt
werden, oder man legt im Interface +5 über
eine Diode an den Pin 4
der DB9-Buchse. Im Bereich des DB9-Steckers ist derzeit noch ein Bug
auf der Platine,
der in der zweiten Auflage korrigiert werden soll. In der jetzigen
Version sind
RXD und TXD getauscht, sodass man ein Nullmodemkabel Stecker/Buchse
einsetzen
muss. Es wird noch getestet, ob sich das vielleicht sogar als Vorteil
erweist.
Nun kann z.B. das SIOSLAB im SIOS-Modus mit dem
Terminal angesprochen werden. Auch der MSC-Bootloader wurde erfolgreich
über
Bluetooth verwendet. Die virtuelle Schnittstelle (Ausgehend) wurde in
COM3 umbenannt.
Nachtrag: Betrieb mit DB9-Buchse
Nach längerer Zeit habe ich mal wieder eine Platine aufgebaut. Diesmal mit
einer DB9-Buchse, sodass die Platine an einem normalen DB9-Bverlängerungskabel
direkt vom PC aus gesteuert werden kann. Laut Schaltplan ist die Platine für
einen Stecker (M für Male) ausgelegt. Deshalb mussten die Anschlüsse zum
Stecker umverdrahtet werden. Pin 3 bleibt, Pin 2 und 4 werden getauscht. Und
Pin 5 muss an Masse.
Eine
sinnvolle Alternative ist die Bestückung des DB9-Setckers, wobei dann
für den PC ein Nullmodem-Kabel mit gekreuzten Leitungen RXD/TXD
verwendet werden muss.
Außerdem darf beim Test an einem PC nicht vergessen werden die Betriebsspannung von 5 V anzuschließen.