Most premade bluetooth modules for Arduino, particularly in proper shield form, can be pretty expensive for just kicking around on the workbench. This turned out to be a pretty easy alternative that’s also relatively inexpensive.
Only a few parts were necessary… and a steady hand with the iron.
- One HC-05 Bluetooth module off of eBay, about $5 (shipped) from China.
- BluePack Breakout PCB – $5 plus shipping. These are meant for use with MSP430’s, but work fine as a breakout. It will not fit an Uno board as a regular shield. I didn’t much care about that.
- I added 4x header pins, just for simplicity with a breadboard.
Total was about $13.
You’ll want to be careful soldering the module to the PCB. Keep the heat on your iron as low as possible and test on something else first to make sure you’re still getting solder to flow. Fortunately I bought a few of these modules, because I managed to burn one of the gold contacts right off a module, rendering it useless.
For basic serial TX/RX, you only really need to get TX/RX, Vcc and Gnd pins soldered on, though I did all of them just to make sure the module was secure. Once you’ve got your module attached to the board, you’re ready to hook it up to your Arduino. Remember the TX pin on the module will go to the RX pin on your Arduino, and RX pin to TX. Everything is nicely labeled on both sides, so you should be fine.
Note that the levels for the BT module are not 5v tolerant. You’ll need to use a voltage divider to bring the Arduino’s TX voltage down for the RX pin of the module. You can use an online calculator to work out appropriate resistor values, but I used one each of 10k and 20k.
The Arduino will manage with the lower voltage TX of the module without any hackery.
With the Vcc, Gnd, TX (through the divider), and RX connected, it’s time to test. I used Arduino Commander (available in the Google Play store) on my Android phone and the Standard Firmata sketch on the Arduino. Pairing to the HC-05 requires you supply the PIN, “1234”. With that, you should be ready to connect and set pin states.
Hope this helps!