Bluetooth

Version 7 (J. Simmons, 02/25/2017 07:11 pm)

1 1 J. Simmons
h1. Bluetooth
2 1 J. Simmons
3 1 J. Simmons
{{>toc}}
4 1 J. Simmons
5 4 J. Simmons
h2. Introduction
6 1 J. Simmons
7 5 J. Simmons
This page covers research into creating a Bluetooth HID connection from the Holoseat controller to the gaming system (PC or console).  The Holoseat controller will need to be able to present itself as either a keyboard & mouse combination or a joypad.  The material on this page covers some Bluetooth fundamentals (classic vs BLE), the types of Bluetooth hardware used in some of our target platforms (CHIP Pro, PS4, PCs), and available libraries for interacting with Bluetooth hardware in Node.js.  It closes with an interesting (but not usable) example from the maker/hacker community.
8 1 J. Simmons
9 4 J. Simmons
h2. Summary of Findings
10 4 J. Simmons
11 4 J. Simmons
Tbd
12 4 J. Simmons
13 4 J. Simmons
h2. Bluetooth Fundamentals 
14 4 J. Simmons
15 4 J. Simmons
Tbd
16 4 J. Simmons
17 4 J. Simmons
h2. Bluetooth Hardware on Holoseat Platforms
18 4 J. Simmons
19 5 J. Simmons
h3. CHIP Pro
20 1 J. Simmons
21 6 J. Simmons
From the "CHIP Pro datasheet":https://docs.getchip.com/chip_pro.html#wireless-connectivity, it uses a Realtek 8723DS combination module which provides Wi-Fi B/G/N and Bluetooth 4.2 LE connectivity."  Other documentation has indicated the Bluetooth driver can be set as either a host or a device.  So, it can be used to connect with classic and BLE devices or it can present itself as a BLE device (but not both at the same time).  See notes above about implementing devices that present themselves as classic devices.  
22 4 J. Simmons
23 5 J. Simmons
Unfortunately, at present Next Thing Computing has disabled the Bluetooth driver on the CHIP Pro (see this "forum post":https://bbs.nextthing.co/t/chip-pro-bluetooth-driver-not-available/14905 last updated 2017-02-15 for more details).  For the time being we cannot demonstrate any level of Bluetooth connectivity with the CHIP Pro and it is not clear when the driver will be enabled.
24 5 J. Simmons
25 4 J. Simmons
h3. PS4
26 4 J. Simmons
27 1 J. Simmons
tbd
28 1 J. Simmons
29 1 J. Simmons
h3. PCs
30 5 J. Simmons
31 5 J. Simmons
Tbd
32 5 J. Simmons
33 7 J. Simmons
h3. Conclusions About Bluetooth Hardware 
34 4 J. Simmons
35 4 J. Simmons
Tbd
36 4 J. Simmons
37 7 J. Simmons
h2. Useful Bluetooth Libraries
38 1 J. Simmons
39 7 J. Simmons
"Sandeep Mistry":https://github.com/sandeepmistry maintains three Bluetooth libraries which we will likely find useful.  Note, they are all BLE only libraries and they only work with specific Bluetooth hardware.
40 7 J. Simmons
41 7 J. Simmons
* Node.js Libraries
42 7 J. Simmons
** "Noble":https://github.com/sandeepmistry/noble - library to implement a BLE central module (aka host)
43 7 J. Simmons
** "Bleno":https://github.com/sandeepmistry/bleno - a library to implement a BLE peripheral (aka device)
44 7 J. Simmons
* Arduino
45 7 J. Simmons
** "Arduino BLEPeripheral":https://github.com/sandeepmistry/arduino-BLEPeripheral - a library to implement a BLE peripheral (device)
46 4 J. Simmons
47 3 J. Simmons
h2. Maker/Hacker Example
48 3 J. Simmons
49 4 J. Simmons
In this example, the firmware from the "RN-42":https://www.sparkfun.com/products/12574 onto the "HC-05":http://cdn.makezine.com/uploads/2014/03/hc_hc-05-user-instructions-bluetooth.pdf.  This kind of hacking, while interesting, is not strictly legal (obtaining the RN-42 firmware is not something one just does), so it is not a recommended approach.  However, it does demonstrate how capable a small system can be at capturing signals from one system (the joypad) and in real time translating them to HID over Bluetooth signals.  Consider this evidence that the kind of inline gameplay translation we want the Holoseat controller to do is possible.  Much of the following research was found by following the links from a Hackaday post - "Convert Any USB Keyboard to Bluetooth":http://hackaday.com/2016/09/04/convert-any-usb-keyboard-to-bluetooth/.
50 1 J. Simmons
51 1 J. Simmons
{{youtube(L7lEDS6xj5w)}}
52 1 J. Simmons
53 1 J. Simmons
{{youtube(5qXv7TJI324)}}
54 1 J. Simmons
55 1 J. Simmons
{{youtube(qyRJgtwX0cY)}}
56 1 J. Simmons
57 1 J. Simmons
h2. Bluetooth Device Details
58 1 J. Simmons
59 1 J. Simmons
The video below is a summary of this project - "Bluetooth HID gamepad using HC-05 module":https://mitxela.com/projects/bluetooth_hid_gamepad
60 1 J. Simmons
61 1 J. Simmons
{{youtube(fWXJDNcbZAA)}}
62 2 J. Simmons
63 2 J. Simmons
h2. ESP32 Wifi Bluetooth Module
64 2 J. Simmons
65 2 J. Simmons
"ESP32 Wifi Bluetooth Module":http://www.cnx-software.com/2016/09/05/you-can-now-buy-esp3212-esp32-wifi-bluetooth-module-for-6-95, another Bluetooth module that has people talking.  Need to do more research.