Bauteile · 5 Min. Lesezeit

Bluetooth-Modul HC-05: Arduino vom Handy aus steuern

Wie schließt man das Bluetooth-Modul HC-05 an? Pins und Spannungsteiler, Koppeln mit dem Handy, LED- und Relaissteuerung, AT-Befehle, HC-05 vs. HC-06 und HM-10, iPhone-Kompatibilität, ESP32 und Pico.

Das HC-05 ist ein günstiges und sehr verbreitetes Bluetooth-Modul, das Arduino-Projekten eine drahtlose serielle Verbindung verschafft. Damit schaltest du vom Handy aus eine LED ein, eine Lampe über ein Relais an und aus, steuerst ein ferngesteuertes Auto oder schickst Sensordaten aufs Handy. In diesem Artikel siehst du Schritt für Schritt, wie du das HC-05 richtig und sicher anschließt, mit dem Handy koppelst, die ersten Programme schreibst und die AT-Befehle nutzt, mit denen du die Einstellungen des Moduls änderst.

Bluetooth-Modul HC-05 mit Jumperkabeln
Bluetooth-Modul HC-05: Die Zickzack-Leiterbahn oben ist die Antenne, links sitzen 6 Pins: EN, VCC, GND, TXD, RXD und STATE.

Wie funktioniert das HC-05?

Das HC-05 nutzt das SPP (Serial Port Profile) des klassischen Bluetooth und verhält sich wie ein „drahtloses serielles Kabel“. Sobald das Handy gekoppelt und verbunden ist, gelangt jedes vom Handy gesendete Zeichen über den TXD-Pin des Moduls zum Arduino, und alles, was der Arduino an den RXD-Pin schreibt, geht ans Handy. Auf der Arduino-Seite musst du nichts über Bluetooth wissen: Du nutzt Serial.print() und read(), als würdest du mit dem seriellen Monitor sprechen.

EigenschaftWert
Bluetooth-Version2.0 + EDR (klassisch, SPP)
Reichweite~10 m im Freien
Versorgungsspannung3,6–6 V (die Modulplatine hat einen Spannungsregler)
Logikpegel3,3 V
Standard-Baudrate9600 Baud (38400 im AT-Modus)
Standard-PIN1234 oder 0000
RolleMaster und Slave

HC-05, HC-06 und HM-10 im Vergleich

ModulBluetoothRollePinsiPhone
HC-052.0 klassischMaster und Slave6Funktioniert nicht
HC-062.0 klassischNur Slave4Funktioniert nicht
HM-104.0 BLEMaster und Slave6Funktioniert
Bluetooth-Modul HC-06
Bluetooth-Modul HC-06: dem HC-05 sehr ähnlich, aber mit 4 Pins und nur als Slave nutzbar; für die Verbindung mit dem Handy reicht das völlig.
HC-05 und HC-06 funktionieren nicht mit dem iPhone: iOS erlaubt normalen Apps keine klassische serielle Bluetooth-Verbindung. Willst du mit einem iPhone kommunizieren, nimm ein BLE-Modul (Bluetooth Low Energy) wie das HM-10 oder einen ESP32 mit BLE. Android-Handys und Computer verbinden sich problemlos mit dem HC-05.

Pins und Anschluss des HC-05

Das Modul kann mit 5V versorgt werden, weil auf der Platine ein Spannungsregler sitzt, die Datenpins arbeiten aber mit 3,3 V. Das 3,3-V-Signal vom TXD-Pin des HC-05 liest der Arduino problemlos. In der Gegenrichtung solltest du das 5-V-TX-Signal des Arduino nicht direkt an RXD anschließen, sondern einen Spannungsteiler verwenden: Arduino TX → 1 kΩ → RXD, RXD → 2 kΩ → GND. So kommen an RXD etwa 3,3 V an.

HC-05-PinFunktionArduino Uno
EN (KEY)Wechsel in den AT-ModusFrei (3,3 V für den AT-Modus)
VCCVersorgung5V
GNDMasseGND
TXDDatenausgang des ModulsD10 (SoftwareSerial RX)
RXDDateneingang des Moduls (3,3 V)D11, über einen 1-kΩ/2-kΩ-Teiler
STATEHIGH bei bestehender VerbindungFrei oder bei Bedarf ein Eingangspin
Du kannst das HC-05 auch an die Pins 0 und 1 des Uno anschließen, doch diese Pins dienen auch zum Hochladen per USB; mit angeschlossenem Modul schlägt das Hochladen fehl. Mit SoftwareSerial auf den Pins 10 und 11 bleiben Hochladen und serieller Monitor frei.

LED-Zustände und Koppeln mit dem Handy

Wenn du das Modul einschaltest, blinkt seine LED schnell: Es wartet auf eine Verbindung. Suche in den Bluetooth-Einstellungen deines Android-Handys das Gerät „HC-05“ und kopple es mit der PIN 1234 (klappt das nicht, 0000). Das Koppeln allein stellt noch keine Verbindung her; das übernimmt eine Bluetooth-Terminal-App. Steht die Verbindung, blinkt die LED alle 2 Sekunden zweimal kurz. Leuchtet die LED 2 Sekunden und ist 2 Sekunden aus, befindet sich das Modul im AT-Befehlsmodus.

Erste Kommunikation mit dem Handy

Der folgende Code macht den Arduino zur Brücke zwischen Handy und Computer: Jedes Zeichen vom Handy erscheint im seriellen Monitor, und alles, was du im seriellen Monitor eingibst, geht ans Handy. Das ist der beste Start, um die Verbindung zu testen:

Arduino (C++)
1#include <SoftwareSerial.h>
2
3SoftwareSerial bt(10, 11);   // RX, TX → HC-05 TXD, RXD
4
5void setup() {
6  Serial.begin(9600);
7  bt.begin(9600);            // veri modu hızı / data mode baud rate
8}
9
10void loop() {
11  if (bt.available()) {
12    Serial.write(bt.read());   // telefondan bilgisayara / phone to PC
13  }
14  if (Serial.available()) {
15    bt.write(Serial.read());   // bilgisayardan telefona / PC to phone
16  }
17}

Lade den Code hoch und öffne den seriellen Monitor mit 9600 Baud. Verbinde dich auf dem Handy mit einer App aus Google Play wie Serial Bluetooth Terminal mit dem HC-05 und tippe etwas: Der Text erscheint im seriellen Monitor. Was du im seriellen Monitor eingibst, taucht wiederum auf dem Handy auf. Klappt das, stimmen Verbindung, Verkabelung und Baudrate.

LED und Relais vom Handy aus steuern

Jetzt reagieren wir auf die Zeichen vom Handy: Bei 1 geht die LED an, bei 0 aus. Nach jedem Befehl schickt der Arduino außerdem eine Antwort ans Handy:

Arduino (C++)
1#include <SoftwareSerial.h>
2
3SoftwareSerial bt(10, 11);   // RX, TX
4const int LED = 13;
5
6void setup() {
7  pinMode(LED, OUTPUT);
8  bt.begin(9600);
9  bt.println("Ready");
10}
11
12void loop() {
13  if (bt.available()) {
14    char c = bt.read();
15    if (c == '1') {
16      digitalWrite(LED, HIGH);   // LED'i yak / turn the LED on
17      bt.println("LED ON");
18    } else if (c == '0') {
19      digitalWrite(LED, LOW);    // LED'i söndür / turn the LED off
20      bt.println("LED OFF");
21    }
22  }
23}

Viele Bluetooth-Apps lassen dich Tasten beliebige Zeichen zuweisen; so baust du dir auf dem Handy eine kleine Fernbedienung mit „Ein“- und „Aus“-Tasten. Schließt du statt der LED ein Relaismodul an, steuerst du mit demselben Code eine Lampe oder einen Ventilator vom Handy aus. Die Zeichen F, B, L und R für vorwärts, rückwärts, links und rechts an einen L298N-Motortreiber weiterzugeben, ist auch die Grundlage eines Bluetooth-Autos.

Moduleinstellungen per AT-Befehl ändern

Name, PIN und Baudrate des HC-05 änderst du mit AT-Befehlen. Um in den AT-Modus zu gelangen, schalte das Modul ein, während du den kleinen Taster darauf gedrückt hältst (oder den EN-Pin an 3,3 V legst); die LED blinkt dann langsam alle 2 Sekunden. Schreib im Brückencode bt.begin(38400), stell im seriellen Monitor das Zeilenende auf Both NL & CR (NL und CR) und sende die Befehle:

BefehlFunktion
ATVerbindungstest, Antwort OK
AT+NAME=BlueGraysÄndert den sichtbaren Namen des Moduls
AT+PSWD="4321"Ändert die PIN (bei älteren Versionen ohne Anführungszeichen)
AT+UART=9600,0,0Stellt die Baudrate im Datenmodus ein
AT+ROLE=0Macht es zum Slave (mit 1 zum Master)
AT+VERSION?Zeigt die Firmware-Version
AT+ORGLSetzt auf Werkseinstellungen zurück
Bei manchen HC-05-Versionen antworten einige AT-Befehle (zum Beispiel AT+NAME) nur, wenn du beim Senden den Taster gedrückt hältst. Bekommst du auf AT ein OK, auf manche Befehle aber keine Antwort, versuch es mit gedrücktem Taster noch einmal.

Bluetooth mit ESP32 und Raspberry Pi Pico

Der klassische ESP32 hat sowohl klassisches Bluetooth als auch BLE an Bord; mit der Bibliothek BluetoothSerial verbindest du dich ohne HC-05 mit dem Handy. ESP32-S3 und ESP32-C3 unterstützen dagegen nur BLE. Auch der Raspberry Pi Pico W hat Bluetooth eingebaut. Beim normalen Raspberry Pi Pico ohne Bluetooth schließt du das HC-05 an die UART-Pins an; da der Pico mit 3,3 V arbeitet, ist diesmal kein Spannungsteiler nötig. Versorge das Modul über den Pin VBUS (5V):

MicroPython
1from machine import UART, Pin
2
3bt = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))   # GP0 → RXD, GP1 ← TXD
4led = Pin("LED", Pin.OUT)                           # kart üstü LED / onboard LED
5
6while True:
7    if bt.any():
8        c = bt.read(1)
9        if c == b'1':
10            led.on()
11            bt.write(b'LED ON\n')
12        elif c == b'0':
13            led.off()
14            bt.write(b'LED OFF\n')

Projektideen mit dem HC-05

  • Bluetooth-Auto: Ein Roboter mit L298N-Motortreiber und zwei Gleichstrommotoren, gesteuert vom Handy.
  • Smart-Home-Schalter: Lampen und Steckdosen mit einem Relaismodul vom Handy aus schalten.
  • Farbwähler-Lampe: Die Farbe einer RGB-LED mit vom Handy gesendeten Werten einstellen.
  • Drahtlose Sensoranzeige: Temperatur und Luftfeuchtigkeit eines DHT11 ans Terminal auf dem Handy schicken.
  • Roboterarm: Servomotoren mit Schiebereglern auf dem Handy steuern.
  • Zwei Arduinos verbinden: Ein HC-05 als Master, das andere als Slave – und schon fließen Daten drahtlos.

Typische Fehler und ihre Lösungen

  • Das Handy findet das Modul nicht: Du nutzt ein iPhone, das Modul ist mit einem anderen Gerät verbunden oder hängt im AT-Modus.
  • Es kommen wirre Zeichen an: Die Baudraten passen nicht; im Datenmodus sind meist 9600, im AT-Modus 38400 üblich.
  • Keine Antwort auf AT-Befehle: Das Modul ist nicht im AT-Modus, die Baudrate ist nicht 38400 oder als Zeilenende ist nicht Both NL & CR gewählt.
  • Der Code lässt sich nicht hochladen: Das Modul hängt an den Pins 0 und 1; zieh es beim Hochladen ab oder nutze SoftwareSerial.
  • Die Verbindung bricht ab, wenn die Motoren anlaufen: Die Motoren stören die Versorgung; versorge sie aus einer separaten Quelle und setz einen Kondensator an die Versorgung des Moduls.
  • Das Modul ist nach einiger Zeit kaputt: Vermutlich lagen 5 V ohne Teiler am RXD-Pin; nutze immer einen 1-kΩ/2-kΩ-Teiler.

Das HC-05 ist der einfachste Weg, deine kabelgebundenen Projekte drahtlos zu machen; kombinierst du es mit einer Motorsteuerung, kannst du deinen ersten ferngesteuerten Roboter bauen. In der BlueGrays-App findest du ein Bluetooth-Auto mit L298N und einen Roboter, der Hindernissen ausweicht – mit Schaltplänen und Code.

Häufige Fragen

Funktioniert das HC-05 mit dem iPhone?

Nein. iOS erlaubt normalen Apps nicht, die klassische serielle Bluetooth-Verbindung aufzubauen, die HC-05 und HC-06 nutzen. Für das iPhone brauchst du ein BLE-Modul wie das HM-10 oder einen ESP32 mit BLE.

Welche Reichweite hat das HC-05?

Im Freien etwa 10 Meter. Wände, Metallflächen und andere Funkgeräte verkürzen diese Strecke. Im Haus funktioniert es zuverlässig im selben oder im Nachbarraum.

Was unterscheidet HC-05 und HC-06?

Beide nutzen klassisches Bluetooth. Das HC-05 kann Master oder Slave sein und hat 6 Pins; das HC-06 ist nur Slave und hat meist 4 Pins. Für die Verbindung mit dem Handy reichen beide; um zwei Arduinos zu verbinden, brauchst du mindestens ein HC-05.

Wie lautet die Standard-PIN des HC-05?

Bei den meisten Modulen 1234, bei manchen 0000. Im AT-Modus änderst du sie mit dem Befehl AT+PSWD; wenn andere dein Projekt nicht steuern sollen, ist eine neue PIN eine gute Idee.

Können zwei Arduinos über HC-05 miteinander sprechen?

Ja. Mach ein HC-05 mit AT+ROLE=1 zum Master und teile ihm mit dem Befehl AT+BIND die Adresse des anderen Moduls mit; das zweite Modul bleibt Slave. Beim Einschalten verbindet sich der Master automatisch mit dem Slave, und die beiden Arduinos kommunizieren über die serielle Schnittstelle.

Ist ein Spannungsteiler am RXD-Pin wirklich nötig?

Er wird empfohlen. Die Datenpins des HC-05 arbeiten mit 3,3 V; viele Module halten 5 V eine Weile aus, können aber mit der Zeit kaputtgehen. Ein einfacher Teiler aus 1 kΩ und 2 kΩ beseitigt dieses Risiko. Der TXD-Pin braucht keinen Teiler.

Alle Projekte ansehen

Lerne Schritt für Schritt, wie du das Bluetooth-Modul HC-05 sicher an den Arduino anschließt, mit dem Handy koppelst, vom Handy aus eine LED und ein Relais steuerst und Name und PIN per AT-Befehl änderst.