2014
HOME

Steuern mit Bluetooth
Ergänzung zum Buch: RS232-Bluetooth-Adapter.

Adapter mit Bolutek-Bluetooth
Bluetooth-Adapter mit Leiterbahn-Antenne und den bekannten RS232-Anschlüssen. BC04-B Demo Version Bluetooth Wireless Serial Module.
Im Jahr 2001 waren Makros für die serielle Schnittstelle neu. Standard war ein PC mit MS-Office. Heute sind die Mess- und Steueraufgaben etwa gleich, aber die Werkzeuge leichter -, ja mobil.

Bluetooth ersetzt das Kabel und SPP stellt das verbreitete und bekannte RS232-Protokoll drahtlos bereit. Somit verfügt ein Handy/Tablet quasi wieder über eine COM-Schnittstelle - ohne Kabelsalat am Gerät. Ein preiswerter RS232/Bluetooth-Adapter soll in dieser Hinsicht etwas untersucht werden. Mit dem Ziel eine LED per Touch-Geste zu schalten, werden die ersten Schritte unternommen.



Erste Schritte: Auspacken, anschliessen ...

Der sehr preiswerte Adapter ist erstaunlich klein und auf der Platine findet man erstaunlich viel:

  • Mini-USB-Buchse zur Spannungsversorgung
  • Steckplatz für einen Li-Ion-Akku
  • Schiebeschalter für Master/Slave-Betrieb und Off
  • Reset-Taster
  • Max 3221, SMD-Variante
  • Sub-D Stecker 9polig
  • HC-04 Bluetooth-Platine mit Leiterbahnantenne
  • 4 Lötanschlüsse mit VDD, RxD, TxD und GND

Wird die Platine via Mini-USB in Betrieb genommen, so leuchtet eine orange-rote Power-LED, auch bei Schalterstellung Off. Bei Schiebeschalter in Stellung "Slave" blinkt eine blaue LED langsam. Ein angeschlossener RS232-Quick-Tester am Sub-D-Anschluss bleibt jedoch auf allen Leitungen dunkel. Vielleicht hätte man da etwas anderes erwartet.

Bei näherer Betrachtung scheint der Sub-D-Anschluss nicht weiter angeschlossen zu sein, was eventuell Sinn machen könnte, da ja auch ein Kommando-Modus via PC möglich sein soll. Im Netz findet man gerade sehr wenige Informationen zu dem Adapter - ein Datenblatt war nicht dabei.

Mit dem Smartphone findet man im Bluetooth-Bereich ein neues Gerät mit Namen "BOLUTEK". Nach Eingabe der "1234" leuchtet die blaue LED konstant. Die Geräte haben sich gefunden. Das bedeutet, dass zumindest der Bluetooth-Teil reagiert. Auch mit einem PC konnte die Verbindung unter Win7 aufgebaut werden.

Ursprünglich sollte ein altes RS232-Interface Messdaten über ihre Sub-D-Buchse dem Adapter übergeben, der diese dann per Bluetooth an Geräte in der Nähe sendet. Das ging so also erst einmal nicht.


Serieller Test: "HALLO" Prüfen der Funktion
Die 4 Lötanschlüsse VDD, RxD, TxD und GND könnte man ja selber mit dem Stecker verbinden, vorher soll jedoch erst geprüft werden, ob überhaupt Daten fließen. Da der Verbindungsaufbau zu einem Android-Smartphone "extrem-wesentlich" schneller abläuft als zu dem Win7-System hier, soll der Test mit dem GT-N7000 - das erste Galaxy Note - erfolgen.

Im Buch "Messen mit dem Smartphone" ist beschrieben, wie mit einer Bluetooth-Verbindung auf serielle Geräte zugegriffen werden kann. Mit einer leichten Änderung im zweiten Teil des dortigen Listings 'Bluetooth1.bas' ist es möglich mit dem Adapter zu kommunizieren.

Die entsprechenden Programmzeilen rechts zeigen wie das Wort "HALLO" mit BT.WRITE via Bluetooth vom Handy zum Adapter gelangen soll. Eine Variable wird hochgezählt, damit man auf dem Konsolenbildschirm erkennt, dass noch gesendet wird. Bricht die Verbindung ab, so wird irgendwann die Schleife verlassen. Die Pause von 100 ms dient dazu ein schönes Bild auf dem DSO-Quad zu bekommen. Bis zur Zeile BT.DEVICE.NAME device$ sind die Zeilen identisch mit "bluetooth1.bas" in Kapitel 15.

DSO-Quad zeigt HalloDas "Hosentaschenoszilloskop" misst die vier Anschlüsse durch. Dabei zeigt sich ein Pegel von etwa 3 Volt, auch bei VDD. Eine der Datenleitungen zeigt dann aber in der Tat das erwartete Ergebnis. Wie beim Hallo-Test mit dem DSO-Quad erscheinen die Bits im Gänsemarsch auf der Leitung, so wie das bei RS232-Daten und der Voreistellung 9600 Baud sein sollte. Somit funktioniert zumindest die Bluetooth-Abteilung einschließlich der RS232-Umsetzung. Allerdings sind die Pegel etwas weit weg von +/- 12 Volt und auch TTL sieht anders aus.


Serieller Empfänger: Arduino Auf Kommando schalten
Schamatisch: Handy steuert LED
Schematisch: Android-Telefon schaltet per Touch über Bluetooth eine Leuchtdiode am Arduino.
Nachdem die RS232-Funktion getestet wurde, soll nun eine LED per Touch-Geste geschaltet werden.

Im Netz findet man im Januar 2014 eine Lösung mit Arduino und Bluetooth-Adapter. Damit umgeht man zumindest einige Pegelprobleme älterer Hardware wie z.B. PC und Co. Wegen genau dieser Probleme, die es schon beim Arduino-Radio gab, soll zunächst nur gesendet werden.
Mit zwei kleinen Programmen, zwei Drähten und Solarakku wird drahtlos geschaltet bzw. gesteuert. Für das kleine Arduino-Programm braucht man noch einen PC*), für den Rest reicht Basic in der Hosentache ...


Klein und kurz: Das Arduino-Programm

Das Arduino-Programm/Sketch wurde kurzerhand von obiger Quelle übernommen. Es fragt nach seriellen Daten der Form "0" oder "1" und schaltet entsprechend die LED am Pin mit der Nummer LED. Bei 13 ist das die On-Board-LED. Ist das kurze Programm zum Arduino übertragen, so kann im Serial-Monitor der IDE überprüft werden, ob wie gewünscht geschaltet wird, indem "0" und "1" (ohne Anführungszeichen) übertragen werden:

char incomingByte;  // incoming data
int  LED = 13;      // LED pin
 
void setup() {
  Serial.begin(9600); // initialization
  pinMode(LED, OUTPUT);
  Serial.println("Press 1 to LED ON or 0 to LED OFF...");
}
 
void loop() {
  if (Serial.available() > 0) {  // if the data came
    incomingByte = Serial.read(); // read byte
    if(incomingByte == '0') {
       digitalWrite(LED, LOW);  // if 1, switch LED Off
       Serial.println("LED OFF. Press 1 to LED ON!");  // print message
    }
    if(incomingByte == '1') {
       digitalWrite(LED, HIGH); // if 0, switch LED on
       Serial.println("LED ON. Press 0 to LED OFF!");
    }
  }
}

Wenn alles funktioniert, kann der Arduino vom Rechner getrennt werden. Nun noch die zwei Verbindungen zum RS232/Bluetooth-Adapter und beide Geräte mit Spannung versorgen. Das kann auch ein Solarakku mit USB-Anschluss sein, wie beim "Zollstock".


Kurz und klein: Das RFO-Programm

Im Buch "Messen mit dem Smartphone" ist beschrieben, wie mit einer Bluetooth-Verbindung auf serielle Geräte zugegriffen werden kann. Mit einer Änderung im zweiten Teil des dortigen Listings 'Bluetooth1.bas' ist es möglich mit dem Adapter zu kommunizieren und die LED am Arduino via Bluetooth zu schalten. Bis zur Zeile BT.DEVICE.NAME device$ sind die Zeilen identisch mit dem Listing in Kapitel 15.

Das RFO-Programm arbeitet im Grafikmodus, da hier der Touch etwas besser funktioniert als im Konsolenfenster. Zunächst werden einige Dinge initialisiert und die Bildschirmgröße ermittelt. Vor Eintritt in die Hauptschleife wird ein gelber Kreis konstruiert, aber noch nicht angezeigt. Nun wird bei jeder Bildschirmberührung umgeschaltet. Damit der Bildschirm nicht "prellt" sind weitere Touch-Abfragen eingebaut, die in ein Unterprogramm ausgelagert sind. Insgesamt ist das rechte Listing erheblich kürzer als das in oben genannter Quelle.


Zusammenspiel Es funktioniert
Wird das Basic-Programm gestartet, so zeigt Android die gekoppelten Bluetooth-Geräte zur Auswahl. Der Adapter mit dem Namen "BOLUTEK" ist hier die Wahl. Nach einer Weile steht die Verbindung und am Adapter leuchtet die blaue LED konstant. Das Smartphone schaltet in den Grafikmodus und zeigt einen gelben Kreis. Mit BT.WRITE "1" bekommt der Arduino über die RS232-Leitung die "1" weiter gereicht, worauf hin das Arduino-Programm die Leuchtdiode an Pin 13 einschaltet. Nur der Empfang vom Arduino klappt hier noch nicht ... auch nicht mit drei oder mehr Drähten.

Handy steuert LEDDer dritte, orange Draht kam später hinzu und ist die Verbindung Arduino 3,3 V zu VDD-Adapter. Dadurch wird nur noch eine Spannungsquelle benötigt, die den Arduino versorgt. Dieser gibt seine 3,3 Volt an den Adapter weiter. Dann leuchtet nur noch die blaue Leuchtdiode, die Power-LED bleibt aus - sie signalisiert vermutlich nur Spannung am Mikro-USB-Anschluss.

Ein vierter Draht gesellt sich noch hinzu, damit auch die Meldung "Press 1 to LED ON or 0 to LED OFF..." im Arduino-Sketch erscheinen kann.



Pegelprobleme Diode hilft wieder

Der vierte Draht ist nur ein 'halber' Draht - ein Halbleiter. Mit einer Universaldiode (1N4148) - wie schon beim Arduino-Radio - wird das Problem aus der Welt geschafft. In Richtung Arduino geschaltet (Pin 1) klappt nun auch die Kommunikation in beiden Richtungen.

Die Überprüfung erfolgt diesmal in einem der vielen Bluetooth-Terminal-Programme, die es inzwischen in Play-Store gibt. Das "Bluetooth-Terminal" eignet sich gut für diesen schnellen Testlauf. Mit der Tastatur können Zeichen (Ascii) oder Hexadezimalwerte eingegeben und gesendet werden.

Mit "1" schaltet die LED an, mit "0" wieder aus. Die entsprechende Meldung vom Arduino wird nun auch endlich angezeigt. Wird in den HEX-Modus umgeschaltet, können auch Bytes gesendet werden, die nicht im Ascii-Bereich liegen. Da dann eine "1" einer 31 entspricht, schaltet dieser Wert nun die LED an. Das Terminal stellt auch die Antwort hexadezimal dar. Die 30 entspricht dann der "0" und schaltet aus.




Schalten mit Play-Store-Apps

Aus derselben Feder, wie das "Bluetooth-Terminal" stammt die Applikation "Bluetooth-Serial". Diese App beinhaltet ebenfalls die Terminalfunktion, kann aber zusätzlich sehr einfach und ohne Programmierkenntnisse bis zu 25 Schalter frei verwalten. Einstellbar sind z.B.:

  • Größe
  • Sichtbarkeit
  • Text
  • Sendekommando

Für einfache Steuerungen könnte das reichen. Zumindest bekam das Arduino-Radio einige Sendertasten ... Das Ergebnis hier gleicht dem der Quelle, nur mit anderen Mitteln realisiert.


*) Stimmt so nicht ganz. Später mehr ...

Weitere Software
.
Startseite Bücher Software Digital TV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt