Bluetooth Module HC-05: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(38 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Arduino]]
[[Kategorie:Arduino]]
[[Kategorie:Sensoren]]
[[Datei:Bluetooth Modul HC-05.jpg|thumb|rigth|300px|Abb. 1: Bluetooth Modul HC-05]]
[[Datei:Bluetooth Modul HC-05.jpg|thumb|rigth|300px|Abb. 1: Bluetooth Modul HC-05]]
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
Zeile 5: Zeile 6:
= Einleitung =
= Einleitung =


= Spezifikation =
= Technische Übersicht =
Versorgungsspannung: 3,6 V bis 6 V
Leitungen arbeiten mit einer Spannung von 3,3 V
Stromaufnahme: bis zu 40 mA
Klasse 2 - Sendeleistung max. + 6 dBm
Reichweite: bis zu 10 m
Standard: Bluetooth 2.0 + EDR
SPP-Profil mit Einstellmöglichkeit über AT-Befehle
Kommunikation: UART (RX, TX)
Standard-Pairing-Code: 1234
Kleine Abmessungen: 37 x 17 mm
 
== Blinkstatus ==
Status-LED: schnelles Blinken = verbindungsbereit / langsames Blinken = Verbindung hergestellt / Blinken im 2-sek-Takt = AT-Modus
im AT-Modus lässt sich das Modul per Arduino IDE programmieren
 
= Messschaltung =
{| class="wikitable"
{| class="wikitable"
|+ Tabelle 1: Pin-Belegung des HC-05
|+ style = "text-align: left"| Tabelle 1: Bluetooth Modul HC-05 GW-040
! style="font-weight: bold;" | Eigenschaft
! style="font-weight: bold;" | Eigenschaft
! style="font-weight: bold;" | Daten
! style="font-weight: bold;" | Daten
|-
|-
| 1 || EN (NC)
| Name || HC-05
|-
| Versorgungsspannung || 3,6&thinsp;V bis 6&thinsp;V<br>Leitungen arbeiten mit einer Spannung von 3,3&thinsp;V
|-
| Stromaufnahme || bis zu 40&thinsp;mA
|-
| Sendeleistung || Klasse 2 - Sendeleistung max. + 6&thinsp;dBm
|-
| Reichweite|| bis zu 10&thinsp;m
|-
| Standard || Bluetooth 2.0 + EDR
|-
| Kommunikation || UART (RX, TX)
|-
| Standard-Pairing-Code || 1234
|-
| Abmessungen || 37 x 17&thinsp;mm
|-
| Konfiguration || SPP-Profil mit Einstellmöglichkeit über AT-Befehle
|-
| Datenrate|| 9600 bis 38400&thinsp;baud
|}
 
= Anschlussplan =
[[Datei:HC-05-Bluetooth-Module-Pinout-Datasheet-Features-Applications-2.jpg|thumb|rigth|300px|Abb. 2: Pin-Belegung des HC-05]]
[[Datei:HC-05-Bluetooth-Module-Pinout-Datasheet-Features-Applications.jpg.webp|thumb|rigth|300px|Abb. 3: Anschluss des HC-05 an den Arduino]]
{| class="wikitable"
|+ style = "text-align: left"| Tabelle 2: Pin-Belegung des HC-05
! style="font-weight: bold;" | Pin
! style="font-weight: bold;" | Anschluss
! style="font-weight: bold;" | Bemerkung
! style="font-weight: bold;" | Arduino
|-
| 1 || EN/Key || Dient zum Umschalten zwischen Befehls- und Datenmodus. Ein hoher Eingang (3,3 V) versetzt das Modul in den Befehlsmodus und ermöglicht AT-Befehle, während ein niedriger Eingang es in den Datenmodus versetzt.|| NC
|-
| 2 || VCC (3,6&thinsp;V bis 6&thinsp;V)|| || 3,6&thinsp;V oder 5&thinsp;V
|-
| 3 || GND || || GND
|-
| 4|| TXD || Sendet Daten vom HC-05-Modul an ein anderes Gerät. Anschluss an den RX-Pin eines Mikrocontrollers (z.&thinsp;B. Arduino). || RX <- 0
|-
| 5 || RXD || Empfängt Daten von einem anderen Gerät in das HC-05-Modul. Anschluss an den TX-Pin eines Mikrocontrollers. || TX <- 0
|-
| 6 || STATE  || Verbindung zur Status LED || NC
|}
== Blinkstatus/STATE==
* Status-LED: schnelles Blinken = verbindungsbereit
* langsames Blinken = Verbindung hergestellt
* Blinken im 2-sek-Takt = AT-Modus im AT-Modus lässt sich das Modul per Arduino IDE programmieren
 
= Getting Started =
# Programmieren Sie den Arduino. Hierbei darf das BT Modul nicht bestromt sein. (Beispiel: <code>Demo_SoftwareSerial.ino</code>)
# Verkabeln Sie das BT Modul gemäß Abb. 3.
# Bei Spannungsversorgung blinkt die LED auf dem Modul.
# Koppeln Sie das BT Modul mit dem PC (Code: 1234).
# Führen Sie das MATLAB<sup>®</sup>-Skript <code>BluetoothIO.m</code> aus.
# LED 13 sollte im Sekundentakt blinken.
 
= Demo_SoftwareSerial.ino =
Dieses Demo empfängt Daten via Bluetooth und schaltet als visuelles Feedback LED D13 an und aus.
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Demo_SoftwareSerial.ino&thinsp;</strong>
|-
| <source line lang="matlab" style="font-size:medium">#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(0, 1); // RX, TX
 
void setup() {
  mySerial.begin(9600);
  mySerial.println("Hallo vom Bluetooth Modul HC-05");
  pinMode(13,OUTPUT);
}
 
void loop() {
  char Daten;
  if(mySerial.available()) //wenn Daten empfangen werden...     
  {
    Daten=mySerial.read();//..sollen diese ausgelesen werden
 
  if (Daten =='1') //wenn das Bluetooth Modul eine „1“ empfängt..
  {
    digitalWrite(13,HIGH);  //...soll die LED leuchten
  }
  else if (Daten =='0') //wenn das Bluetooth Modul „0“ empfängt...
  {         
    digitalWrite(13,LOW);  //..soll die LED nicht leuchten
  }
  }
}
</source>
|}
'''URL:''' https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/SS2025/Sprint_2/c-files/Demo_SoftwareSerial/Demo_SoftwareSerial.ino
 
= BluetoothIO.m =
Dieses Demo sendet Daten via Bluetooth und schaltet als visuelles Feedback LED D13 an und aus.
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>BluetoothIO.m&thinsp;</strong>
|-
|-
| 2 || VCC ()
| <source line lang="matlab" style="font-size:medium">if ~exist('HC05')
  HC05 = bluetooth("HC-05",1) % Verbindung aufbauen
end
disp('BT zu HC-05 wird aufgebaut...')
 
 
%% Daten lesen
n = HC05.NumBytesAvailable;
if n>0
    Daten = read(HC05,n);
    disp(char(Daten))
end
 
%% Daten schreiben
for i=1:10
    write(HC05,'1');
    disp('LED an')
    pause(1)
    write(HC05,'0');
    disp('LED aus')
    pause(1)
end
 
clear HC05
</source>
|}
'''URL:''' https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/SS2025/Sprint_2/m-files/BluetoothIO.m
 
= Kommunikation via Putty =
[[Datei:Putty TX RX Geräte-Manager.jpg|thumb|rigth|300px|Abb. 4: COM-Port der BT Verbindung zum HC-05]]
[[Datei:Putty TX RX Einstellungen.jpg|thumb|rigth|300px|Abb. 5: Einstellung: Serial]]
[[Datei:Putty TX RX Einstellungen2.jpg|thumb|rigth|300px|Abb. 6: Einstellung: Force on]]
[[Datei:Putty TX RX.jpg|thumb|rigth|300px|Abb. 7: BT Fernsteuerung via Putty]]
 
# Starten Sie Putty
# Schauen Sie im Geräte Manager welchem COM-Port die BT-Verbindung zugeordnet wurde (hier: COM5, vgl. Abb. 4).
# Stellen Sie Putty ein (vgl. Abb. 5 und 6)
# Im Prompt erscheint die Sendemitteilung <code>"Hallo vom Bluetooth Modul HC-05"</code>.
# Senden Sie <code>'1'</code> und <code>'0'</code>, um die LED zu schalten (vgl. Abb. 7).
 
= Demo Versenden (Arduino) und Empfangen (MATLAB) von Fließkommazahlen =
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>DemoSendeFloatSerial.ino&thinsp;</strong>
|-
|-
| 3 || ±1&thinsp;% bei T=25&thinsp;°C
| <source line lang="c" style="font-size:medium">void setup() {
  Serial.begin(9600);
  Serial.println("Hallo vom Bluetooth Modul HC-05");
}
 
void loop() {
  float Datum_f32 = 1234.567;
  Serial.println(Datum_f32);
  delay(1000);
  Serial.println(-Datum_f32);
  delay(1000);
}
</source>
|}
URL: [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSendeFloatSerial/DemoSendeFloatSerial.ino DemoSendeFloatSerial.ino]
 
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>empfangeBluetoothFloat.m&thinsp;</strong>
|-
|-
| 4|| -55&thinsp;°C bis ca. +300&thinsp;°C <br/>
| <source line lang="matlab" style="font-size:medium">if ~exist('HC05')
  HC05 = bluetooth("HC-05",1) % Verbindung aufbauen
  disp('BT zu HC-05 wird aufgebaut...')
else
    disp('Bestehende Verbindung zu HC-05 wird verwendet...')
end
 
nDaten = 100; % Anzahl der Datensätze
i= 0;        % Datenzähler
tic;
%% Bluetooth empfangen
while i<nDaten
    %% Daten lesen
    n = HC05.NumBytesAvailable;
    if n>0
        n
        data = readline(HC05); % Zeile lesen
        if ~isempty(data)
            i = i+1
            floatValue(i) = str2double(data);
            Zeit(i) = toc;
        end
    end
end
</source>
|}
URL: [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSendeFloatSerial/empfangeBluetoothFloat.m empfangeBluetoothFloat.m]
 
= Demo Empfangen (Arduino) und Versenden (MATLAB) von Fließkommazahlen =
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>DemoEmpfangeFloatSerial.ino&thinsp;</strong>
|-
|-
| 5 || B=3950&thinsp;K bei 25&thinsp;°C
| <source line lang="c" style="font-size:medium">void setup() {
  Serial.begin(9600);
  Serial.println("Hallo vom Bluetooth Modul HC-05");
}
 
void loop() {
  float Datum_f32 = 0.0;
  if(Serial.available()) // wenn Daten empfangen werden...     
  {
    Serial.readBytes((char*)&Datum_f32,sizeof(Datum_f32)); // Bytes auslesen
    Serial.print("Empfangen: ");
    Serial.println(Datum_f32,4); // 4 Nachkommastellen
  }
}
</source>
|}
|}
URL: [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoEmpfangeFloatSerial/DemoEmpfangeFloatSerial.ino DemoEmpfangeFloatSerial.ino]


{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>sendeBluetoothFloat.m &thinsp;</strong>
|-
| <source line lang="matlab" style="font-size:medium">if ~exist('HC05')
    disp('BT zu HC-05 wird aufgebaut...')
    HC05 = bluetooth("HC-05",1) % Verbindung aufbauen
else
    disp('Bestehende Verbindung zu HC-05 wird verwendet...')
end


= Demo_SoftwareSerial =
i=0;
Dieses Demo empfängt Daten via Bluetooth und schaltet als visuelles Feedback LED D13 an an und aus.
while i<1000
    i=i+1;
    fDatum = single(i+0.5678)
    %% Daten senden
    % Konvertieren der Float-Zahl in einen Byte-Array
    bytesToSend = typecast(fDatum, 'uint8');


    % Senden der Byte-Daten
    write(HC05, bytesToSend, "uint8");
    pause(0.1)
end
</source>
|}
URL: [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoEmpfangeFloatSerial/sendeBluetoothFloat.m sendeBluetoothFloat.m]


= Nützliche Links =
= Nützliche Links =
* [[Bluetooth Module HC-05 - AT-Modus]]
*[http://shelvin.de/das-bluetooth-modul-hc-05-am-arduino-in-betrieb-nehmen/ das-bluetooth-modul-hc-05-am-arduino-in-betrieb-nehmen]
*[http://shelvin.de/das-bluetooth-modul-hc-05-am-arduino-in-betrieb-nehmen/ das-bluetooth-modul-hc-05-am-arduino-in-betrieb-nehmen]
* [https://www.martyncurrey.com/hc-05-and-hc-06-zs-040-bluetooth-modules-first-look/HC-05 Bluetooth Modul]
* [https://www.martyncurrey.com/hc-05-and-hc-06-zs-040-bluetooth-modules-first-look/HC-05 Bluetooth Modul]
* [https://www.heise.de/blog/Auf-den-Zahn-gefuehlt-3361763.html Bluetooth: Auf den blauen Zahn gefühlt]
* [https://www.heise.de/blog/Auf-den-Zahn-gefuehlt-3361763.html Bluetooth: Auf den blauen Zahn gefühlt]

Aktuelle Version vom 28. Oktober 2025, 11:15 Uhr

Abb. 1: Bluetooth Modul HC-05

Autor: Prof. Dr.-Ing. Schneider

Einleitung

Technische Übersicht

Tabelle 1: Bluetooth Modul HC-05 GW-040
Eigenschaft Daten
Name HC-05
Versorgungsspannung 3,6 V bis 6 V
Leitungen arbeiten mit einer Spannung von 3,3 V
Stromaufnahme bis zu 40 mA
Sendeleistung Klasse 2 - Sendeleistung max. + 6 dBm
Reichweite bis zu 10 m
Standard Bluetooth 2.0 + EDR
Kommunikation UART (RX, TX)
Standard-Pairing-Code 1234
Abmessungen 37 x 17 mm
Konfiguration SPP-Profil mit Einstellmöglichkeit über AT-Befehle
Datenrate 9600 bis 38400 baud

Anschlussplan

Abb. 2: Pin-Belegung des HC-05
Abb. 3: Anschluss des HC-05 an den Arduino
Tabelle 2: Pin-Belegung des HC-05
Pin Anschluss Bemerkung Arduino
1 EN/Key Dient zum Umschalten zwischen Befehls- und Datenmodus. Ein hoher Eingang (3,3 V) versetzt das Modul in den Befehlsmodus und ermöglicht AT-Befehle, während ein niedriger Eingang es in den Datenmodus versetzt. NC
2 VCC (3,6 V bis 6 V) 3,6 V oder 5 V
3 GND GND
4 TXD Sendet Daten vom HC-05-Modul an ein anderes Gerät. Anschluss an den RX-Pin eines Mikrocontrollers (z. B. Arduino). RX <- 0
5 RXD Empfängt Daten von einem anderen Gerät in das HC-05-Modul. Anschluss an den TX-Pin eines Mikrocontrollers. TX <- 0
6 STATE Verbindung zur Status LED NC

Blinkstatus/STATE

  • Status-LED: schnelles Blinken = verbindungsbereit
  • langsames Blinken = Verbindung hergestellt
  • Blinken im 2-sek-Takt = AT-Modus im AT-Modus lässt sich das Modul per Arduino IDE programmieren

Getting Started

  1. Programmieren Sie den Arduino. Hierbei darf das BT Modul nicht bestromt sein. (Beispiel: Demo_SoftwareSerial.ino)
  2. Verkabeln Sie das BT Modul gemäß Abb. 3.
  3. Bei Spannungsversorgung blinkt die LED auf dem Modul.
  4. Koppeln Sie das BT Modul mit dem PC (Code: 1234).
  5. Führen Sie das MATLAB®-Skript BluetoothIO.m aus.
  6. LED 13 sollte im Sekundentakt blinken.

Demo_SoftwareSerial.ino

Dieses Demo empfängt Daten via Bluetooth und schaltet als visuelles Feedback LED D13 an und aus.

URL: https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/SS2025/Sprint_2/c-files/Demo_SoftwareSerial/Demo_SoftwareSerial.ino

BluetoothIO.m

Dieses Demo sendet Daten via Bluetooth und schaltet als visuelles Feedback LED D13 an und aus.

URL: https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/_Semesterordner/SS2025/Sprint_2/m-files/BluetoothIO.m

Kommunikation via Putty

Abb. 4: COM-Port der BT Verbindung zum HC-05
Abb. 5: Einstellung: Serial
Abb. 6: Einstellung: Force on
Abb. 7: BT Fernsteuerung via Putty
  1. Starten Sie Putty
  2. Schauen Sie im Geräte Manager welchem COM-Port die BT-Verbindung zugeordnet wurde (hier: COM5, vgl. Abb. 4).
  3. Stellen Sie Putty ein (vgl. Abb. 5 und 6)
  4. Im Prompt erscheint die Sendemitteilung "Hallo vom Bluetooth Modul HC-05".
  5. Senden Sie '1' und '0', um die LED zu schalten (vgl. Abb. 7).

Demo Versenden (Arduino) und Empfangen (MATLAB) von Fließkommazahlen

URL: DemoSendeFloatSerial.ino

URL: empfangeBluetoothFloat.m

Demo Empfangen (Arduino) und Versenden (MATLAB) von Fließkommazahlen

URL: DemoEmpfangeFloatSerial.ino

URL: sendeBluetoothFloat.m

Nützliche Links