Nr.16 – HC-05 und HC-06 Bluetooth Modul

Mit dem Bluetooth Modul HC-05 ist eine drahtlose Kommunikation zwischen einem Arduino Mikrocontroller und z.B. einem Smartphone oder Laptop möglich. Es können Daten zum Mikrocontroller gesendet aber auch vom Mikrokontroller empfangen werden (Slave und Master). Das HC-06 Bluetooth Modul kann lediglich Daten empfangen (Slave). Diese Anleitung kann mit beiden Modulen verwendet werden. So bieten sich viele verschiedene Möglichkeiten der Nutzung. Für die Verwendung mit dem Smartphone gibt es dazu sehr viele unterschiedliche Apps, zu der jeweils gewünschten Funktion. In diesem Beispiel wird eine LED über eine App auf dem Smartphone an- und ausgeschaltet.

Material: Breadboard, Mikrocontroller ( in diesem Beispiel UNO R3), Bluetooth Modul HC-05 oder HC-06, Kabel, eine rote LED, ein 200 Ω Widerstand

Verkabelung:

Die Verkabelung des HC-05/06 ist ganz einfach :

HC-05/06 → UNO R3

5V          → 3,3 V (NICHT 5V!!)

GND         →GND

TX            → RX

RX            → TX

Dazu wird dann noch eine LED an PIN13 am Mikrocontroller angeschlossen.

Aufbau:

Programmierung:

Achtung ! Beim Hochladen auf den Mikrocontroller muss das Bluetooth Modul herausgenommen werden. Sonst erscheint die Fehlermeldung, dass der Code nicht hochgeladen werden kann. Nach dem Hochladen kann man das Modul wieder einsetzen.

char blueToothVal; //Werte sollen per Bluetooth gesendet werden
char lastValue;   //speichert den letzten Status der LED (on/off) 
 
void setup(){
 Serial.begin(9600);  //serieller Monitor wird gestartet, Baudrate auf 9600 festgelegt
 pinMode(13,OUTPUT);  //PIN 13 wird als Ausgang festgelegt
}
 
void loop(){
  if(Serial.available()) //wenn Daten empfangen werden...      
{
    blueToothVal=Serial.read();//..sollen diese ausgelesen werden
  }
  if (blueToothVal=='1') //wenn das Bluetooth Modul eine „1“ empfängt..
  {
    digitalWrite(13,HIGH);   //...soll die LED leuchten
    if (lastValue!='1') //wenn der letzte empfangene Wert eine „1“ war...
      Serial.println(F("LED is on")); //..soll auf dem Seriellen Monitor „LED is on“ angezeigt werden
    lastValue=blueToothVal;
  }
  else if (blueToothVal=='0') //wenn das Bluetooth Modul „0“ empfängt...
  {           
    digitalWrite(13,LOW);  //..soll die LED nicht leuchten
    if (lastValue!='0')  //wenn der letzte empfangene Wert eine „0“ war...
      Serial.println(F("LED is off")); //..soll auf dem seriellen Monitor „LED is off“ angezeigt werden 
    lastValue=blueToothVal;
  }
 }  

Am Bluetooth Modul HC-05 sollte eine rote LED und an dem Bluetooth Modul HC-06 eine grüne LED, nachdem es wieder eingesteckt wurde, schnell blinken. Das bedeutet, dass es bereit ist sich mit einem anderen Gerät zu verbinden. Also kann nun das Bluetooth Modul mit dem Smartphone verbunden werden. Dazu sucht man in den Bluetooth Einstellungen des Smartphones nach Geräten. Das Bluetooth Modul sollte unter dem Namen HC-05 oder HC-06 gefunden werden. Dann kann man sich mit dem Gerät verbinden. Dazu wird nach einem PIN gefragt. Dieser ist meistens als 1234 voreingestellt.

Zur App auf dem Smartphone:

Wir haben die kostenlose App „Arduino Bluetooth“ von CircuitMagic hier im Google Play Store zu finden https://play.google.com/store/apps/details?id=com.circuitmagic.arduinobluetooth verwendet. 

 

 

 

 

Die Android App ist eigentlich selbsterklärend. Zu beginn kann man sich mit dem Bluetooth Modul durch das Feld Connect“ verbinden. Danach erscheint wie auf dem Screenshot rechts zu sehen ein Eingabefeld und zwei Button. Dort kann man nun entweder durch Drücken der Button oder durch Senden von „1“ oder „0“ durch das Eingabefeld die LED ein- und ausschalten. Fertig ist die Steuerung über das Smartphone.

 

 

 

 

 

Sprachsteuerung mit dem Bluetooth Modul

Um die vielen Möglichkeiten durch das Bluetooth Modul aufzuzeigen haben wir noch ein Beispiel in dem LEDs durch Sprachbefehle ein-und ausgeschaltet werden.

Material: Breadboard, Mikrocontroller ( in diesem Beispiel UNO R3), Bluetooth Modul HC-05 oder HC-06, Kabel, ein weiße, rote, blaue, gelbe und grüne LED, drei 100 Ω Widerstände und zwei 200 Ω Widerstände für die LEDs (siehe 2.1.2.2 Leuchtdioden für Zuordnung der Widerstände zu den LEDs)

Verkabelung: Die Verkabelung unterscheidet sich nicht maßgeblich von der im Beispiel zuvor. Es werden im Prinzip nur vier weitere LEDs hinzugefügt.

Am besten werden erstmal die gleichen farbigen LEDs wie in unserem Beispiel, in der gleichen Reihenfolge wie auf dem Steckplan verwendet, um später Verwechslungen bei den Sprachbefehlen auszuschließen.

Aufbau:

 

Programmierung:

Achtung ! Beim Hochladen auf den Mikrocontroller muss das Bluetooth Modul herausgenommen werden. Sonst erscheint die Fehlermeldung, dass der Code nicht hochgeladen werden kann. Nach dem Hochladen kann man das Modul wieder einsetzen.

 

String voice;
int 
ledweiss = 2, //Die weiße LED mit Pin2 verbinden
ledrot = 3,  //Die rote LED mit Pin3 verbinden
ledblau = 4, //usw….
ledgelb = 5,       
ledgruen = 6;         

void allon(){ //Die Funktion für den Befehl alle LEDs anzuschalten
     digitalWrite(ledweiss, HIGH); 
     digitalWrite(ledrot, HIGH); 
     digitalWrite(ledblau, HIGH); 
     digitalWrite(ledgelb, HIGH); 
     digitalWrite(ledgruen, HIGH); 
}
void alloff(){ //Die Funktion für den Befehl alle LEDs auszuschalten
     digitalWrite(ledweiss, LOW); 
     digitalWrite(ledrot, LOW); 
     digitalWrite(ledblau, LOW); 
     digitalWrite(ledgelb, LOW); 
     digitalWrite(ledgruen, LOW);
}

void setup() {
  Serial.begin(9600);
  pinMode(ledweiss, OUTPUT); //Die Pins mit den LEDs werden als Ausgänge festgelegt 
  pinMode(ledrot, OUTPUT); 
  pinMode(ledblau, OUTPUT); 
  pinMode(ledgelb, OUTPUT); 
  pinMode(ledgruen, OUTPUT); 
}

void loop() {
  while (Serial.available()){ //überprüfen ob lesbare Werte vorhanden sind
  delay(10);         
  char c = Serial.read();     
  if (c == '#') {break;} //“#“ zeigt das ende eines Befehls an, deshalb soll der Loop verlassen werden wenn ein ''#''vorkommt
  voice  = c;   
  }  
  if (voice.length() > 0) {
    Serial.println(voice); 
   //in diesem Abschnitt werden die Befehle den einzelnen Funktionen zugeordnet  

   if(voice == "*alle an") {allon();}//alle Pins sollen angeschaltet werden (vorher festgelegte Funktion allon)             
     else if(voice == "*alle aus"){alloff();} //alle Pins sollen ausgeschaltet werden (vorher festgelegte Funktion alloff)                
  
  //In diesem Abschnitt wird das Einschalten der einzelnen LEDs festgelegt

else if(voice == "*weiß an") {digitalWrite(ledweiss, HIGH);} 
else if(voice == "*rot an") {digitalWrite(ledrot, HIGH);}
else if(voice == "*blau an") {digitalWrite(ledblau, HIGH);}
else if(voice == "*gelb an") {digitalWrite(ledgelb, HIGH);}
else if(voice == "*grün an") {digitalWrite(ledgruen, HIGH);}

 //In diesem Abschnitt wird das Ausschalten der einzelnen LEDs festgelegt

else if(voice == "*weiß aus") {digitalWrite(ledweiss, LOW);} 
else if(voice == "*rot aus") {digitalWrite(ledrot, LOW);}
else if(voice == "*blau aus") {digitalWrite(ledblau, LOW);}
else if(voice == "*gelb aus") {digitalWrite(ledgelb, LOW);}
else if(voice == "*grün aus") {digitalWrite(ledgruen, LOW);}
voice="";}} 
 


Für die Funktion der Sprachsteuerung gibt es wieder eine spezielle App. Wir haben die kostenlose Android App „BT Voice Control für Arduino“ von SimpleLabsIN, unter https://play.google.com/store/apps/details?id=robotspace.simplelabs.amr_voice zu finden, verwendet.

Zur Nutzung der App:

Wieder muss man sich als erstes mit dem Bluetooth Modul verbinden. Das kann man bei dieser App oben rechts unter „Connect Robot“ machen.

Jetzt können auch schon die Befehle gegeben werden. Wenn man die Fläche mit dem Mikrofon auswählt öffnet sich automatisch die Spracherkennung und man kann den gewünschten Befehl sprechen. Das muss möglichst deutlich gemacht werden, damit die App den Befehl richtig versteht und an das Bluetooth Modul weiter geben kann.

Das war ein einfaches Anwendungsbeispiel für die Sprachkontrolle mit dem Bluetooth Modul. Natürlich können die Befehle unterschiedlich variiert und für andere Projekte  verwendet werden. Generell kann das Bluetooth Modul für die unterschiedlichsten Projekte verwendet werden. Im Internet finden sich etliche Möglichkeiten und in den App Stores viele passende Apps dazu. Viel Spaß beim ausprobieren!