Versão traduzida automaticamente para Português
Please :
- If you find bugs, please open an Issue.
- If you have a new feature in mind, please open a Issue with title "Feature Request".
- I will not respond to emails or messages sent personally regarding the Bionic Glove or the library.
Bionic Glove from Pantala Labs (http://www.pantalalabs.com) is a project of a wearable glove started at May/13/2023 that can control microcontrolled or not devices , robots, mobile apps, desktop programs (Ableton, Processing, etc), games, art installations, entertainment, etc through the interpretation of their behaviors and movements.
4th proto
5th proto
16/06/2023 Update
- piece of EVA between the main board and the hand to add comfort for long time use
- cover to protect the components
10/10/2023 Update
- a whole new design emerged. With no moving parts, thinner, lighter and easier to use.
https://www.instagram.com/p/CygAKJ8ucLL/
Like any other Bluetooth device, Bionic Glove sends datapack and it MUST BE RECOGNIZED and TRANSLATED.
There is still no program or app developed for the automatic recognition of the Bionic Glove. Our goal is to be recognized in as many ways as possible, each solution must carry out its recognition and translation. Maybe in the future, someone may create an specific program/app.
For while, these are two ways to communicate with the Bionic Glove:
a) ESP32 Receiver (+library): create sketches without worrying about the instance of communication and interpretation of the data. This is the alternative for all types of users including beginners. The library creates an abstraction for the data received from the Bionic Glove and implements several functionalities without the headache of complicated coding.
All applications will read from the COM port dinamically assigned to EP32. In my example, the Windows Device Manager shows COM20:
b) Bluetooth Dongle: the user will be responsible for receiving and manage all the data received via Serial Bluetooth. You will need an Bluetooth compatible dongle on your computer. Inside BionicGlove.h you will find the description of the data pack sent by the glove. This is for advanced users.
All applications will read from any COM dinamically assigned to Bluetooth Dongle. In my example, the Windows Device Manager shows COM24, COM25 and COM26:
There is no delay in using ESP + Library instead of Serial Bluetooth. The processing time consumed by ESP + Library are much smaller than the interval between messages sent by the glove.
Here you will find usage tips and an ESP32 library to the Bionic Glove.
These are all features coverd by glove. Many of them have parameters to ajust to your needs.
feature | description | parameter | response | range |
finger position | each of all 4 fingers absolute position. It tracks every position of the finger | n/a | 4 - one value for each finger | 0-4095 |
finger acceleration | regardless of the position of the fingers, when moving, it generates an acceleration. which increases when you start the movement and decreases as the finger returns to rest | n/a | 4 - one value for each finger | -4.0 - +4.0 |
finger flick | everytime a high acceleration is reached when opening or closing a finger, like a flick, you can trigger a callback everytime a flick reaches a threshold | min parameter value 10.5 max parameter value 40.0 default open flick 27.0 default close flick 31.0 |
8 - one callback for each finger at opening or closing threshold | true / false |
finger limits | everytime a finger reaches a position wide closed and/or opened, you can trigger a callback. the limits are configurable | min 10% max 90% default for all fingers 15% |
8 - one callback for each finger at wide open or wide close | true / false |
feature | description | parameter | response | range |
accelerometer | x and y axes accelerometers | n/a | 2 - one value for each axle | -512.0 to 512.0 |
g force | x and y axes g force | n/a | 2 - one value for each axle | -2.0 to 2.0 |
inclinometer | x and y angles | n/a | 2 - one value for each axle | 0 to 180 degrees |
angle limits | everytime a hand twist and reaches a threshold angle min or max, you can trigger a callback. the limits are configurable. it works like a joystick | angle | 4 - one callback for X and Y axels at min or max position | true / false |
hand knock | everytime you simulate a knock, like a door knock, you create a trigger inside the library. The knock can be in a horizontal or a vertical orientation and positive (up or right) and/or negative (down or left) way | min angle knock 20 max angle knock 150 defaults: vert. pos. 90 vert. neg. 100 horiz. pos. 100 horiz. neg. 95 |
4 - one callback for each vertical/horizontal , positive/negative | true / false |
n/a - not available
Every method has one kind of parameter. Be careful not to mix the types of parameters or unexpected results may happen.
- uint32_t ms - means millisseconds , you can use any unsigned long int number
- uint8_t raw - refers to any of the raw data received in the data packet. You can use any unsigned 8 bit number, or any of the DEFINES available that starts with "DATA_" :
- #define DATA_F_INDEX 0
- #define DATA_F_MIDDLE 1
- #define DATA_F_RING 2
- #define DATA_F_LITTLE 3
- #define DATA_A_X 4
- #define DATA_A_X_G 5
- #define DATA_A_X_DEG 6
- #define DATA_A_Y 7
- #define DATA_A_Y_G 8
- #define DATA_A_Y_DEG 9
- #define DATA_A_Z 10
- #define DATA_A_Z_G 11
- #define DATA_A_Z_DEG 12
- #define DATA_SMOOTHFACTOR 13
- uint8_t axl - refers to any of the accelerometer axle. You can use any unsigned 8 bit number, or any of the DEFINES available that starts with "AXL_"
- #define AXL_X 0
- #define AXL_Y 1
- #define AXL_Z 2
- uint8_t f - refers to any of the fingers. You can use any unsigned 8 bit number, or any of the DEFINES available that starts with "FINGER_"
- #define FINGER_INDEX 0
- #define FINGER_MIDDLE 1
- #define FINGER_RING 2
- #define FINGER_LITTLE 3
-
uint8_t pct - refers to any data that uses percentage. You can use any unsigned 8 bit number from 1 to 100 , if allowed
-
any datatype val - any value inside the allowed range. Must read all library.
-
float trs - refers to threshold parameters. You can use any value inside the allowed range. Must read all library.
This is how all data are transmitted. A String of 16 tokens with space separator:
"> 88 76 89 26 7.00 0.03 90.23 38.00 0.17 87.91 244.00 1.12 0.00 0.99 <"
">" package start
88 DATA_F_INDEX
76 DATA_F_MIDDLE
89 DATA_F_RING
26 DATA_F_LITTLE
7.00 DATA_A_X
0.03 DATA_A_X_G
90.23 DATA_A_X_DEG
38.00 DATA_A_Y
0.17 DATA_A_Y_G
87.91 DATA_A_Y_DEG
244.00 DATA_A_Z
1.12 DATA_A_Z_G
0.00 DATA_A_Z_DEG
0.99 DATA_SMOOTHFACTOR
"<" end of package
All examples are separated by folder. Even the most difficult one is a very simple sketch with a few lines.
~~ http://youtube.com/shorts/VhoTej8YEuo ~~ (deprecated)
Adjust so that the notches joining got exactly perpendicular to the glove support plate at the fingers middle position. The position of the main plate is also very important for the correct functioning of the glove. Adjust it forwards or backwards until the fingers and the joints have full free movement.
Every mobile equipment has power coupled to the body of the device and firmly attached. Sometimes even inside the device itself.
There are two possibilities to power up the Bionic Glove:
- using batteries, power packs or a 5VDC adapters (never more than 5V). Batteries and Power Packs must be firmly attached to the users´s arm. I stongly advise use this method. Incase of Power Adapters, zip tie the chord to a Bionic Glove´s corner as shown below.
USB power.In this case, I strongly advise using a zip tie to hold the first turn of the wire. I do not recommend using this method because the USB connector will fail in a very short time. Even though it's the strongest USB connector, it's not made for moving devices.
- turn on your receiver (the esp32 will only work if correctly powered by a source of at least 1A);
- turn on Bionic Glove;
- pay attention to the blue led on Bionic Glove. It will remain turned on for 2 seconds. At this time keep your glove horizontal and at rest to calibrate the accelerometer;
- after the Bionic Glove will try to connect to the ESP32 Receiver. At this moment the blue led at Bionic Glove may start blinking fast, indicating that the ESP32 Receiver should already be on and waiting to be paired. The blue led will stop blinking as soon as the two devices are paired;
- after paired, Bionic Glove will blink the blue led at every 3 seconds indicating that it is working and transmitting.
- to make sure everything is working , use Putty (or arduino serial monitor) to monitor the serial port.
- never connect your ESP32 to the external power source (VIN) together with the USB cable! This will damage your microcontroller. There is an specific USB cable to do this task.
- never feed VIN with more than 5V. There is a high risk to damage your microcontroller.
- connect the Dongle to an USB port;
- turn on Bionic Glove with tactile switch 1 pressed
- pay attention to the blue led. It will remain turned on for 2 seconds. At this time keep your glove horizontal and at rest to calibrate the accelerometer. You can release the switch 1 anytime here;
- now the Bionic Glove will connect to the Dongle;
- to make sure everything is working , use Putty (or arduino serial monitor) to monitor the serial port.
PuTTY is an SSH and telnet client for the Windows platform. https://www.putty.org/ .
Download and install.
Run it and repeat this configuration:
Serial line : if you are using ESP + ESP Setup , go to step 1 and write the same port. If you are using Dongle Setup, choose one of the available com ports (in my case COM26). You have to try all 3 available.
Speed: 38400
Connection type: Serial
You can save your configuration for later tests or just Open.
Now, a black window should appear with all data sent by the glove.
This is the datapack sent by ESP32 Receiver + Library
And from Dongle
If the data do not appear, you must start a troubleshot routine to find where is the missing link.
.
.
.
.
There is a Max4Live component called BionicGlove freely available inside examples/ableton folder.
It abstracts main Bionic Glove behavior. This component reads directly from Bluetooth serial port.
There is an important additional configuration that you must make sure to use the Bionic Glove correctly: Bluetooth port speed.
On Windows , open Device Manager. Double click on desired Bluetooth port:
Click on 2nd tab "Port Configuration" and change Bits per second to 115200:
Download M4L component and save it into Ableton **\Ableton\User Library\Presets\MIDI Effects\Max MIDI Effect
By default Max4Live will not map controls directly to Ableton. But there is a way to create a new Control Surface like any other Midi Controller and map thru a MIDI loop / virtual MIDI:
WINDOWS / LoopMIDI
In this situation the M4L component will send a MIDI message to LoopMIDI and Ableton will receive it from LoopMIDI thru MIDI From/All Ins.
-
Download and install https://www.tobias-erichsen.de/software/loopmidi.html
-
Configure a new LoopMIDI port name. Ex : M4L
-
Open Ableton, open a new project the project you want to modify.
-
Add the BionicGlove object to your project
- Open Option/Preferences/MIDI and configure IN / OUT
- Close MIDI configuration. Now send the MAX4Live signal to M4L midiloop port. After that, Ableton will be capable to listen any message sent by BionicGlove.
- In this example , I added an Instrument/Analog/Bass/Basic Bass
- Choose Bionic Glove COM port
- Now you have the Bionic Glove object sending CCs to Ableton.
https://www.ableton.com/en/manual/midi-and-key-remote-control/