Hi there. I am trying to work out how to incorporate various Bluetooth features into some projects of mine, and I was hoping someone here might be able to help me out with some basic information. I have been trying various searches, and I’ve found some useful information but not quite everything I need. I understand it’s possible that there may just be no one here who has these particular answers…
First, the basic capabilities I’m after:I’d like to be able to implement an HID device, device and service discovery, and maybe some handset features and object exchange. I don’t expect to be able to do all these different things at once, of course. Basically I want to build a small device that can do a few handy things with Bluetooth, either controlling computers with BT capabilities, or receiving information pushed out by previously-paired devices.
Now, my understanding of modules like the RN-41 (or RN-42) is that they’re capable of some of these things but not necessarily set up for it. I’m not real clear on the limitations of the Real Networks modules, honestly. They’re apparently set up, by default, for “cable replacement” - providing a serial link with minimal effort. And they have the SPP (serial port profile) built-in. My understanding is that these modules could also be used for other profiles, such as HID but that this would require either alternate firmware for the module itself, or else a more extensive BT stack on the host controller… (And likewise for HCI profile which - I’m not fully versed in Bluetooth but I guess it’s important for playing certain “host” roles in the communications??) I’m not really sure what the limitations of the module are.
I don’t really know what other hardware one would use to add Bluetooth to a project apart from either a module like the RN-41, or a USB Bluetooth dongle on something with USB host capabilities. So from my perspective a USB dongle is “the other option” - I know there must be other options for adding Bluetooth to a project - less specialized than the modules, built for interfacing with a CPU that has a Bluetooth stack in software… Maybe someone can help me identify what those options would be…
Anyway, so “the other option” is to have a microcontroller that can act as a USB host and connect it to a USB Bluetooth dongle. This seems a bit needlessly complicated (i.e. having to write a USB host stack in addition to whatever Bluetooth stack and so on) but it is nevertheless an option… And apparently a very cheap way to get the BT hardware itself. I did see [this project already - in which PS3 and Wii controllers are to be interfaced to Arduino via a USB host shield and (eventually) a USB Bluetooth dongle…
I’ll have to hope that someone will correct me if I’m wrong here, but my understanding of Bluetooth USB modules is that they tend to be rather minimalist in design and (here’s the important bit) the hardware is independent of any device profile, so the behavior of the host computer on the wireless network is almost entirely dictated by bluetooth software on the host computer… And that, therefore, creating an HID device with this hardware would be a possibility… So if I’m ready to rock the software needed to do this thing, this would seem like the way to go. But having to make the device a USB host just to make that happen is kind of unappealing… I’d like to avoid that if I can…](http://www.circuitsathome.com/mcu/programming/ps3-and-wiimote-game-controllers-on-the-arduino-host-shield-part-1)