A while ago, I got a JY-MCU board with an HC-06 attached for a project involving remote access to a serial port. the HC-0x modules provide a TTL serial port connection to bluetooth. There are several varieties, but the cheapest are the HC-06 and HC-05. Since they are pin compatible, one board will work for both. There are many different boards, but the JY-MCU boards are the cheapest I've found.

The difference is that the HC-06 based boards can only be used as clients. You hook them up to a serial port (in my case a modified CatGenie with the CatGenius firmware https://code.google.com/p/catgenius...) and then you can see that serial port I/O from any bluetooth device that can speak serial (rfcomm). The HC-06 boards only have four pins populated: VCC, GND, TX, and RX. To set it up, connect the pins to your TTL serial port (swapping the TX and RX). Then type in what you want the HC-06 to do with the appropriate AT commands (lots of documentation on that).

Since the HC-05 board can be a bluetooth source it is more complicated to set up. That means you can hook it up to an arduino and program the arduino to pair with other devices (like an HC-06) and talk to them through bluetooth as a server. Because of this extra fuctionality and the lack of any real documentation on how to hook it up and get to the configuration, it took some investigation to do so.

The version I got has the KEY and STATE pins populated. You can set the HC-05 up as a slave or endpoint, but you need to set it for that. After beating the internets for a while, I found out that KEY needs to be pulled high in order to use AT commands. If you only have a usb TTL serial cable, you'll need to jumper VCC and KEY. I did this with a folded staple and it worked great.

Using this with an arduino getting to the AT commands would be as simple as connecting KEY to an appropriate digital output pin. For instance to pair it with a source, you turn the AT interface on, pair to the device, then turn the AT interface off.