Bluetooth Module HC-05: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 151: Zeile 151:
= Versenden und Empfangen von Fließkommazahlen =
= Versenden und Empfangen von Fließkommazahlen =
Der einfachste Weg Fließkommazahlen zu versenden ist als  
Der einfachste Weg Fließkommazahlen zu versenden ist als  
 
<source line lang="matlab" style="font-size:medium">
% Angenommen, b ist Ihr Bluetooth-Objekt, das mit dem Arduino verbunden ist
% Angenommen, b ist Ihr Bluetooth-Objekt, das mit dem Arduino verbunden ist
% Beispiel eines Floats, den wir senden wollen
% Beispiel eines Floats, den wir senden wollen
Zeile 161: Zeile 161:
% Senden Sie das Byte-Array
% Senden Sie das Byte-Array
fwrite(b, bytesToSend, 'uint8');
fwrite(b, bytesToSend, 'uint8');
</source>
<source line lang="matlab" style="font-size:medium">cpp
// Arduino Sketch zum Empfangen eines Float-Werts
float receivedFloat = 0.0;  // Variable, um den empfangenen Float zu speichern
byte byteArray[4];          // Array zum Speichern der Byte-Daten
void setup() {
  // Seriellen Port initialisieren
  Serial.begin(9600); // Stellen Sie sicher, dass die Baudrate der von MATLAB entspricht
}
void loop() {
  // Überprüfen, ob 4 Bytes verfügbar sind (Größe eines Floats)
  if(Serial.available() >= 4) {
    // Lesen Sie die 4 Bytes in das byteArray
    for(int i = 0; i < 4; i++) {
      byteArray[i] = Serial.read();
    }
    // Konvertiert das ByteArray zurück in einen Float
    receivedFloat = *((float*)byteArray);


    // Verarbeiten Sie den Float-Wert (Beispiel: Ausgabe in der seriellen Konsole)
    Serial.print("Empfangener Float-Wert: ");
    Serial.println(receivedFloat, 6); // Anzeigen mit 6 Nachkommastellen
  }
}
</source>
= Nützliche Links =
= Nützliche Links =
*[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]

Version vom 23. Mai 2025, 11:40 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).

Versenden und Empfangen von Fließkommazahlen

Der einfachste Weg Fließkommazahlen zu versenden ist als

% Angenommen, b ist Ihr Bluetooth-Objekt, das mit dem Arduino verbunden ist
% Beispiel eines Floats, den wir senden wollen
floatVal = 123.456;

% Wandeln Sie den Float in ein Byte-Array um
bytesToSend = typecast(single(floatVal), 'uint8');

% Senden Sie das Byte-Array
fwrite(b, bytesToSend, 'uint8');
cpp
// Arduino Sketch zum Empfangen eines Float-Werts

float receivedFloat = 0.0;   // Variable, um den empfangenen Float zu speichern
byte byteArray[4];           // Array zum Speichern der Byte-Daten

void setup() {
  // Seriellen Port initialisieren
  Serial.begin(9600); // Stellen Sie sicher, dass die Baudrate der von MATLAB entspricht
}

void loop() {
  // Überprüfen, ob 4 Bytes verfügbar sind (Größe eines Floats)
  if(Serial.available() >= 4) {
    // Lesen Sie die 4 Bytes in das byteArray
    for(int i = 0; i < 4; i++) {
      byteArray[i] = Serial.read();
    }

    // Konvertiert das ByteArray zurück in einen Float
    receivedFloat = *((float*)byteArray);

    // Verarbeiten Sie den Float-Wert (Beispiel: Ausgabe in der seriellen Konsole)
    Serial.print("Empfangener Float-Wert: ");
    Serial.println(receivedFloat, 6); // Anzeigen mit 6 Nachkommastellen
  }
}

Nützliche Links