The glove based robot controller (alias glove) is a part of a system featuring a four driving wheels robot (alias robot) and a headset to send vocal commands and to visualize robot parameters (temperature, speed, etc.).
The glove was developed to hand control the robot displacement (direction plus speed):
- Forward/backward
- Left/right turn
- Left/right translation
and because I am a lot interested in sensor based control device.
The glove and the robot are both Station device connected to the headset acting as Access Point. The glove sends a displacement command via a TCP/IP client-server C application to the headset which forwards to the robot.
Although the glove was developed specifically to control the robot, its use can be extended to other systems acquiring data via WiFi and acting accordingly.
II. Functional view
The thumb, index and middle fingers are used to control the displacement of the robot. User must first act on the thumb and maintain its position to specify the mode:
- Straight line
- Turn
- Translation
Then acting on the middle|/index, the robot will move that way:
- Straight line : forward/backward
- Turn: left/right
- Translation: left/right
at a speed related to the bending.
To be able to control the robot displacement in such way, each of the fingers is equipped with a flex sensor (device whose resistor changes according how it is bent). The value related to the flex sensor bending is read in order to generate the displacement command which is sent via WiFi to the headset (Access Point) and then forwarded to the robot. The connection status (onLine/Not onLine) and the raw value of each flex sensor bending is displayed for debug/verification purpose. The LiPo battery voltage is as well monitored and a rough estimation of its capacity is displayed in percentage.
III. HardwareEach flex sensor is a part of a voltage divider in order to provide an analog data ranging from 0V to 1V to be compliant with the voltage range of the ESP07S 10bit 0-1V ADC. A voltage divider is as well used to monitor the LiPo voltage. An analog multiplexer controlled by two GPIOs is used to read the different voltages. An I2C SSD1306 128x32 OLED is used to display information.
The power source used is 3.3V/600mA provided by a 4.2V/600mAh LiPo battery together with a 3.3V/600mA DC/DC converter. To power On/Off the glove, a “flat” press button switch is used (cf. Picture 3 bottom right).
The programing of the glove is done via a micro USB connector (cf. Picture 3, bottom left and right) together with a USB to serial bridge (CH340C) directly connected to the Rx/Tx pins of the ESP07S.
The ESP07S was chosen as I got a better WiFi signal by using an external antenna.
To put on the glove easily, a zip fastener was added (cf. Picture 3, top).
The electronic development was done using KiCAD v8 on an Ubuntu 22.04LTS OS based desktop computer (please, find attached the.zip of the project).
The PCB (cf. Picture 4) was produced by JLCPCB. One has the option to let JLCPCB to solder components. However, as I enjoy soldering, I decided to do it myself.
IV.Software
The Espressif ESP8266 SDK IDF was used together with C language (please, find attached the.zip of the project).
Three tasks are managed by RTOS:
- To sample the flex sensors and the LiPo battery output voltages (every 50ms)
- To send the command via WiFi (every 50ms)
- To display the data (every 50ms)
1.Sampling
The index, middle finger and thumb have a defined rest position which is set as not bent (cf. picture 1). These three fingers are sampled sequentially by the ADC every 50ms. However, when the index or the middle finger position is different from the rest position, this finger, only, get sampled until it reaches again its rest position. Proceeding that way, the displacement speed depends on the bending.
Example withthe translation mode
The thumb is bent such as the translation mode is selected. While maintaining the thumb position, a left translation can be done by bending the index finger. If then a right translation is wanted, the index finger must be brought, first, to the rest position and then the middle finger can be bent.
2.Command generation and sending via WiFi
The sampled index/middle finger value together with the mode define the command. If this command is different from the previously generated one, then it is sent via WiFi. Doing so, sending several time in a row the same command is avoided.
V. ImprovementAlthough the glove is fully functional, several improvements will be done. Among them:
- The analog multiplexer will be replaced by a 12bit I2C ADC (ADS1015).
This will simplify the handling of the sampling, use less PCB space and benefit from a larger voltage range (0-3.3V).
I initially employed the analog multiplexer as I wanted to use the integrated ESP07S 10bit ADC.
- To adopt a different strategy of sampling the flex sensors
- To Improve the connection of the flex sensor connectors with the PCB. As the cables are sewed, the way the fingers are moved may affect the connections
- To add a LiPo charger module on the PCB
I am looking forward for any feedback and to exchange on this topic :)
Thank you for your time !




_4YUDWziWQ8.png?auto=compress%2Cformat&w=48&h=48&fit=fill&bg=ffffff)



_Ujn5WoVOOu.png?auto=compress%2Cformat&w=40&h=40&fit=fillmax&bg=fff&dpr=2)

Comments