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

Inhaltsverzeichnis

Bluetooth Modul HC-05 und HC-06 mit Arduino verwenden

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 Mikrocontroller empfangen werden. Der Unterschied zwischen den Modulen HC-05 und HC-06 besteht darin, dass das HC-05 Modul sowohl als „master“, als auch als „slave“ betrieben werden kann. Das HC-06 Modul kann nur als „slave“ betrieben werden. Das bedeutet, dass das HC-06 Bluetooth Modul nur eine Verbindung von einem anderen Gerät annehmen kann, während das HC-05 Modul auch eine Verbindung zu einem anderen Gerät herstellen kann. Diese Anleitung kann mit beiden Modulen verwendet werden. 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.

Der Schaltplan

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

  • HC-05/06 → UNO R3
  • +5V → 3,3 V
  • GND → GND
  • TX → RX
  • RX → TX

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

Der Programmcode

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 keine „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 keine „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.

Sprachsteuerung mit dem HC-05 Bluetooth Modul

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

Der Schaltplan

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 erst einmal 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.

Der Programmcode

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, verwendet.

Erklärung der App "BT Voice Control for Arduino"

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!

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE