Versuche mit dem Bluetooth-Modul BTM-222       


Elektronik-Labor  Projekte  AVR 

 

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.





Elektronik-Labor  Projekte  AVR