Skip to content

TheTechTiger/RoboticHand

Repository files navigation

🤖 RoboticHand

A 3D-Printed Bionic Hand with IoT Control — Under ₹1,000

FeaturesDemoStructureGetting StartedUsageHardwareLicense


Overview

RoboticHand is a low-cost, 3D-printed bionic hand powered by an ESP8266 (NodeMCU) microcontroller with 5x SG90 servo motors for individual finger actuation. It supports three control methods:

  • 🌐 Embedded Web GUI — On-device web server with finger sliders and gesture presets
  • 📷 Computer Vision Hand Tracking — Real-time hand mimicry via webcam using MediaPipe + OpenCV
  • 🎤 Voice Control — Hands-free operation via speech recognition

Total BOM cost is targeted under ₹1,000 (~$12 USD), making it accessible for education, hobbyist prosthetics, and STEM projects.


Features

Feature Description
5-DOF Finger Control Individual servo control for thumb, index, middle, ring, pinky
Gesture Presets Open, Fist, Point, Yo-sign, Wave (with animation)
Real-time Hand Tracking Webcam-based hand landmark detection streams angles via UDP
Voice Commands Speech recognition for hands-free gesture control
OLED Display SH1106 128x64 OLED shows IP, SSID, uptime, and servo positions
WiFi Configuration Portal Captive portal on first boot for easy network setup
Low Cost ~₹1,000 total component cost
3D Printed Structure 20 PLA-printed parts (~50 hrs print time) with tendon-based actuation

Demo

Control Mode Description
Web GUI Connect to http://<esp_ip>/controlGUI for slider-based control and gesture buttons
Vision Tracking Run PythonWebServer/app.py — the hand mimics your real hand in real-time
Voice Control Run PythonWebServer/voice_control.py and speak commands like "hand open", "fist", "wave"

Project Structure

RoboticHand/
├── RoboticHandHardwareSketch/    # ESP8266 firmware (PlatformIO / Arduino)
│   ├── src/
│   │   └── RoboticHandHardwareSketch.ino  # Main firmware (497 lines)
│   └── platformio.ini                     # PlatformIO build config
├── PythonWebServer/              # Python control servers
│   ├── app.py                    # Computer vision hand tracking (MediaPipe + OpenCV)
│   ├── voice_control.py          # Voice command recognition
│   ├── requirements.txt          # Python dependencies
│   ├── hand_landmarker.task      # MediaPipe hand landmark model
│   └── .env                      # ESP_IP and UDP_PORT config
├── STL Files/                    # 3D printable parts + GCode
│   ├── 1.stl - 6.stl            # Finger/palm components
│   ├── A.STL - N.STL            # Mechanical components
│   ├── P1.stl - P3.stl          # Additional parts
│   ├── Assemble.stl             # Full assembly reference
│   └── gcode/                    # Pre-sliced GCode files
├── CH34x_Install_Windows_v3_4.EXE  # CH340 USB driver for Windows
├── Abstract.md                   # Comprehensive case study
└── BionicHandAbstract.pdf        # PDF version of case study

Getting Started

Hardware Requirements

Component Qty
NodeMCU Lolin V3 (ESP8266) 1
SG90 / MG90S Servo Motors 5
5V 2A Power Adapter 1
SH1106 OLED Display (128x64, I2C) 1
3D Printed PLA Parts 20 pieces
Jumper Wires / Dupont Cables ~20
Fishing line (tendons) + Elastic bands as needed

Firmware (ESP8266)

  1. Install PlatformIO (VS Code extension or CLI)
  2. Build and upload:
    cd RoboticHandHardwareSketch
    pio run --target upload
  3. Monitor serial output:
    pio device monitor --baud 74880
  4. On first boot, connect to the ServoGrip WiFi AP and configure your network at http://192.168.2.1/

Python Vision Server

cd PythonWebServer
python -m venv .venv
source .venv/bin/activate   # On Windows: .venv\Scripts\activate
pip install -r requirements.txt

Edit .env with your ESP8266's IP address, then run:

python app.py

Python Voice Control

cd PythonWebServer
python voice_control.py

Commands: hand open, hand close, fist, point, yo sign, wave, quit.


Usage

Web Interface

Navigate to http://<esp_ip>/controlGUI to access:

  • Sliders — Individual 0–180° control for each finger
  • Gesture Buttons — Open, Close, Fist, Point, Yo, Wave
  • Live Status — Current servo positions displayed on OLED

Vision Tracking

The app.py script uses your webcam to detect hand landmarks via MediaPipe, calculates finger curl distances, normalizes them to 0–180°, and sends the servo angles to the ESP8266 over UDP (port 8888) with a 2-second cooldown.

Voice Control

The voice_control.py script listens for voice commands using Google Web Speech API, provides audio feedback via Edge-TTS, and sends HTTP GET requests to the ESP8266 to execute gestures.


Hardware

Assembly

20 3D-printed PLA parts (0.2mm layer height, 20% infill) form the mechanical structure. Tendons are routed through channels using fishing line, with elastic bands providing return force. All STL files and pre-sliced GCode are in the STL Files/ directory.

Wiring

Servo ESP8266 Pin
Thumb D0
Index D1
Middle D2
Ring D3
Pinky D4

OLED (I2C): SDA → D5, SCL → D6

Schematic

Refer to Abstract.md for detailed wiring diagrams and mechanical drawings.


Technology Stack

Layer Technology
Microcontroller NodeMCU Lolin V3 (ESP8266)
Firmware Arduino Framework (C++) via PlatformIO
Servo Control Servo.h (PWM, 500–2400µs pulse range)
OLED Display Adafruit SH110X + Adafruit GFX
Web Server ESP8266WebServer (on-device, port 80)
Vision OpenCV + MediaPipe Hand Landmarker
Voice SpeechRecognition + Edge-TTS
Communication HTTP (web + voice), UDP (vision tracking)
3D Modeling STL files for FDM printing (PLA)
Config Storage ArduinoJson + SPIFFS

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.


License

This project is open source. See the LICENSE file for details (if applicable).

About

A 3D-printed bionic hand with IoT control. ESP8266-powered with 5 servo motors, supporting web GUI, real-time computer vision hand tracking (MediaPipe + OpenCV), and voice control. Total BOM under ₹1,000 (~ USD).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors