Still work on it!
Einleitung:
Updates: Ein Update Verlauf befindet sich am im letzten Post.
Ich glaube doch, dass es mehrere Leute interessiert wie die Bluetooth Module HC-05 und HC-06 funktionieren.
Hier geht es ausschließlich um die Hardware Verbindung zwischen Arduino und HC-05/06. In #1 erkläre ich das HC-06 mit einem Slave Code welcher die LED (13) ein und ausschaltet. In #2 möchte ich die wichtisten AT Befehle des HC-05 erklären und wie man eine Koppelung und Verbindung aufbaut. #3 ist noch reserviert da die Smartphone spielt Master Variante auch erklärt werden möchte.
Wie ich es bereits sagte, werde ich das nicht auf einem Schlag hinbekommen. Leider habe ich auch nicht den Ganzen Tag Zeit (muss auch arbeiten). Bitte um Verständnis.
Inhaltsverzeichnis:
- Einleitung
- Hardware und Schaltplan
- Konfigurieren und AT-Befehle
- Arduino HC-05 <-> Arduino HC-06
- Arduino HC-05/06 <-> Android Smartphone
- Arduino HC-05/06 <-> Windows <- Vollständig
Bevor wir allerdings mit unseren Arduino Projekt anfangen können sollten wir uns die Bluetooth Module einmal anschauen und konfigurieren. Dazu brauchen wir im Grunde nur einen FTDI Adapter oder ein Arduino Uno mit einem Serial Passthrough Sketch. Das Arduino Leonardo/Micro kann über Pin0 und Pin1 (Serial1) als 2. Hardware Serial verwendet werden. Serial0 ist die direkte Verbindung über USB.
Anstelle des HC-05 kann man auch ein Smartphone hernehmen und eine Bluetooth Terminal App (die auch so heißen) installieren. Interressant ist hier auch die App Namens Bluetooth Electronics. Damit kann man einen Controller basteln, der sowohl Steuerungsbefehle sendet und Sensor Daten anzeigt.
Das Bluetooth Shield:
... braucht man natürlich nicht unbediengt aber den Spannungsteiler zwischen Arduino Rx und HC-x Tx sehrwohl. Leider findet man immer mehr Schaltpläne ohne Spannungsteiler.
Ich habe mir ein Wing Shield (kann auch ein ProtoSield oder einfach eine Lochrasterplatine sein) genommen und 6-pol. Anschluss drauf gelötet. Damit kann man beide HC-xx Module anschließen und konfigurieren bzw. verwenden.
Schaltplan kommt noch.
Arduino <-> HC-05/06
5V -> Vcc
GND -> GND
Rx <- Tx
Tx -> 5,2kOhm [Rx am HC-05/06] -> 10kOhm -> GND
3,3v -> Hardware Schalter -> EN
Der EN und State Pin ist nur beim HC-05 verfügbar. Wird EN mit 3,3v versorgt ist das Modul im Konfigurations Modus. Das WingShield hat eine zweite LED (rot), diese habe ich mit State verbunden. Leuchtet die rote LED so ist eine Verbindung hergestellt. Wenn man den Pin mit einem Arduino Pin (INPUT) verbindet kann das Arduino, softwareseitig auslesen und "weiß" dass eine Verbindung hergestellt ist.
Die Code Beispiele sind für das Arduino Uno zugeschnitten. Die Code Teile für ein Arduino Leonardo/Micro/Mega (eines mit einer zweiten Hardware Seriellen Schnittstelle hat) sind auskommentiert im Code.
HC-05/HC-06 Konfigurieren - SerialPassthrough
/* HC-05/HC-06 Konfigurieren - SerialPassthrough */
/*
* Das Sketch baut lediglich ein Verbindung zum Bluetooth Modul auf.
*
* Beim HC-06 "kein Zeilenende" im SerialMonitor auswählen. Default Baud: 9600 bps
* Beim HC-05 "Sowohl CR als auch LN" einstellen. Default Baud: 38400 bps
*
* Erster AT Befehl (HC-06): "AT"
* Erwartete Antwort: OK
*
* AT+VERSION version
* AT+NAMEWildCat Oksetname
* AT+PIN1234 Oksetname
* AT+BAUD4 OKsetBAUD4 // 4: 9600 bps ; 6:38400 bps ; 8: 115200
*
* Das Arduino Leonardo/Micro (32u4) braucht die while Schleife (siehe Setup), allerdings
* kein SoftSerial, da eine zweite Serial1 auf Pin 0 und Pin 1 liegt! Serial0 ist USB.
* Am Ende befindet sich ein Serial0 <-> Serial1 Passthrouth Beispiel.
*/
#define BTBAUD 9600 // Die Standard Geschwindigkeit von HC-06
//#define BTBAUD 384000 // Die Standard Geschwindigkeit von HC-05
#define BTRX 2 // SoftSerial RX Pin, wird mit TX am HC-05/06 angeschlossen
#define BTTX 3 // SoftSerial TX Pin
#include <SoftwareSerial.h>
//byte enPin; // Wen man das umschalten zwischen Konfigurieren und "Normal" Softwareseitig lösen möchte. (Siehe Kommentar oben)
//byte statePin; // Der Pin geht auf HIGH wenn eine Verbindung hergestellt wurde.
SoftwareSerial btSerial(BTRX, BTTX); // RX, TX
void setup() {
Serial.begin(38400);
/* Für native USB (zB: Leonardo/Micro)
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
*/
Serial.println(F("Konfigurations Sketch für das HC-05/HC-06 \n\r"));
Serial.println(F("HC-06: \n\r \"Kein Zeilenende\" für das HC-06 einstellen, das HC-06 erwartet \"AT\" und gibt \"OK\" zurück."));
Serial.println(F("HC-05: \n\r \"CR und LN\" für das HC-05 einstellen.")); // oder /r/n anhängen
// Initalisiert die BT Verbindung
btSerial.begin(BTBAUD);
// Hardware Serial (Für Leonardo/Micro/Mega usw.)
// Serial1.begin(BTBAUD); // am besten mit Suchen&Ersetzen alle btSerial durch Serial1 ersetzen.
}
void loop() {
// kein Lokales Echo!!
if (btSerial.available()) {
Serial.write(btSerial.read());
}
if (Serial.available()) {
btSerial.write(Serial.read());
}
/* ##########################################
#
# Hardware Serial
# für das Arduino Leonardo/Micro oder das Arduino MEGA
*/
/*
if (Serial.available()) {
Serial1.write(Serial.read());
}
if (Serial1.available()) {
Serial.write(Serial1.read());
}
*/
}
Das Bluetooth Shield
Grüße,
Donny