Bluetooth keyboard to Android USB via Arduino Uno?

Hello i am new to the Arduino Community. and i need some help on my first project to help out a friend's daughter. I have a Android Tablet using stock Icecream Sandwich, this tablet has no Bluetooth support in its firmware ( none internal and will not recognize a dongle) so i would like to use a Arduino Uno to use a bluetooth keyboard and have the Uno relay the signal over usb. The Keyboard is a Music page turner, She plays Piano, and it is recognized as a normal keyboard on a windows PC and works with Adobe Reader to turn pages (all music she has is in PDF Format). I know i will probably be needing either a bluetooth board or a dongle with a usb host shield can anyone help me out here. I will need help with the android side as well (i am just now learning "C/C++" and Java is next) any help is greatly appreciated.
GreY

Ok I have done some more research and found the Arduino ADK Rev3 so at least I don’t need the usb host shield so I am guessing all I need is to get it to read a Bluetooth dongle and for it to send the keyboard signal seamlessly over usb to the tablet.

any advice or pointers to look out for

Does the tablet react to keystrokes of a wired USB keyboard connected to the port you wanted the Arduino to connect?

Yes it does. I also found out today that the BT dongle might not be so good. So I am going with a UNO with a 4 pin BT module unless someone says its not. Thanks again for helping.

So I am going with a UNO with a 4 pin BT module unless someone says its not.

Not. :slight_smile:
I guess by "4 pin BT module" you mean the cheap Chinese modules on eBay with a HC5/6 chipset. These (and most other Arduino BT modules) only implement the serial profile and cannot be paired with HID devices like mice or keyboards. Only few of the more expensive modules allow other profiles (Bluetooth SMD Module - RN-42-HID - WRL-10823 - SparkFun Electronics, unclear if host is possible).

Your seemingly simple idea is far more complex than you (probably) realize.

Bluetooth isn't a simple protocol and neither is USB.

First you need to locate a BT-Host chipset. The module you link to is to act as a device, not a host. The cheapest method is a USB dongle. As you probably already noticed though, then you'll need to write the USB Host code to talk to the BT Host, all on the Arduino's 2k (Uno) or 8k (Mega) of RAM.

Now once you have the Bluetooth protocol implemented, then you can reverse engineer how your device works and implement the code to work with that. (Probably best if you buy a Bluetooth Protocol Analyzer. I sold them years ago, at the time the cheapest was around $10k, but I'm sure they've come down.)

After you've done that, then you can work on making your Arduino look like a USB keyboard (or whatever profile that is needed for your Android to recognize it.) Fortunately, examples exist to make the ATmega8u2 (usb to serial chip on Uno/Mega) look like a USB HID device, so that aspect of the project probably won't be nearly as time consuming of implementing BT Host on Arduino.

The Arduino, which is based on a simple 8-bit microcontroller, may not be the best choice to act as a bluetooth host.

The most cost (and time) effective method may be to simply a tablet with Bluetooth support.

Yeah i tried that with my Boss (friend i am doing this for) but he is a little weird at times and only wanted this one, even though i told to take it back and get his money back but he wanted one this size and there is only this one offered here. So i am also guessing i bit off more than i can chew with this so i will just have to tell him it cant be done at my skill level (beginner) and hes just pretty much stuck with a POS (I mean really what company releases a product in 2012 with out BT) thanx for the help everyone and if anyone here can help anyfurther i will appreciate it. till then this is a cold case for me.