Bluetooth HC 05 Module Circuit Connection Guide and Wiring Schematic

Connect the HC-05 module using a 3.3V logic level to avoid damaging its Rx/Tx pins. Use a voltage divider (10kΩ and 20kΩ resistors) if interfacing with a 5V microcontroller like Arduino Uno. Power the module from a stable 3.3V–6V source–direct 5V from USB is acceptable, but linear regulators improve reliability.
Wire the HC-05’s EN (enable) pin to VCC for normal operation or toggle it high/low to force AT mode (9600 baud). The Key pin, when pulled high, switches the default baud rate to 38400. Skip this if factory 9600 is sufficient for your application.
For serial communication, link the module’s Tx to the host’s Rx and vice versa–swap these connections at both ends if pairing fails. Keep wires under 10 cm to prevent signal degradation. Ground loops introduce noise; tie all grounds together at a single point near the power source.
Test configuration with a USB-to-TTL adapter before final assembly. Send AT commands via serial monitor to confirm connectivity. Adjust baud rates only after verifying AT mode toggle works–incorrect settings lock the module until re-flashed.
Add a 1µF decoupling capacitor across the HC-05’s power pins to filter high-frequency noise. Isolate noise-sensitive components like microphones or sensors on separate breadboard sections if interference occurs.
HC-05 Practical Integration: Key Connections and Configuration
Connect the HC-05 module to an Arduino or compatible microcontroller using the pins specified below–ensure logic voltage matches (3.3V or 5V tolerant models). For stable pairing, pull the KEY pin high (3.3V) before powering on to enter AT command mode; leave floating for normal operation. Use 115200 baud for AT commands with no parity, 1 stop bit, and hardware flow control disabled unless debugging errors suggest otherwise. Below is the pinout reference for direct connections:
| HC-05 Pin | Target Connection | Function |
|---|---|---|
| VCC | 3.3V–6V (check module specs) | Power input |
| GND | Ground rail | Common reference |
| TXD | Microcontroller RX | Data transmit |
| RXD | Microcontroller TX (via voltage divider if 5V logic) | Data receive |
| KEY | 3.3V (for AT mode) or floating | Mode selection |
| STATE | Optional LED/debug pin | Connection indicator |
After wiring, verify signal integrity with a multimeter–voltage swings on TX/RX should match logic levels (0V/3.3V or 0V/5V). For bi-directional communication, cross-connect TX/RX pins between HC-05 and host (TX→RX, RX→TX). If pairing fails, reset the module by power-cycling while holding KEY high, then send AT+RESET followed by AT+CMODE=1 to allow connections from any address. Store configurations persistently using AT+PSWD (default: 1234) and AT+UART to set baud rate. Avoid PCB traces exceeding 10cm without impedance matching; use 22pF decoupling capacitors near VCC/GND for noise suppression.
Basic Wiring Connections for HC-05 and Microcontroller

Connect the HC-05’s VCC pin to 5V on the microcontroller–ensure the supply is stable, as voltage fluctuations disrupt pairing. Use a 100μF capacitor across the power pins if the module resets unexpectedly. The GND must share a common reference with the microcontroller’s ground to avoid signal corruption. For most boards (Arduino, STM32, ESP32), a direct wire suffices; avoid daisy-chaining through multiple components to prevent ground loops.
Link HC-05 TXD to the microcontroller’s RX pin and RXD to TX. Cross-connections matter–miswiring here inverts serial data, rendering communication silent. For 3.3V microcontrollers (ESP8266, some STM32), insert a voltage divider (two resistors: 1kΩ and 2kΩ) on the TXD line to drop 5V logic to 3.3V. Omit this step only if the microcontroller’s datasheet confirms 5V-tolerant UART pins.
Key Control Pins: EN and STATE
Tie the EN pin to 3.3V for command mode (AT commands) or GND for normal operation. Floating this pin risks erratic behavior–use a 10kΩ pull-down resistor if the module defaults unpredictably. The STATE pin outputs HIGH when connected to a device; monitor it via a GPIO to detect pairing status without polling UART. Avoid relying solely on serial feedback–this signal updates faster and reduces latency.
For rapid prototyping, use jumper wires with DuPont connectors, but replace them with soldered connections in final builds. Breadboards introduce resistance on power rails–if the HC-05 fails to initialize, bypass the breadboard’s power bus with direct wires to the microcontroller’s 5V pin. When flashing firmware or uploading code, disconnect the RX/TX lines to prevent bus contention; reconnect only after serial upload completes.
Additional Considerations for Reliable Operation
Add a momentary pushbutton between EN and GND to force command mode without repowering the module. This simplifies troubleshooting–press the button during startup to enter AT mode. For power-sensitive applications, use a low-dropout regulator (LDO) instead of the microcontroller’s 5V rail, as the HC-05 draws up to 40mA during transmission. Isolate the antenna area with a ground plane to minimize interference from PWM signals or switching power supplies.
Power Supply Requirements and Voltage Regulation for HC-05 Module
The HC-05 Bluetooth module operates within a narrow voltage range of 3.3V to 6V, with 3.6V as the optimal supply level. Exceeding 6V risks permanent damage to internal components, while voltages below 3.3V may cause unstable connections or failed pairing attempts.
For reliable performance, use a 3.3V linear regulator (e.g., AMS1117, LD1117V33) or a low-dropout (LDO) regulator to step down from a 5V source. Series resistors or voltage dividers are not recommended–they introduce noise, reduce current capacity, and fail under load variations. Measure output voltage under load; even a 0.1V drop can disrupt data transmission.
Key Voltage Regulation Considerations
- Input Ripple: Keep AC ripple below 50mV peak-to-peak. Use 10μF ceramic and 100μF electrolytic capacitors in parallel on both input and output of the regulator to suppress noise.
- Current Draw: The HC-05 consumes 30–50mA during pairing and 8–10mA in idle mode. Ensure your regulator delivers at least 200mA to handle transient spikes (e.g., during initial handshake).
- Battery-Powered Setups: Li-ion cells (3.7V nominal) work well but require a TP4056 charging module with over-discharge protection. Alkaline batteries (3×1.5V) may dip below 4.5V under load, causing reset loops.
For microcontroller-based systems (e.g., Arduino), avoid powering the HC-05 from the same 3.3V rail as sensors or SD cards. Instead, dedicate a separate LDO with 1A current capability to prevent brownouts during simultaneous Bluetooth and peripheral activity. Ground loops can corrupt data–tie all ground points to a single star point near the power source.
When using a 5V source (e.g., USB), add a Schottky diode (e.g., 1N5817) in series with the regulator’s input to prevent reverse current. A 22μH inductor before the diode reduces high-frequency noise from switching regulators. For critical applications, a TL431 shunt regulator in parallel with the output provides precise 3.3V reference with ±1% tolerance.
Common Pitfalls and Solutions

-
Problem: Module resets randomly during operation.
Solution: Add a 470μF bulk capacitor across the power pins. Check for insufficient trace width on PCB–1mm width per ampere is the minimum for stable delivery.
-
Problem: Bluetooth pairing fails intermittently.
Solution: Probe the power supply with an oscilloscope. Spikes exceeding 5.5V trigger internal protection circuits. Use a TVS diode (e.g., SMAJ5.0A) rated for 6V breakdown to clamp surges.
-
Problem: Serial data corruption at baud rates above 115200.
Solution: Power traces must have . Replace thin jumper wires with 18AWG or thicker silicone-coated cables. Ground the HC-05’s antenna as close as possible to the module’s ground pin.
Test the setup under worst-case conditions: connect dummy loads (e.g., 10Ω resistor) to simulate peak current draw. If the voltage sags below 3.2V, upgrade the regulator or increase input capacitance. For long-term reliability, monitor board temperature–LDOs dissipate heat; a small heatsink or PCB copper pour acting as a thermal pad prevents thermal throttling.
Configuring HC-05 as Master or Slave Using AT Commands
Connect the HC-05 module to a 3.3V UART interface with 1KΩ and 2KΩ resistors on the TX/RX lines to prevent voltage mismatch. Power the module using a stable 3.3V supply; instability causes erratic AT command responses. Enter command mode by holding the key button (if available) or sending a pulse to the EN pin while powering on. The default baud rate in command mode is 38400; ensure your terminal matches this.
Verify the module’s current role by sending AT+ROLE?. A response of +ROLE:0 confirms slave mode, while +ROLE:1 indicates master. To switch roles, use AT+ROLE=1 for master or AT+ROLE=0 for slave. After setting, reset the module with AT+RESET to apply changes. Master mode requires pairing, so set the target address first.
For master operation, bind the HC-05 to a slave module using AT+BIND=XX,XX,XXXXXX, replacing XX with the slave’s MAC address. Retrieve the slave’s address with AT+INQ from the slave in discoverable mode (AT+DISC). Once bound, use AT+LINK=XX,XX,XXXXXX to establish a connection. Connection attempts fail if the slave isn’t in pairing mode or if the address is incorrect.
Adjust the baud rate for data transmission with AT+UART=9600,0,0 (9600 bps, 1 stop bit, no parity) or other parameters. Confirm changes with AT+UART?. For stable communication, use 9600 bps or 19200 bps; higher rates may cause errors. Reset the module after modifying UART settings to ensure synchronization. Slave modules must use the same baud rate as the master.
Enable or disable authentication with AT+PSWD=XXXXX, where XXXXX is a 4-digit PIN (default is 1234). Slaves reject connections without matching PINs. For testing, disable authentication temporarily (AT+PSWD=0000), but re-enable it for deployment. Check security settings with AT+PSWD?. Pairing fails silently if PINs mismatch, so verify both modules.
Debug connection issues by checking AT+STATE?, which returns +STATE:INITIALIZED or +STATE:PAIRABLE. If stuck in INQUIRING, the slave isn’t discoverable. Clear existing pairings with AT+RMAAD before rebinding. Log command responses in a terminal for troubleshooting; incomplete responses signal power or interference problems.