Electronic – Using two bluetooth profiles at the same time to make a wireless keyboard


I'm trying to build a wireless, two part keyboard using bluetooth and arduino. Imagine a normal wireless keyboard but split it in two with the numeric keys on the right placed on a separate unit. Then connect it like a normal bluetooth keyboard to a computer, tablet, phone et.c.

Is it possible to do this with only one bluetooth module in each part? Here is my idea:

The right (numeric) unit has a bluetooth module set to SPP profile that sends custom data (when a numeric key is pressed) to the left unit. The left units bluetooth module somehow switches between a SPP and HDI profile and looks like a bluetooth keyboard from the view of the computer/tablet/phone. Is this possible?

If no then I guess I will need 3 bluetooth modules; two in the left side with one using SPP and the other using HDI. However according to one answer here on stackexchange that is also impossible: How can I create a serial bridge using two Bluetooth dongles?

"It is not possible for two Bluetooth devices, with the serial port profile (SPP), to pair with each other. They can only pair to a host."

Is this true? In that case I guess I will have to use 1 bluetooth module (probably this one: https://www.sparkfun.com/products/11601) and 2 Xbee modules?

Are there any other ways to solve my problem?

Best Answer

One possible solution is to treat of the two wireless part-keyboards as separate independent keyboards i.e. Bluetooth HID keyboard devices.

  • Each of the parts has only a subset of keystrokes it can send to the host.
  • The two parts do not need to know about or interact with each other (if there is such a need, this solution is no longer a contender).
  • That way, if a particular application needs only numeric, or only alphanumeric inputs, that keyboard alone could be used independently.
  • The host Bluetooth device (tablet, PC, ...) needs to pair with both HID devices.