Für ein aktuelles Projekt verwendete ich zur Fehlersuche ein Bluetooth Modul HC-06 an meiner Schaltung. Doch leider verhielt sich meine Schaltung anders als über das Debuggen über den seriellen Port des Arduinos. Der Fehler lag daran, dass standardmässig das Modul auf eine Baudrate von 9600 eingestellt ist und die Datenübertragung beim Debuggen eben das Programm stark verlangsamt hatte. Deswegen musste ich im HC-06 die Baudrate heraufsetzen.
Da das Bluetooth Modul HC-06 mit einem kleinen ursprünglich aus dem Modemszene bekannten AT-Befehlssatz daherkommt, war meine Lösung ein allgemeines HC-06 Terminal zu erstellen, mit dem man alle Einstellungen am HC-06 Modul vornehmen kann.
Anders als bei meinem kleinen Bluetooth Testprojekt hab ich das Modul diesmal nicht an den standardmässigen Arduino seriellen Port (Pin 0/1) angeschlossen, sondern an zwei beliebige digitale Ports (10/11), weil die anderen Eingänge für die serielle USB Verbindung benötige, über die ich indirket über den PC mit dem Modul kommunizieren möchte.
Die serielle Kommunikation über beliebige digitale IO Ports benötigt die Bibltiothek SoftwareSerial.h. Da diese softwaremässig eine serielle Schnittstelle über den Microprozessor simuliert, ist die Bandbreite auch nicht voll ausreizbar. Laut recherche sollte man weniger als 115200 Baud verwenden. Zunächst hab ich das untere Programm so auf den Arduino übertragen
#include <SoftwareSerial.h>
// Programm HC-06
// load programm to Arduino
// no bluetooth connection to HC-06 Module
// send AT commands over Serial
// mit PUTTY auf Arduino COM verbinden
// kein NL und CR setzen
// AT -> OK
// AT+NAME<Name> -> Oksetname
// AT+PIN<4stellige zahl> -> OKsetPIN
// AT+BAUD<X> -> OK<X>
// X=4 : 9600bps (Default)
// X=6 : 38400bps
// X=7 : 57600bps
// X=8 : 115200bps
/////////////////////////
// HC-06 | Arduino
// TX | D10
// RX | D11
////////////////////////
SoftwareSerial mySerial(10, 11);
void setup() {
Serial.begin(9600);
delay(500);
mySerial.begin(9600);
// mySerial.begin(57600);
delay(500);
Serial.println(„Ready“);
}
void loop()
{
if ( Serial.available() )
{
char a = Serial.read();
mySerial.print(a);
}
if ( mySerial.available() )
{
char a = mySerial.read();
Serial.print(a);
}
}
Nach dem übertragen, hab ich mich mit einem Terminalprogramm (Putty oder Serial Monitor von Arduino IDE) über die serielle USB Schnittstelle mit dem Arduino verbunden. Das serielle Programm sollte so eingestellt sein, dass kein NL und CR gesendet wird. Das HC Modul interpretiert nach 1Sekunde, was ihm geschickt wurde. Wichtig ist auch, dass keine Bluetooth Verbindung zum Modul aufgebaut wird (LED auf dem HC-06 Modul soll blinken).
Zum Test hab ich einfach mal ein „AT“ Kommando abgestzt und ein OK kam zurück. Danach“AT+BAUD7″ abgesetzt, was die Baudrate auf 57600 im Modul setzt. Danach war keine Kommunikation merh möglich. Damit ich wieder mit dem Modul sprechen konnte musst eich im Programm die software serille schnittstelle auch auf 57600 setzen (siehe auskommentierte Zeile im setup() (// mySerial.begin(57600); ). Nach der Baudratenänderung lief meine Debugausgabe in meinen Projekt wieder wie gewohnt und beeinflusste das Programm nicht weiter merklich.