INTRODUCTION
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
CREDITS
During my research, I have benefited from many projects on this and related topics. I have listed them in the references section.
RELATED PROJECTS
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.
Remove these ads by
Signing UpStep 1: The parts list
-- Arduino Uno (R2) or clone.
-- Bluetooth serial transceiver connected to Arduino. I got one from Ebay with the BlueCore4 chipset. Search Ebay for Wireless Bluetooth Transceiver Module RS232 / TTL.
-- Bluetooth USB dongle to be connected to PC. I used an old MSI pc2pc Bluetooth as well as a Bollionton Bluetooth USB dongles and both worked fine.
-- The 1.2K Ohms & 2.2K Ohms resistors will be used as voltage dividers to drop the Arduino's 5V to about 3.3V. You can substitute these with 10K Ohms & 20K Ohms resistors. If you know how to calculate voltage dividers, feel free to use other values for your resistors.
-- Breadboard and jumper wires.
-- Power source. I used a 9V battery.
-- Any PC that supports Arduino IDE will be needed to program the Arduino microcontroller.
-- Most PCs and smartphone w/Bluetooth and a terminal emulator can be used to control the Arduino.
SOFTWARE
-- Windows 7 64-bit. But this should work on other platforms supported by the Arduino IDE.
-- Arduino IDE 1.0
-- Tera Term Pro terminal emulator but other similar emulators should work.
-- Tera Term by the original author of the software










































Visit Our Store »
Go Pro Today »



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.
Thanks,
Milan
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...
Lots of info on my site www.btinterface.com
Please take a look.
ian
I'm using this HC-05 clone:
http://www.lctech-inc.com/Hardware/Detail.aspx?id=25662aa3-0517-4d3d-960e-ff261d5ef28c
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?
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?
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
My computer finds the module it hets assigned a com port, but I dont get anything on it
I guess I just have to try it again step by step when I am back on windows. On Linux now and the same problem
I'll just have to wait till I got windows installed again and try again, maybe I overlooked something
I have no idea why this all started working as it should for me, i must have started from scratch building this circuit up on my breadboard well-over 30 times and now im finally getting the arduino counting onto terra term and also the pin-13 LED on/off sketch is working as it should !
Once again thanks for the instructable !!!
many many thanks in advance for any help
thanks for the GREAT instructable - ive just dived into the Arduino world and loving it !
i have a few of these bluetooth modules, not sure about what firmware they are or if they are slave or master but thats not what i need help with lol !
Please would you be able to tell me why i keep getting a load of writing keep being sent to my terraterm monitor from the Arduino please?
the thing is, i have your Pin-13 sketch loaded up and its sending this stuff:
¿-¿ass
åë_¿¿!¿¿}-#!¿-#¿¿guw¿ac¿!¿¿!¿¿-¿ass
åë_¿¿!¿¿}-#!¿-#¿¿guw¿ac¿!¿¿!¿¿-¿ass
åë_¿¿!¿¿}-#
Im not quite sure what ive done wrong as ive connected it up as per your instructable and cant seem to get this sketch to turn on the pin-13 LED when i enter either 1 or 0 in terraterm because the Arduino is sending that above repeating line to my serial terminal !
Please please help !
i know this is an old post but ive got all this setup on my desk and it took hours to get this far, i would really appreciate some enlightenment on this if you would know whats going on here, please please help
Many thanks in advance !
I resume the firmwares:
HC-05: master / slave mode, programmable via AT commands.
HC-06 (or Linvor 1.5): only slave mode
I think there is other HC-06 fixed for master mode, so, two different HC-06 firmwares and FIXED for master or slave: you can't change the mode.
HC-03 and HC-04 are industrial versions of the HC-05 and HC-06 firmwares.
Have this in mind before purchashing these modules because not all vendors are clear about this (i found some vendors that mixed all the firmwares in the description and at the end you don't know really what it is using -surely neither them know it xdD-).
The most common is HC-06 (linvor 1.5) firmware in slave mode.
So, double check this before buying if you intend to buy a master module.
I talk from my own experience ;)
any clue?
and also can u provide a circuit diagram about how to build a bt transceiver...bcz i cant afford to buy online.......thank you though for your post.
Thanks for the instructable. I visited it while connecting a Bluetooth chip to a parallax boe bot shield for arduino.
http://arduino.cc/forum/index.php/topic,104903.0.html
Parla di moduli HC05 e HC06, in particolare:
- connessione hardware
- programmazione AT
- connessione seriale BT (pc <-> arduino)
- applicazione base per Android (fatta con AppInventor)
- breakout pcb (disponibili i file eagle)
- esempi vari
-------------------------
for those who are Italian, here is a complete guide:
http://arduino.cc/forum/index.php/topic, 104903.0.html
He talks about HC05 & HC06 module, particulary:
- Hardware connection
- AT Programming
- BT serial connection (pc <-> arduino)
- The basic application for Android (made with AppInventor)
- Breakout pcb (Eagle files available)
- Various examples
and library management module with AT commands - https://github.com/RoboCraft/Bluetooth_HC05