Community project

Smart Glove Motion Schematic

ESP32
Photo of Smart Glove Motion Schematic
Generated with AI

Alaa Mohamed

Published October 7, 2026

This smart glove project combines five flex sensors with a 6-axis motion sensor to capture hand gestures and arm movements. The flex sensors track individual finger bending while the MPU-6050 accelerometer and gyroscope measure wrist rotation and acceleration, enabling gesture recognition and motion-based control applications.

This guide provides a complete wiring diagram, parts list, and step-by-step assembly instructions for building the sensor array on an ESP32 microcontroller. The included firmware reads all sensor inputs and outputs the data over serial, giving makers a foundation for developing custom gesture recognition or motion control systems.

Wiring diagram

Wiring diagram for Smart Glove Motion Schematic

Gather all the parts

QtyComponent
1

Flex Sensor 1

A bend-sensitive resistor that changes resistance as the first finger bends.

1

Flex Sensor 2

A bend-sensitive resistor that changes resistance as the second finger bends.

1

Flex Sensor 3

A bend-sensitive resistor that changes resistance as the third finger bends.

1

Flex Sensor 4

A bend-sensitive resistor that changes resistance as the fourth finger bends.

1

Flex Sensor 5

A bend-sensitive resistor that changes resistance as the fifth finger bends.

1

DFRobot SEN0142 Fermion MPU-6050 6 DOF Sensor Breakout

DFRobot SEN0142 MPU-6050 breakout with 3-5 V board input, I2C interface, onboard I2C pull-ups, and i2cdevlib Arduino example coverage.

1

10 kΩ Resistor 1

10 kΩ

A fixed resistor that completes Flex Sensor 1's voltage divider to ground.

1

10 kΩ Resistor 2

10 kΩ

A fixed resistor that completes Flex Sensor 2's voltage divider to ground.

1

10 kΩ Resistor 3

10 kΩ

A fixed resistor that completes Flex Sensor 3's voltage divider to ground.

1

10 kΩ Resistor 4

10 kΩ

A fixed resistor that completes Flex Sensor 4's voltage divider to ground.

1

10 kΩ Resistor 5

10 kΩ

A fixed resistor that completes Flex Sensor 5's voltage divider to ground.

Assemble it in 7 steps

1. Make two shared power rails

Put the ESP32 board beside the breadboard. Run one red jumper from the ESP32 pin marked 3V3 to a red power rail. Run one black jumper from any ESP32 pin marked GND to a blue or black ground rail. All five flex sensors and the MPU6050 share these two rails.

  • Use red only for 3.3 V and black only for GND. Keeping these colors consistent makes every connection easier to follow.
  • Do not use the ESP32 pin marked VIN or 5V for these parts. The flex-sensor divider points and MPU6050 signals are designed around 3.3 V.

2. Wire Flex Sensor 1 — GPIO34

Make one three-way junction in a single breadboard row: Flex Sensor 1 SIG_END, ESP32 GPIO34, and the TOP leg of 10 kΩ Resistor 1 all meet in that same row. Connect Flex Sensor 1 3V3_END to the 3.3 V rail. Connect the BOTTOM leg of 10 kΩ Resistor 1 to the GND rail.

  • Label this junction “Flex 1 / GPIO34” with tape or a marker. It is the exact point where the board reads finger bend.
  • Do not connect GPIO34 straight to GND or straight to 3.3 V; it must connect only at the shared sensor-and-resistor junction.

3. Wire Flex Sensor 2 — GPIO35

Make one three-way junction in a new breadboard row: Flex Sensor 2 SIG_END, ESP32 GPIO35, and the TOP leg of 10 kΩ Resistor 2 all meet in that same row. Connect Flex Sensor 2 3V3_END to the 3.3 V rail. Connect the BOTTOM leg of 10 kΩ Resistor 2 to the GND rail.

  • Label this junction “Flex 2 / GPIO35” and keep its wire separate from the GPIO34 wire.
  • Each flex sensor needs its own 10 kΩ resistor; do not join the five signal junctions together.

4. Wire Flex Sensor 3 — GPIO32

Make one three-way junction in a new breadboard row: Flex Sensor 3 SIG_END, ESP32 GPIO32, and the TOP leg of 10 kΩ Resistor 3 all meet in that same row. Connect Flex Sensor 3 3V3_END to the 3.3 V rail. Connect the BOTTOM leg of 10 kΩ Resistor 3 to the GND rail.

  • Label this junction “Flex 3 / GPIO32.” Arrange the sensor strips in finger order so the labels remain easy to match.
  • Make sure the resistor leg shares the GPIO32 row, not the 3.3 V row.

5. Wire Flex Sensor 4 — GPIO33

Make one three-way junction in a new breadboard row: Flex Sensor 4 SIG_END, ESP32 GPIO33, and the TOP leg of 10 kΩ Resistor 4 all meet in that same row. Connect Flex Sensor 4 3V3_END to the 3.3 V rail. Connect the BOTTOM leg of 10 kΩ Resistor 4 to the GND rail.

  • Label this junction “Flex 4 / GPIO33.” Use a different signal-wire color from the red and black power wires.
  • Do not swap GPIO33 with a power rail; a swapped wire gives unusable bend readings.

6. Wire Flex Sensor 5 — GPIO25

Make one three-way junction in a new breadboard row: Flex Sensor 5 SIG_END, ESP32 GPIO25, and the TOP leg of 10 kΩ Resistor 5 all meet in that same row. Connect Flex Sensor 5 3V3_END to the 3.3 V rail. Connect the BOTTOM leg of 10 kΩ Resistor 5 to the GND rail.

  • Label this junction “Flex 5 / GPIO25.” The five labeled rows should now all have the same shape: 3.3 V → flex sensor → GPIO junction → 10 kΩ resistor → GND.
  • Keep this GPIO25 junction separate from all four other flex-sensor junctions.

7. Wire the MPU6050 motion sensor

Connect MPU6050 VIN to the 3.3 V rail (power). Connect MPU6050 GND to the GND rail (ground). Connect MPU6050 SDA to ESP32 GPIO21 (data). Connect MPU6050 SCL to ESP32 GPIO22 (clock). Leave the MPU6050 INT pin unconnected in this version.

  • Run the two MPU6050 signal wires next to each other and label them SDA/GPIO21 and SCL/GPIO22. Keep them away from the five flex-sensor junction rows where possible.
  • Make sure VIN and GND are not swapped — swapped power can damage the MPU6050 module.

Review all connections

1. Connections between "flex_sensor_1" and "ESP32"

Functionflex_sensor_1ESP32
power3V3_END3V3
analogSIG_ENDGPIO 34

2. Connections between "resistor_1" and "ESP32"

Functionresistor_1ESP32
groundBOTTOMGND
analogTOP → Flex Sensor 1 SIG_ENDEXT

3. Connections between "flex_sensor_2" and "ESP32"

Functionflex_sensor_2ESP32
power3V3_END3V3
analogSIG_ENDGPIO 35

4. Connections between "resistor_2" and "ESP32"

Functionresistor_2ESP32
groundBOTTOMGND
analogTOP → Flex Sensor 2 SIG_ENDEXT

5. Connections between "flex_sensor_3" and "ESP32"

Functionflex_sensor_3ESP32
power3V3_END3V3
analogSIG_ENDGPIO 32

6. Connections between "resistor_3" and "ESP32"

Functionresistor_3ESP32
groundBOTTOMGND
analogTOP → Flex Sensor 3 SIG_ENDEXT

7. Connections between "flex_sensor_4" and "ESP32"

Functionflex_sensor_4ESP32
power3V3_END3V3
analogSIG_ENDGPIO 33

8. Connections between "resistor_4" and "ESP32"

Functionresistor_4ESP32
groundBOTTOMGND
analogTOP → Flex Sensor 4 SIG_ENDEXT

9. Connections between "flex_sensor_5" and "ESP32"

Functionflex_sensor_5ESP32
power3V3_END3V3
analogSIG_ENDGPIO 25

10. Connections between "resistor_5" and "ESP32"

Functionresistor_5ESP32
groundBOTTOMGND
analogTOP → Flex Sensor 5 SIG_ENDEXT

11. Connections between "mpu6050_1" and "ESP32"

Functionmpu6050_1ESP32
powerVIN3V3
groundGNDGND
i2cSDAGPIO 21
i2cSCLGPIO 22

Deploy the firmware

#include <Arduino.h>
#include <Wire.h>

constexpr int FLEX_1_PIN = 34;
constexpr int FLEX_2_PIN = 35;
constexpr int FLEX_3_PIN = 32;
constexpr int FLEX_4_PIN = 33;
constexpr int FLEX_5_PIN = 25;
constexpr int MPU_SDA_PIN = 21;
constexpr int MPU_SCL_PIN = 22;

void setup() {
  Serial.begin(115200);
  analogReadResolution(12);
  Wire.begin(MPU_SDA_PIN, MPU_SCL_PIN);
}

void loop() {
  const int flex1 = analogRead(FLEX_1_PIN);
  const int flex2 = analogRead(FLEX_2_PIN);
  const int flex3 = analogRead(FLEX_3_PIN);
  const int flex4 = analogRead(FLEX_4_PIN);
  const int flex5 = analogRead(FLEX_5_PIN);

  Serial.printf("Flex: %d, %d, %d, %d, %d\n", flex1, flex2, flex3, flex4, flex5);
  delay(250);
}

Remix this project

Make it yours in one click

Open a full copy of this project in your own Schematik workspace — diagram, code, parts, and assembly steps included. Swap the sensor, add features, or redesign the whole thing with AI. The author's original stays untouched.

Open in Schematik