Picture of Cheap 2-Way Bluetooth Connection Between Arduino and PC
HC-05 to arduino with divider.jpg


In the guide, I will explain how I managed to send data back and forth between a PC and Arduino via a cheap Bluetooth HC-05 transceiver, which can be found for less than $10 on ebay with the breakout board. The version I have used in this project does not have a breakout board so it's little cheaper but  more difficult to solder.  I strongly recommend buying the module with the breakout board. This Bluetooth transceiver basically acts as a generic serial COM port.

The PC to Arduino Bluetooth serial connection can be useful in many applications such as controlling servos, motors, and writing to LCDs. The Arduino to PC connection can be useful in applications where the Arduino reads sensors then pass their values  via serial Bluetooth to a PC for processing. The distance for this transceiver is about 30 feet or so but it really depends on many other variables. This is ideal for indoors projects. 

The only downside of this cheap Bluetooth transceiver is the absence of headers which means you have to solder at least 4 wires. Then there's the absence of power LED as well as no TX/RX LEDs. I did not consider these features a necessity but some of you might want to pay more and get an enhanced version of this transceiver with all of these features.

The Bluetooth serial module I bought has the following specs:

-- Default COM setting: 9600, N, 8,1
-- Default Password/pairing code: 1234.
-- Supports the AT command to modify the baud rate, device name, passkey, master/slave, etc.
-- Supports baud rates 2400 -1382400.
-- Based on the CSR Bluetooth chip BC417143
-- Bluetooth specification v2.0 + EDR
-- Power supply: +3.3VDC 50mA
-- Frequency:  2.4GHz ISM band
-- Modulation:  GFSK(Gaussian Frequency Shift Keying)
-- Emission power:  ≤4dBm, Class 2
-- Sensitivity:  ≤-84dBm at 0.1% BER
-- Speed: Asynchronous:  2.1Mbps(Max) / 160 kbps, Synchronous: 1Mbps/1Mbps
-- Security:  Authentication and encryption
-- Size: 26.9mm x 13mm x 2.2 mm.
-- Working temperature: -20 ~ +75 Centigrade
-- Dimension: 26.9mm x 13mm x 2.2 mm


During my research, I have benefited from many projects on this and related topics. I have listed them in the references section.


1) In a previous project, I used a Pololu Wixel and an Arduino to control a robot remotely from a PC terminal. Here, I will show similar data exchange functionality but without the robot.

2) I also hacked the RF system of cheap wireless car toy and used the Arduino to transmit signals.

1-40 of 61Next »

Is HC-06 works with same steps?

fhovin6 months ago

This worked for me when testing, and installing and pairing worked fine without any errors. The bluetooth device is shown as HC-06 in Windows.

However, connecting to COM7: Standard serial over bluetooth (yes, COM7 is correct), both with tera term and other emulators, nothing happens.

Also, you have this at the end of your tutorial:
"Also make sure the settings are the same for both Bluetooth serial modules. In this case: 9600, N, 8,1"

9600 is correct, as it's the default speed. But where does "N, 8, 1" enter into the picture?

The only configuration options I can find are for the Serial connection in tera term, and they show the following:

Port: COM7
Baud rate: 9600
Data: 8 bit
Parity: none
Stop: 1 bit
Flow control: none

This was done with the USB cable still connected. When I disconnected this, the bluetooth device was still shown as connected and paired on port COM7, but this changed nothing.

Then I tried connecting my Android phone to it, and connection and pairing worked fine. I also ran a bluetooth terminal emulator on the phone, and it was successfull in connecting to the device.

However, sending 1 or 0 from the emulator did nothing, while it worked fine in the Serial monitor in Arduino.

Any ideas?


Just ensure your usb to serial rx is connected to hc05 tx and tx to rx... Opposite config... Should work fine :)
fhovin fhovin6 months ago

In short, it works when testing from the Arduino IDE Serial Monitor, but there's no reaction when connecting the terminal emulator(s) over bluetooth, in Windows or Android. No echo return, and no LED on/off.

Avandetq2 months ago
minhtoan5 months ago
UmarR16 months ago

Can you please explain how to change pairing code using AT commands? I would really appreciate that. Email: umarsalmanrao5@gmail.com THANKS!

Jean0x7BE UmarR16 months ago

It explains how to get to "AT mode" in the PDF.

In case anyone has the same problem I had: the computer was receiving text from the arduino via bluetooth but I could not send text to the arduino from my computer or my phone. The break-out board I was using had a bad connection from the TX of the HC-05. If I bypass the break-out board and attach directly to the HC-05 TX pin everything works.
Hey I too have a same problem cn u pls tell me how to bypass the breakout board connection or jst send me the pics of ur circuit pls on my mail id parasvohra30@gmail.com
mircalex1110 months ago

Good instructions , any idea about how to flash another firmware to this moudle ?

ngrigoriev1 year ago

My voltage on input RX is not hight enough and is about 3.06V instead of 3.33V. I used 1k and 2k resistors and my output 4.13V. So I shouldn't rely on this schematic and do my own calculation...

Very good instructional tutorial fine and working as stated. Thanks for the leading i correct path and android apps. for my future projects. I'm very much grateful to Bidar for his consistent support in this project

Thanks a lott

smaw511 year ago

This came in handy! I had bought one of these a while ago and forgot how to wire it up. It is odd how the tx and rx on the arduino and bluetooth are mixed up, but it's the only way it'll work. And your method of communication is way better than the way I did it in the past!


bstott1 year ago

Hi, Thanks for your work.

A suggestion - Do not use repetitive tinny sounding music. Any verbal is better, even if a different language.

After watching and listening to several videos it becomes grating on the nerves to listen and filter out such noise. And if we turn down the volume - IF - someone begins to speak we my may miss some good instruction.

Abood131 year ago
the BT module appeared in the serial ports menu on tera term but then i get the error "cant open com6" ... although the arduino serial monitor received the serial.println order and the boards rx kight blinks when i send 1 using the monitor but the led dznt work although it works if i switch to the blink led example by ardino website ... any suggestions,?
adrianlu1 year ago
Worked perfectly. Cheers!
n_galia1 year ago
Hai tech.. I would like to ask question,..what if I dont have any 9V battery and I only connected the cable to my PC..the same set-up with your set-up ,the difference is that I will have PC and with the cable wire as the source of the power for my arduino,Will My Bluetooth Module works in this manner?
gr8 tutorial, did you use processing to create the app for android you are using,and is the source code for app available,i want to customise it according to my need. by the way thanx for the tutorial.
bergeo1 year ago
I just got this working using an HC-05 module sold by nyplatform on ebay. It has a built-in regulator and level shifting, and an led to show connection status.

One problem that took me a long time to figure out was that instead of connecting my Arduino RX pin to the module's TX pin, and vice versa, I had to go TX to TX and RX to RX. After I did that everything worked fine.

So wiring to that module is as simple as can be. Just connect like so:
  Arduino module
      TX         TX
      RX         RX
      5V         5V
     GND       GND

No voltage dividers needed. And it has header pins so it plugs right into a breadboard.
settra1 year ago
very nice work. can i ask you. could i, isntead of soldering to dig pins 0,1, do this:
plug usb cable. cut the cables, and solder those cables to the bluetooth??
ronk4rompy2 years ago
can any body explain me what is role of master/slave/slave loop role in hc05 .
bcz when i was use hc 05as master role that could not find by othe BT device .
and can slave mode send data from uc to pc?
plz help me i cant uderstand..
dracorabbid2 years ago
Is the voltage divider needed or can I just plug the bluetooth module into the 3.3v pin of the arduino?
Ignore this, I wasn't paying attention,
thanks sir! It will help me a lot , but can hc-05 Bluetooth module sustain 4V of power supply ???
renefabri2 years ago
Thank you for the video. You helped me. You show how to add a new device in Windows, and at 5 minutes 25 seconds in the video, one can see that "Other Bluetooth Other" is replaced by "HC05 Bluetooth Other". With my system, there was no change. It stayed on "Other Bluetooth Other", and subsequently the device could not be added. So, You made me think my Bluetooth dongle is failing. I tried with another Bluetooth dongle, and, hurray, "Other Bluetooth Other" is changing to something else, i.e. "Linvor Bluetooth Other" in my case. And afterwards, everything is ok.
Hey, thanks for guide. It helped much enough! The only thing that I did not like is, I cant see com ports sometime. I don't know the reason why but when I unplug the power and give it again to the hc05 it becomes normal.
milan.your2 years ago
Thank you very much for the tutorial. I followed all the steps but i was not able to see the COM PORT number for my bluetooth (HC-05), there wasn't anything listed under "Service" inside the properties of the BT. Please suggest me what i can do next.

limbo2 years ago
Great guide. Thanks
cmagro2 years ago
The Problem I have is that I am sending it AT and the BT module SHOULD answer back with OK but nothing happens. If I use my mobile phone, I can see and connect to it easily!

The BT TX is directly going to the Arduino RX however the Arduino TX is going into a 10k resistor, and into the RX of the BT. From here, I connect 20k to ground.

So its like a potential divider, with RX of BT in the middle, 20k at bottom to gnd and 10k at top to Arduino Tx...

chanakyapm2 years ago
ianmcrv2 years ago
I just released my Android software BTInterface I've used this module with a backplane.
Lots of info on my site www.btinterface.com
Please take a look.

jfenwick2 years ago
It turned out that I needed a 2.2K resistor going from the HC-05 TX pin to GND. I suspect the default state either had too much or too little voltage going to the Arduino RX pin.
jfenwick2 years ago
I'm seeing some strange behavior.
I'm using this HC-05 clone:

I hooked up the electronics as shown in your diagrams, except I used an adafruit level shifter instead of resistors.
I'm using a Mac and I'm able to pair with the device.
When I run the sketch that sends counter data, I'm able to open CoolTerm, connect to the HC-05 serial port, and I'm able to receive the data.
However, when I try to run the program where you can turn an LED on with 1 or off with 0, it does not work!
What could I be doing wrong?
ssarantis2 years ago
Hello, when i use the resistor as voltage dividers i receive only random caracters on my computer and if i use it directly it works normal.. i get confused :/
zouzzouz2 years ago
plz i want some help i have bought an hc05 bluetooth module andhave done all the necessary wiring that you have done in the next steps but i am still not having any results when i am searching for the device from a mobile phone or any device. thx
diy_bloke2 years ago
Still dont have this working. My problem seems to be that when I have everything installed, communication over COM3, both the Arduino IDE as well as TeraTerm can't connect to that port because ' it is already in use' yeah, by the bluetooth module I would think, so how do I fix this? I have followed the ibble to the letter
diy_bloke2 years ago
I am quite unknowledgeable about what would be a master or a slave in Bluetooth, but as for now I am even unable to get any type of significant connection and I'd be glad if someone could offer some pointers/help

I have what I believe is the HC06 connected to my Arduino Rx ->Tx and Tx ->Rx
I have a bluetooth dongle on my pc. I easily establish a connection, at least that is wht my computer says, it recognizes the HC06 and comes back with teh device ' linvor'.

But that is it. I have a program running on my arduino at 9600 Baud that basically repeatedly sends the message ' test' to the serial port, but I get nothing on my pc (In the IDE serial monitor or a terminal program that is) and I keep having a flashing LED on my bluetooth HC06 module, whereas I understand it should go on uninterrupted when there is transmission.
What is it I do wrong?
yaly diy_bloke2 years ago
I don't know about the led code thingie but right click on the bluetooth icon in the task bar, click open settings, select com ports tab from the top, click add, select outgoing check box, browse for the module and click ok, you should have a comport installing and close any arduino ide open and reopen it, select the serial port (eg: com 30) from tools drop down menu, now try the testing program again
diy_bloke yaly2 years ago
Your advice brought me a bit further, but not quite there yet.
I have a completly new Win 7 installed. It has bluetooth and it recognizes the module attached to my Arduino.
I follow your description, everything goes well and COm3 is selected as Outgoing (i.e. PC initiates)
I start up the Arduino IDE (also a fresh install)
I select COM3
suddenly get the message ' cant find com3' (or similar words)
I check... com 3 is still present as attached to the Bluetooth module
Any suggestions??

I actually seem to have asimilar problem in UBUNTU :-) there it is connected to rfcomm0 and though I change it in the conf file, I still cant select that, but I already would be ahppy if I got it to work under windows
1-40 of 61Next »