sitemap link mailform link home

Steuerung per Bluetooth

Die HC-05- bzw. HC-06-Bluetooth-Module haben sich zum de-facto-Standard entwickelt, wenn es darum geht, den Arduino per Bluetooth zu steuern. Dazu werden von einer Android-App (Smartphone oder Tablet) einzelne Zeichen via Bluetooth gesendet und vom HC-05-Modul empfangen und an den RXD-Eingang des Arduino übertragen. Die ankommenden Zeichen werden mittels Serial.read() direkt eingelesen und als Befehle interpretiert.

Im folgenden Beispiel schaltet das Zeichen "1" eine LED ein und das Zeichen "0" schaltet die LED wieder aus.

Aufbau

HC-05-Module sollten (nach meinen Versuchen mit dem kompatiblen JDY-30) am Arduino UNO R3 mit 5V Vcc betrieben werden.

Bei RXD und TXD steht nun ganz deutich "Level 3,3 V". Dies führt oft zu Verwirrungen. Streng genommen benötigt man also für beide Pins Spannungswandler?

Nein - nur für RXD!

HC-05

Abbildung: Das Bluetooth-Modul HC-05 / FC-114

Sobald man Vcc des HC-05 mit 5V versorgt liegt am Ausgangs-Pin TXD automatisch HIGH-Pegel 5V an.
Das ist für den Arduino UNO R3 perfekt, da dessen Pegel für die Pins 0 bis 13 ja mit 5V definiert sind.

Allerdings "verträgt" der Pin RXD des HC-05 nur 3,3 V. Hier benötigt man also einen einfachen Spannungsteiler aus zwei einfachen Widerständen:

fritzing-Plan

Ich verwende übrigens kein originales HC-05-Modul sondern ein Modul mit dem Namen JDY-30.
Es scheint mit dem HC-05 aber vollständig kompatibel zu sein. Die Anschlussbelegung ist identisch.

Man kann das JDY-30 über Ebay für ca. 5 € bestellen. Ähnliche oder gleiche Module gibt es für ca. 2 € aus China mit ca. 6 - 8 Wochen Lieferzeit: "CC2540 CC2541 HM-10 BLE Bluetooth 4.0 Serial Kabellos Modul for Arduino". Bevor man große Menge davon bestellt sollte man aber mal eines testen... Wink

JDY-30 Ebay

Allerdings steht der Name "JDY-30" auf meinem Modul gar nicht drauf. Dieser Name wird aber im Android-Smartphone angezeigt, sobald man "Bluetooth" in den "Einstellungen" aktiviert.

Der folgende Arduino-Sketch kann übrigens nur hochgeladen werden, wenn das Bluetooth-Modul entfernt wurde!

// LED per Bluetooth schalten
// HC05 oder kompatiblen JDY-30 verwenden!
// Quelle: https://funduino.de/tutorial-hc-05-und-hc-06-bluetooth
// Quelle Schaltplan mit Spannungsteiler:
// http://www.martyncurrey.com/arduino-with-hc-05-bluetooth-module-in-slave-mode/
//
// JDY-30 -> VCC an 5 Volt des Arduino
// JDY-30 -> GND -> GND
// JDY-30 -> TX -> RXD Arduino
// JDY-30 -> RX über Spannungsteiler an TXD des Arduino
// JDY-30 -> STATE-LED - Bluetooth-Connection bei Dauerleuchten!
// -> hier kann eine LED angeschlossen werden
//
// JDY-30 -> EN -> Für das Ändern der Einstellungen des JDY-30

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
 Serial.println("Zeichen uebertragen");
}
 
void loop(){
  if(Serial.available()) //wenn Daten empfangen werden...     
  {
    blueToothVal=Serial.read();//..sollen diese ausgelesen werden
     digitalWrite(13,HIGH);
  }
  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("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("LED is off"); //..soll auf dem seriellen Monitor „LED is off“ angezeigt werden
    lastValue=blueToothVal;
  }
 }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Meine Quellen für diesen Artikel:

Externer Link  Anleitung bei Funduino (deutsch) -> Schaltplan fehlerhaft, Sketch-Quellcode okay

Externer Link  Hier findet man den korrekten Stromlaufplan für 5V-Arduinos (z.B. Arduino UNO)

Herstellen der Bluetooth-Connection mit dem Android-Smartphone

Nun benötigen wir natürlich noch eine App auf dem Android-Smartphone, mit der Bluetooth-Befehle gesendet werden können. Zuerst wollen wir aber schon einmal eine Bluetooth-Verbindung mit unserem HC-05 / JDY-30-Modul herstellen.

  • In den "Einstellungen" von Android muss "Bluetooth" eingeschaltet werden.
  • Noch einmal auf Bluetooth klicken und die verfügbaren Bluetooth-Geräte werden angezeigt.
  • Auf HC-05 bzw. JDY-30 klicken -> Meldung: "Kopplung läuft".
  • Nun muss eine Pin (meist 1234) eingegeben werden.
  • Dann erscheint unser Gerät unter "Pairing-Geräte".
  • Die Verbindung steht dann schon einmal.

Bluetooth JDY-30

Default-Settings des HC-05 und JDY-30:

– Name = HC-05 bzw. JDY-30
– Password = 1234
– Baud rate in communication mode = 9600*
– Baud rate in AT/Command mode = 38400

Bluetooth-App zum Senden von Zeichen an den Arduino

Für den Anfang habe ich nun im Google Playstore die App "Arduino Bluetooth Controller" ausgewählt und installiert. Man kann damit im "Switch-Modus" z.B. eine "1" bzw. eine "0" senden, um die LED ein- und auszuschalten:

Externer Link  https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor

Aber auch jede andere Bluetooth-Terminal-App kann verwendet werden:

Externer Link https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal

Der nächste Schritt wäre nun, eine eigene Android-App zu entwickeln...

Hier wird ausführlich beschrieben, wie man mit Eclipse und Java JDK eigene Apps entwickeln und testen kann:

Externer Link http://greenitsolutions.at/android-eclipse-sdk-adt-turorial-deutsch/

.

Letzte Änderung:
August 13. 2018 09:54:44
«    top    »