Drahtlose Datenübertragung per Bluetooth

Schon vor einigen Jahren ist der Wunsch nach dem kabellosen SX-Handgerät aufgetaucht. Nach dem Motto, So schwierig kann das ja nicht sein, habe ich von Pollin zwei Bausätze für die Hope RF12 Module beschafft. Leider ohne das gewünschte Erfolgserlebnis. Gescheitert bin ich vor allem an dem Problem, das man hat, wenn keine Test und Messmittel zur Verfügung stehen um zu entscheiden, ob Sender oder Empfänger, oder gar beide, den Dienst verweigern.
Jetzt hatte ich wieder Anlass über eine "Funklösung" nachzudenken, den Messwagen für die Länge von Blockstrecken. Ich wusste auch von Anwendungen in Mikrokoptern und Bastelrobotern unter Verwendung der Bluetooth-Technik. Als absoluter Anfänger in Sachen Blauzahn kommt man am Studium der zahlreichen Basisinformationen nicht vorbei. Unter den diversen BT-Profilen befindet sich auch SPP, das SerialPortProfile, für die Übertragung serieller Daten. Ich gehe davon aus, dass die verwendeten BT-Protokolle (RFCOMM, L2CAP,...)für sichere Datenübertragung sorgen und dass man sich quasi um nichts weiter kümmern muss.

Bei der Suche nach Anwendungsbeispielen bin ich rasch fündig geworden, wobei stets das Modul BTM-222 der Fa. Rayson verwendet ist. Neben dem "nackten" Modul bietet Herr Loska in seinem Shop rf-store.com auch quasi anwendungsfertige Platinen an. Das erschien mir wichtig um erste Erfahrungen zu sammeln mit möglichst wenig Chancen auf hausgemachte Fehler. Ergo habe ich ein BCA8-BT222 gekauft, das neben dem BT-Baustein samt Chipantenne, einen Atmel Mega328 enthält, den 3.3 V Spannungsregler und die level shifter 3.3 / 5V für die wichtigen Signale, einschließlich der Atmel ISP-Schnittstelle, fast pinkompatibel zu meinem STK500. Leider wird der Mega nur mit 3,3V betrieben und die Pins für den Quarz (XTAL) sind belegt, sodass nur 8Mhz aus dem internen RC-Oscillator verwendet werden können. Für meine Tests ist das aber ausreichend.


Die Stiftleiste einlöten und schon ist das Modul betriebs- und programmierbereit.

Erster Test mit Erfolgserlebnis:

Gelesen hatte ich im Datenblatt des BTM222, dass das Modul eine default Konfiguration hat, als Slave mit 19200 Bd. Deshalb sollte sofort die Verbindung zum PC via BT-Dongle zu Win7 möglich sein. Auf der 10plg. ISP Stiftleiste des BCA8 liegen auf Pin 8 und 6 die Signale TXD und RXD, die im STK500 GND-Potential haben. Deshalb habe ich im Flachbandkabel die Adern 10, 8, 6 getrennt. Die Versorgungsspannung 5V auf Pin2, GND auf Pin4.
Am PC ist ein ältlicher Belkin BT-Dongle angesteckt, dem ich die Win7 Treiber spendiert habe. In der Statuszeile erscheint das Bluetooth-Icon und nach Click hat man diese Auswahl:



Modul an Spannung legen, und schon kann man "Gerät hinzufügen":



und "Weiter":




Den default Gerätenamen habe ich geändert, den Pincode belassen:



kommt die erfreuliche Meldung:



Nun sollte auch die Kommunikation möglich sein. Welchen virtuellen COM-Port Windows bereitgestellt hat erfährt man mit "Einstellungen öffnen":

So einfach habe ich mir das gewünscht! Wenn man den virtuellen seriellen Port geöffnet hat, geht das Modul in den Status "verbunden" und im einfachsten Fall kann man per Terminalprogramm, z.B. TeraTerm, Daten senden und empfangen. Programmtechnisch ist kein Unterschied ob bei der Datenübertragung eine Kabelverbindung oder die BT-Module verwendet werden.

Erstanwendung mit eigenem Layout:

Gelernt habe ich auch, dass die Konfiguration des BTM222 relativ einfach, aber nur wenn das Modul nicht verbunden ist, via Terminalprogramm und der "AT-Kommandos" zu erledigen ist. Allerdings setzt das voraus, dass die Baudrate des Moduls bekannt ist.(default 19200, 8Bit, 1 Stop, no Par., kein handshake) Die Kommandos sind im Datenblatt ausführlich beschrieben, einen Hinweis auf ein Timing im Kommandmode habe ich nicht gefunden. Für den Betrieb sind nur 5 Anschlüsse notwendig, es ist aber zweckmäßig auch die beiden Ausgänge für die Statusanzeigen zu benutzen. Das Fertigmodul BCA8 und der baugleiche, aber nur teilbestückte BTM222-Adapter, verwendet eine Chipantenne mit 2 Induktivitäten (2,2 nH und 2,7 nH) zur Anpassung. Ich begnüge mich (noch) mit einem ca. 3cm langen Draht als Lambda/4 Antenne ohne die damit mögliche Reichweite zu kennnen.
Das eigene Layout war nötig, weil ich eine Breite von max. 17mm haben wollte. Das BT-Modul ist zum Sandwich aufsteckbar, 5plg. RM 2,54mm.
Die Schaltung ist denkbar einfach:

Die benötigten geringen Abmessungen sind nur mit beidseitig bestückten SMD-Bauteilen zu erreichen. Das größere Problem bei der Herstellung ist das kleine Rastermaß des BTM222 mit 1,25 mm und der fehlende Lötstoplack.



Das Platinchen hat mein Freund Dieter Sekunde angefertigt, zu dessen Werkstatt auch ein Bungard-Nietwerkzeug gehört mit dem er die Vias realisiert hat. Gelötet hat mein Sohn, mit Lupe, Weller Lötnadel, Geduld und ruhiger Hand! Malen konnte ich den Winzling selbst.
Funktioniert hat die Erstanwendung "Spur-N Funk-Messwagen" auf Anhieb wie geplant. Auf der Basisplatine ist neben dem Mega48 ein Recom Schaltregler 0.5A der aus der gleichgerichteten Selectrix Gleisspannung 5V bei ca. 130 mA erzeugt.



BT-Modul Nummero Zwo, RovingNetworks Typ RN41

Erstaunt bin ich über die zahlreichen Anbieter von BT-Modulen und deren Vielfalt. Beim Stöbern habe ich bei data-sphere das RN41 Modul gefunden, das mit integrierter Antenne geliefert wird und noch etwas kleiner als das BTM222 ist. Ein wesentlicher Unterschied ist, dass die Konfiguration über die Bluetooth Verbindung möglich ist. Nach dem Verbinden hat man 1 Minute Zeit per Terminalemulation den Kommandomode mit "$$$" zu aktivieren. Das Modul quittiert mit "CMD". Die Befehlsliste ist inhaltlich vergleichbar mit dem BTM222. RN41 liefert aber sehr einfach eine übersichtliche Auflistung der aktuellen Parameter und aller Kommandos. Obwohl es mit 20€ fast doppelten Preis des BTM222 hat, habe ich eine einseitige Platine dazu gebaut, 16x45mm, und simpler zu bauen.



Wissen muss man, dass im RN41 die handshake-Signale CTS und RTS immer aktiv sind. Deshalb ist es notwendig die Pins dieser Signale zu verbinden, wenn man eine 3-Draht Com hat. (Rx,TX,GND)
Im Kommand-Mode brauchen ausser dem "$$$" alle ein abschliessenden "Return", auch der Ende-
Befehl "---". Das TeraTerm verbunden mit dem RN41-Modul:



Auf "$$$" antwortet das Modul mit "CMD" und die Einstellungen können abgerufen werden.
Mit "---" wird der Kommando-Mode beendet, und die Quittung erfolgt. Wenn am Modul TX und RX verbunden sind und im Teraterm das lokale Echo ausgeschaltet ist, wird das Echo via BT sichtbar:



Ein sehr einfacher Funktionstest ohne zusätzliche Hardware.

Übertragungstest:

Im Mega sind nur wenige Zeilen Pogramm notwendig, Schnittstellen Initialisierung, Sendefunktionen, Interrupt Serviceroutine und ein Array mit Testdaten:








Für den Kommunikationstest habe ich ein C# Programm getippt, für den Abbruf des Teststrings, Zeichenecho und ein Bytearray das einem kompletten SX-Busabbild mit 112 Bytes entspricht:



Wenn Win7 das BTM Modul bereits erkannt hat, ist der ComPort bereitgestellt und kann vom Programm geöffnet und verwendet werden. So einfach ist es, drahtlos serielle Datenübertragung zu benutzen!

Mit diesen Erkenntnissen sollte auch eine Anwendung mit 2 BT-Modulen (Master und Slave) leicht zu realisieren sein. Eine Übung wird ein Funk-Handgerät für SX1 sein, zum Schalten und Fahren ohne "Kabelschlepp".

Jonathan Bohmer, im März 2013