Nanfeng

Notes on software development, code, and curious ideas

Connecting Two HC-05 Bluetooth Modules

An HC-05 module has a command mode for configuration and a data mode for transparent serial communication. To link two modules automatically, configure one as a slave and the other as a master bound to the slave’s address.

HC-05 breakout boards vary. Confirm the board’s supply input, logic levels, KEY/EN pin behavior, AT-mode baud rate, and firmware command set before wiring. The module’s UART logic is typically 3.3 V; protect its RX input when the controller transmits 5 V logic.

Configure the slave

Enter full AT mode according to the board documentation, open a serial terminal with the required line ending, and verify communication:

1
2
3
4
5
6
7
AT
AT+ORGL
AT+ROLE=0
AT+NAME=HC05_SLAVE
AT+PSWD=1234
AT+UART=9600,0,0
AT+ADDR?

Record the returned Bluetooth address. Command punctuation differs between firmware variants.

Configure the master

Reset the second module and set master behavior:

1
2
3
4
5
6
AT
AT+ORGL
AT+ROLE=1
AT+CMODE=0
AT+BIND=address_from_slave
AT+UART=9600,0,0

Some firmware expects commas instead of colons in the bound address. Use AT+VERSION? and the module’s matching command manual rather than assuming every clone behaves identically.

Test data mode

Power-cycle both boards without the AT-mode condition. Their status LEDs should eventually indicate a link. Connect each UART to a separate serial terminal at the configured data baud rate; bytes typed on one side should appear on the other.

If pairing fails, check shared ground, TX/RX crossover, logic voltage, matching baud settings, slave address syntax, PIN, master connection mode, and adequate power. HC-05 implements Bluetooth Classic serial-port behavior, not BLE, and support on phones—especially iOS—depends on the intended profile and platform policy.

+