Skip to the content
PCBKitNew board
2 layers45.9 × 44.6 mmFinal., the printed circuit board in 3D

plaintext Flexsonic ├── .obsidian/ # Notes (Obsidian workspace) │ └── Pre-requisites.md # Basic notes │ ├── audio/ # All audio files in use │ ├── build/ # ESP-IDF build output │ ├── datacollection/ # Raw data logging +…

Size
45.9 × 44.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
40
Nets
46
Pads
145
Tracks, vias
364, 63
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
26 Jun 2025
Updated
14 Oct 2025

Overview

Final. is an open-source printed circuit board by Shri-2112, from the Shri-2112/Flexsonic repository on GitHub. It is a 2-layer board of 45.9 × 44.6 mm with 40 parts on 46 nets, routed with 364 tracks and 63 vias.

It is built around the ESP32-WROOM-32 and AMS1117-3.3. Its parts include 15 capacitors, 5 connectors, 5 fuses, 2 ICs and 1 diode. It belongs with the ESP32 boards of this library.

Main components

2

README

README.md

FlexSonic – Smart Glove for Gesture-to-Speech Communication

A wearable assistive device that translates hand gestures into audible speech using flex sensors, IMU, ESP32, and DFPlayer Mini.


Table of Contents


About the Project

Aim

FlexSonic aims to bridge the communication gap for speech-impaired individuals by converting hand gestures into audible phrases.

Description

The glove uses flex sensors (to detect finger bending) and an MPU6050 IMU (to capture orientation). Sensor data is processed on an ESP32, which runs a simple ML model (K-Means clustering) to classify gestures. The recognized gesture is mapped to a pre-recorded audio file on a DFPlayer Mini, producing real-time speech output through a speaker.

Tech Stack

Hardware:

  • ESP32
  • Flex Sensors
  • MPU6050
  • DFPlayer Mini
  • Speaker
  • SD Card

Software:

  • Arduino IDE / PlatformIO (ESP32 firmware)
  • C / Embedded C for driver code
  • Python (for ML model training & testing)
  • ML Libraries: scikit-learn

Frameworks/Tools:

  • FreeRTOS (ESP32 task scheduling)
  • I²C, UART communication protocols

File Structure

plaintext
Flexsonic
├── .obsidian/                  # Notes (Obsidian workspace)
│   └── Pre-requisites.md       # Basic notes
│
├── audio/                      # All audio files in use
│
├── build/                      # ESP-IDF build output
│
├── data_collection/            # Raw data logging + visualization
│   ├── data.py                 # Data logging script
│   ├── data.txt                # Raw dataset (text format)
│   ├── graph.py                # Graphical representation of dataset
 
├── data_processed/             # Processed dataset
│   ├── data_with_clusters.csv  # Clustered dataset
│   ├── gesture_labeled.csv     # Labeled dataset
│   └── gesture_parsed.csv      # Parsed dataset
│
├── main/                       # ESP32 firmware (C code)
│   ├── 1_flex.c
│   ├── 2_mpu.c
│   ├── 3_mpu_and_flex.c
│   ├── 4_sentence_gesture.c
│   └── 5_numbers_gesture.c

Getting Started

Prerequisites

text
- **ESP-IDF v4.0+** (or Arduino IDE with ESP32 boards installed)  
- **Python 3.8+**  

Required libraries (Arduino/ESP32):

  • esp32 board support package
  • Adafruit_MPU6050
  • DFRobotDFPlayerMini

⚙️ Installation

Clone the repo:

bash
git clone https://github.com/your_username/flexsonic.git
cd flexsonic

Usage

Follow these steps to run and test the project:

  1. Connect Hardware

    • Attach all flex sensors to the ESP32.
    • Connect the MPU6050 via I2C.
    • Insert the SD card into the DFPlayer Mini.
    • Connect a small speaker to the DFPlayer Mini output.
  2. Upload Code

    • Open the project folder in VS Code with PlatformIO or Arduino IDE.
    • Select the ESP32 board and correct COM port.
    • Upload the firmware.
  3. Run the Project

    • Power on the ESP32 (via USB or battery).
    • Perform different hand gestures.
    • The ESP32 will recognize gestures using sensor data.
    • DFPlayer Mini will play the corresponding pre-recorded audio.
  4. Add New Gestures

    • Update the gesture mapping logic in main.cpp.
    • Add new audio files (.mp3) to the SD card in sequential numbering (e.g., 0001.mp3, 0002.mp3).
    • Re-flash the code to include new mappings.
  5. Testing

    • Open the Serial Monitor at 115200 baud rate.
    • Debug sensor readings and check recognized gestures.
text

Results & Demo

Results

  • Successfully translates predefined hand gestures into corresponding audio outputs.
  • Flex sensors + MPU6050 data are processed in real-time by the ESP32.
  • DFPlayer Mini plays pre-recorded audio files with minimal delay.
  • System can be extended by adding more gestures and audio mappings.
  • Achieved smooth serial debugging and stable performance in lab tests.
text

Demo

You can check out the project demo here:

text

Future Work

  • Gesture Expansion: Add more complex gesture combinations for a richer vocabulary.
  • Dynamic Phrase Generation: Integrate an ML model for real-time text-to-speech instead of fixed audio files.
  • Miniaturization: Design a compact, custom PCB to reduce size and improve portability.
  • Wireless Connectivity: Enable Bluetooth/Wi-Fi support for integration with smartphones or IoT devices.
  • Energy Optimization: Implement low-power modes for longer battery life.
  • Multilingual Support: Expand gesture-to-speech output across multiple languages.
  • AI Integration: Use advanced ML techniques (e.g., LSTM/RNN) for continuous gesture recognition.
  • Cloud/Edge Support: Store and update gesture mappings via a connected app or cloud server.

Troubleshooting

Here are some common issues and their solutions:

  • No audio output from DFPlayer Mini

    • Check if the SD card is properly formatted (FAT32).
    • Ensure audio files are named correctly (e.g., 0001.mp3, 0002.mp3).
    • Verify speaker connections and volume settings.
  • ESP32 not detecting flex sensors

    • Recheck wiring of ADC pins.
    • Calibrate sensor values in the code.
    • Test with a multimeter to confirm sensor resistance changes.
  • IMU (MPU6050) giving unstable readings

    • Ensure proper power supply (3.3V, not 5V).
    • Add a small delay/filtering in code to stabilize readings.
    • Check I2C connections (SDA, SCL).
  • Code not compiling

    • Verify required libraries are installed (DFRobotDFPlayerMini, Wire, etc.).
    • Ensure correct board and COM port are selected in Arduino IDE.
  • Gestures not recognized correctly

    • Increase training data for the ML model.
    • Adjust threshold values in the code.
    • Check if flex sensors are securely attached to fingers.

Contributors

This project was made possible with the efforts of:

Mentees

  • Janhavi Mokal
  • Shrinivas Pathak

Mentors

  • Bhavesh Phundhkar
  • Yash Suthar
  • Swanand Patil

Contributions are always welcome!
Feel free to fork this repo, create a branch, and submit a pull request.


Acknowledgment

A big thank you to:

  • SRA VJTI Mumbai for providing the academic environment to pursue this project.
  • Open-source communities whose libraries and resources made implementation easier.
  • Everyone who inspired, tested, and supported FlexSonic in its early stages.

Resources

Here are some references and tools that helped during development:

Parts

40
QtyValueFootprintReferences
110.1ufCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C6, C7, C8, C9, C10, C13, C15
5OutConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalF1, F2, F3, F4, F5
410ufCapacitor_SMD:C_0805_2012MetricC5, C11, C12, C14
2RResistor_SMD:R_0805_2012Metric1K1, 2K1
1150Resistor_SMD:R_0805_2012MetricRL1
15V_inputConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ1
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U3
1Conn_01x02Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalJ4
1Conn_01x06_SocketConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_HorizontalJ5
1Conn_01x08Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ3
1ESP32-WROOM-32RF_Module:ESP32-WROOM-32U1
1LEDLED_SMD:LED_0805_2012MetricD1
1LOGOlogos:sra_skull_bigG***
1LOGOLogos:Lions_logoG***
1LOGOlogos:sra_logo_small_negG***
1Q_PMOS_GSDPackage_TO_SOT_SMD:SOT-23_HandsolderingQ1
1R1Resistor_SMD:R_0805_2012Metric10k1
1R2Resistor_SMD:R_0805_2012Metric10k2
1R3Resistor_SMD:R_0805_2012Metric10k3
1R4Resistor_SMD:R_0805_2012Metric10k4
1R5Resistor_SMD:R_0805_2012Metric10k5
1Uart_tx_rxConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ2

Questions

How big is the Final. PCB?

It measures 45.9 × 44.6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Final. use?

40 parts, built around the ESP32-WROOM-32 and AMS1117-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Final. KiCad files?

From the Shri-2112/Flexsonic repository on GitHub, at the commit this page was made from: the board is PCBs/Final..kicad_pcb and its schematic Schematics/Final..kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Final. design in my own project?

Its repository states no licence, so its author keeps all rights: ask Shri-2112 before reusing the design.

More from Shri-2112/Flexsonic

1
  • 2 layers45 × 22.3 mmFlexsonic 2, the printed circuit board in 3D

    Flexsonic 2

    Shri-2112/Flexsonic

    plaintext Flexsonic ├── .obsidian/ # Notes (Obsidian workspace) │ └── Pre-requisites.md # Basic notes │ ├── audio/ # All audio files in use │ ├── build/ # ESP-IDF build output │ ├── datacollection/ # Raw data logging +…

    12 parts

Similar boards

  • 2 layers90 × 76.5 mmLCDZapperPro, the printed circuit board in 3D

    LCDZapperPro

    charcole/LCDZapper

    Device for making light gun games playable on LCD TVs

    126 parts163
  • 2 layers85 × 56 mmHB RF ETH, the printed circuit board in 3D

    HB RF ETH

    alexreinert/PCB

    Some of my PCBs

    96 parts104
  • 2 layers62.2 × 30.5 mmWLED ESP32 Controller, the printed circuit board in 3D

    WLED ESP32 Controller

    Hasenpups/WLED_ESP32_Controller

    This work is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa].

    24 parts44
  • 2 layers150 × 50 mmEsp32-led smps, the printed circuit board in 3D

    Esp32-led smps

    lucysrausch/esp32-led-smps

    230V main LED smps. 2x30W Constant Current.

    179 parts30
  • 2 layers40 × 68 mmMULTIGW, the printed circuit board in 3D

    MULTIGW

    nuclearcat/ESP32ETH

    Simple ESP32 with native ethernet using LAN8720 phy, Arduino compatible

    32 parts30LGPL-2.1
  • 2 layers259.5 × 60.7 mm1512hh control, the printed circuit board in 3D

    1512hh control

    larryqiann/AP1512HH-ESP32

    Coway AP1512HH Main Board replacement with ESP32

    71 parts29CERN-OHL-P-2.0
  • 2 layers139.7 × 88.9 mmCharge Controller, the printed circuit board in 3D

    Charge Controller

    jharvey/Charge_Controller

    MPPT hardware which uses FUGU firmware

    163 parts24