es gibt ein paar Dinge zu beachten, daher hier ein paar Tipps und ein Beispielprogramm:
- Doku Jaspreet: Bluetoothshield DOKU
- Erklärung zum Blootooth Shield
Seminardoku
Seminar – Protokoll Bluetooth Fahrzeug
Blog: http://arduino-os.blogspot.de/
_____________
Handy App: BlueTerm oder „Bluetooth spp pro“
Achtung:
- Wenn das Board beim Laufen noch über USB angeschlossen ist, ist RX0 blockiert!!!!! => auf andere Pins ausweichen (auf Mega Board z.B. RX1 und TX1 (18 und 19)
- Mega Board: Wenn man auf RX1 und TX1 ausweicht, muss man über Serial und Serial1 kommunizieren (d.h.statt blueSerial über Serial1)!
- Das Bluetoothboard mit dem Handy erst pairen, bevor eine Verbindung über die APP aufgebaut werden kann
- Bautrate im Seriellen Monitor: 115200
Basic Code (Arduino Uno)
//geht nicht an RX0 und TX1, da wenn board noch über USB angeschlossen, ist TX0 belegt
#define PIN_SEND 2 //RX am Bluetooth-Shield
#define PIN_RECEIVE 3 //TX am Bluetooth-Shield
#define SPEED_BLUETOOTH 115200
#define SPEED_SERIAL 115200// Includes
#include// Variablen
SoftwareSerial blueSerial(PIN_RECEIVE, PIN_SEND);
char recv; //um den Bytestream von blueSerial in ein Zeichen umzuwandeln
void setup()
{
Serial.begin(SPEED_SERIAL);
Serial.println(„Bluetooth Serial initialisiert“);
// auf seriellen Port horchen
blueSerial.begin(SPEED_BLUETOOTH);
blueSerial.println(„Bluetooth Serial Verbindung hergestellt“);
}
void loop()
{
// Sendet alles, was eingegeben wird.
if (Serial.available()){ //wenn Zeichen vom Seriellen Monitor abgeschickt werden
Serial.println(„S->BT“);
blueSerial.write(Serial.read()); //schreibt etwas vom Seriellen Monitor in die Handy-App
}
// Gibt alles aus, was empfangen wird:
if (blueSerial.available()){ //wenn Zeichen vom Handy empfangen werden
Serial.println(„BT->S“);
recv=blueSerial.read();
Serial.println(recv);
}
}
Basic Code (Arduino Mega)
//geht nicht an RX0 und TX1, da wenn board noch über USB angeschlossen, ist TX0 belegt
#define PIN_SEND 19 //TX1 am Bluetooth-Shield
#define PIN_RECEIVE 18 //RX1 am Bluetooth-Shield
#define SPEED_SERIAL1 115200
#define SPEED_SERIAL 115200// Includes
char recv; //um den Bytestream von blueSerial in ein Zeichen umzuwandeln
void setup()
{
Serial.begin(SPEED_SERIAL);
Serial1.begin(SPEED_SERIAL1);
Serial.println(„Bluetooth Serial initialisiert“);
Serial1.println(„Bluetooth Serial initialisiert“);
}
void loop()
{
// Sendet alles, was eingegeben wird.
if (Serial.available()){ //wenn Zeichen vom Seriellen Monitor abgeschickt werden
Serial.println(„S->BT“);
Serial1.write(Serial.read()); //schreibt etwas vom Seriellen Monitor in die Handy-App
}
// Gibt alles aus, was empfangen wird:
if (Serial1.available()){ //wenn Zeichen vom Handy empfangen werden
Serial.println(„BT->S“);
//auf dem Board empfangene Bytes wieder in einem Zeichen zusammenfassen
recv=Serial1.read();
Serial.println(recv);
}
}
_________________
Noch ein paar Tipps:
- Sobald das Board an Strom angeschlossen ist, erscheint das Board im Suchlauf, der Standardname ist z.B. RN42-4D84 und das benötige Kennwort für die Kopplung ist 1234. Die Verbindungen werden bestätigt durch die led am BT Board, die vorher rot geblinkt hat und nun durchgehend grün leuchtet.
- Ist das Arduino Board an USB angeschlossen, so kann man über die Serielle-Schnittstelle (den seriellen Monitor) Zeichen an das Handy schicken (Serial.available() ist dann true beim Abschicken der Daten). Möchte man Daten vom Handy an das Board schicken, so geht das nur, wenn blueSerial.available() true ergibt. Die Daten werden als Bytestream geschickt und müssen auf dem Board wieder zu einem Zeichen zusammengesetzt werden.
- In der Theorie klappt die Kommunikation zwischen dem Arduino-Board und dem Bluetooth-Board so, dass das BT Board über Bluetooth eben Signale von irgendeiner Quelle bekommt (dem Handy z.B:). An das Arduino Board werden diese Signale über die „searial-Schnittstelle“ geschickt. Für diese gibt es spezielle Anschlüsse am Board(RX(Pin0) & TX (Pin1)). Diese Signale kann man dann weiter auswerten oder sie zbs. über USB Kabel an einem PC in der arduino Programmierumgebung im Serialmonitor anzeigen lassen.
Die Kommunikation funktioniert auch andersrum, dass heißt man kann vom Arduino Signale an einen BT-Empfanger über das BT-Board schicken.
In unserem Fall benutzen wir ein Smartphone als Quelle( wir wollen nur Signale an das Arduno-Board geben und nicht andersrum). - Es gibt verschiedene Apps in verschiedenen Stores (wir benutzen ausschließlich Android-Smartphones, da das Bluetooth bei iPhone ein wenig..komisch bzw anders ist). Wir haben uns für BlueTerm entschieden.
Mit dieser App können mir alle ASCII-Zeichen, dh. alle Zeichen, die es auf normalen Tastaturen gibt, übermitteln. Der Datentyp für diese Zeichen ist char. - Wenn das Programm nicht hochgeladen werden kann, muss eines der Stromführenden Anschlüsse des Bluetoothempfängers abgeschlossen und dann das Programm hochgeladen werden.
Die Baudrate des Arduinos und des Bluetooth müssen auf 115200 gestellt sein. <<
Kommentar verfassen