Anschluss eines Bluetooth-Moduls an MultiWii

0

Im Folgenden möchte ich ausführlich erläutern, wie Sie ein Bluetooth-Modul des Typs HC-05 für die Nutzung als Kommunikations-Interface zwischen einem Bluetooth-fähigen Gerät wie beispielsweise einem Smartphone oder PC und der MultiWii-Steuerung herstellen können. Inwieweit sich diese Erläuterungen auf andere Bluetooth-Module übertragen lassen, habe ich nicht getestet, jedoch sollten die Unterschiede nicht allzu groß sein.

Die meisten BT-Module lassen sich im Auslieferungszustand nicht in Verbindung mit der MultiWii-Steuerung verwenden, da diese noch falsch konfiguriert sind. So ist für den Anschluss an die MultiWii die Baud-Rate auf 115200 Bd einzustellen. Zudem kann es sinnvoll sein, dem Modul einen aussagekräftigen Namen zu geben, sodass sie es später beim Verbinden schneller finden.

Die Konfiguration des BT-Moduls erfolgt in den meisten Fällen über eine FTDI-Schnittstelle, d.h. es wird wahlweise ein Computer mit serieller Schnittstelle oder ein USB -> RS 232 Wandler benötigt, mit dessen Hilfe ein virtueller COM-Port emuliert wird. In meinem Fall habe ich in Ermangelung eines entsprechenden Wandlers unten stehenden Code auf einen Arduino Mega 2560 (selbstverständlich kann hierfür auch jeder beliebige andere Arduino verwendet werden) geflasht. Dieser veranlasst den Arduino dazu, als virtueller serieller Datenport zu fungieren. Das bedeutet, Sie können über den Serial-Monitor in der Arduino-IDE mit dem BT-Modul kommunizieren. Hierzu muss das Modul wie folgt an den Arduino angeschlossen werden. Links sind dabei die Pins des BT-Moduls aufgelistet, rechts die entsprechenden Pins des Arduinos.

Vcc -- 3,3V
GND -- GND
RXD -- Arduino PIN 11
TXD -- Arduino PIN 10
KEY -- 3,3V (um den AT-Modus, d.h. den Programmiermodus des BT-Moduls, zu aktivieren)

#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(10, 11);
 
void setup() {
  Serial.begin(38400);
  while(!Serial) {
    ;
  }
 
  Serial.println("Arduino inintialisiert!");
 
  // Software Serial Datenrate
  mySerial.begin(38400);
} 

void loop() {
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

Ein besonderes Augemerk muss an dieser Stelle auf den als “Key” deklarierten Pin des BT-Moduls gelegt werden. Dieser muss vor dem Anschluss der 3,3 Volt-Versorgungspannung des BT-Moduls entweder auf HIGH (3,3 V) oder LOW (GND) gelegt werden. Im ersten Fall wird das BT-Modul in den sogenannten AT-Modus versetzt, in dem die Einstellungen verändert werden können. Im zweiten Fall befindet sich das Modul im Kommunikationmodus, der für die spätere Verbindung und Datenübertragung erforderlich ist.
Ganz konkret bedeutet das, dass Sie zunächst den Key-Pin auf das 3,3 Volt Potential legen und erst danach das BT-Modul an die Versorgungspannung anschließen. Nun sollte sich das Modul im AT-Modus befinden und eine Veränderung der Einstellungen ermöglichen.

Nach dem Flashen des obigen Codes auf den Arduino und Anschluss des BT-Moduls an den Arduino öffnen Sie den Serial-Monitor in der Arduino-IDE und stellen unten rechts “Sowohl NL als auch CR” sowie “Baud 38400″ ein. Die erste Einstellung veranlasst den Serial-Monitor dazu, jeden eingebenen Befehl mit einem Newline- (\n) und Carriage-Return (\r) Steuerzeichen zu versehen, was so vom Hersteller des BT-Moduls vorgesehen ist. Die Baudrate muss auf 38400 Bd gesetzt werden, da das BT-Modul im AT-Modus standardmäßig mit 38400 Bd arbeitet. Dieser Wert ist im Übrigen unabhängig von der tatsächlichen Baud-Rate, die das Modul für die spätere Kommunikation nutzt (standardmäßig auf 9600 Bd eingestellt).
Ist das abgeschlossen, tippen Sie “AT” ein und bestätigen Sie mit einem Klick auf “Senden”. Es sollte nun die Meldung “OK” vom BT-Modul zurückkommen. Ist dies der Fall, geben Sie unten stehenden Befehl ein.

AT+UART=115200,0,0

Dieser stellt die Baud-Rate des BT-Moduls auf den für den Anschluss an die MultiWii-Steuerung benötigten Wert von 115200 Bd ein (die beiden Nullen setzen Paritäts- und Stoppbit). Beachten Sie, dass einige Module hier eine andere Befehlssyntax erfordern. Ein Blick in das Datenblatt des entsprechenden Moduls ist somit unabdingbar.

Mit dem Befehl

AT+NAME=LB-Copter

setzen Sie den Namen des BT-Moduls auf in diesem Fall “LB-Copter”. Natürlich ist jeder andere Zeichenstring möglich.

AT+PSWD=0000

setzt die PIN, den Sie beim späteren Verbinden mit der Steuerung eingeben müssen auf “0000″. Standardmäßig ist die PIN auf “1234″ eingestellt. Ich empfehle hier eine etwas originellere Kombination, wenn Sie nicht wollen, dass ihr mit der MultiWii ausgestattetes Fluggerät Opfer einer Entführung wird.

Über diese drei Befehle hinaus verfügt jedes BT-Modul über einen weitaus größeren Befehlssatz, der jedoch an dieser Stelle nicht weiter erläutert werden soll, da er für die Konfiguration des BT-Moduls in Verbindung mit der MultiWii keine Rolle spielt. Bei Bedarf liefert hier das Datenblatt des Moduls Auskunft.

Nachdem nun das BT-Modul fertig konfiguriert ist, können Sie es an die MultiWii-Platine anschließen. Dabei ist folgende Pin-Konfiguration erforderlich. Wie bereits oben stehen links die Pins des BT-Moduls und in diesem Fall rechts die Pins der MultiWii-Steuerung.

Vcc -- 3,3V
GND -- GND
RXD -- MultWii TX0
TXD -- MultWii RX1
KEY -- GND oder offen lassen (setzt BT-Modul in den Kommunkations-Modus)

Dass RX und TX vertauscht sind, ist im Übrigen kein Fehler, denn die vom BT-Modul gesendeten (TX) Daten müssen schließlich von der Steuerung empfangen (RX) werden. Klingt logisch, birgt jedoch enormes Fehlerpotential. Zudem ist es auch wichtig, dass Sie TX0 und nicht TX1 verwenden, denn andernfalls kommuniziert das BT-Modul nicht mit der MultiWii.

Sind sie bis hierher gekommen, können Sie sich nun mit einem Gerät ihrer Wahl mit der MultiWii-Steuerung verbinden und drahtlos Einstellungen ändern sowie sämtliche Sensordaten während des Fluges aufzeichnen und live übertragen. Ich nutze hierfür beispielsweise die Android-App “MultiWii EZ-GUI”, die zudem einige nette Features wie eine Sprachausgabe mit sich sich bringt. So können Sie sich während des Fluges wichtige Informationen wie zum Beispiel Akkuspannung und Flughöhe in einem einstellbaren Zeitintervall vorlesen lassen. Auch die Einstellung von PID-Werten ist hiermit möglich, sodass man nicht mehr gezwungen ist, ein Notebook mit nach draußen zu nehmen, um den Reglereinstellungen den letzten Feinschliff zu verleihen.

Hinterlasse eine Antwort

Ihre Email-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert.

*

Zu diesem Artikel sind bisher keine freigegebenen Kommentare vorhanden.