A 3D-Printed Bionic Hand with IoT Control — Under ₹1,000
Features • Demo • Structure • Getting Started • Usage • Hardware • License
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.
| 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 |
| 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" |
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
| 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 |
- Install PlatformIO (VS Code extension or CLI)
- Build and upload:
cd RoboticHandHardwareSketch pio run --target upload - Monitor serial output:
pio device monitor --baud 74880
- On first boot, connect to the
ServoGripWiFi AP and configure your network athttp://192.168.2.1/
cd PythonWebServer
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txtEdit .env with your ESP8266's IP address, then run:
python app.pycd PythonWebServer
python voice_control.pyCommands: hand open, hand close, fist, point, yo sign, wave, quit.
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
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.
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.
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.
| Servo | ESP8266 Pin |
|---|---|
| Thumb | D0 |
| Index | D1 |
| Middle | D2 |
| Ring | D3 |
| Pinky | D4 |
OLED (I2C): SDA → D5, SCL → D6
Refer to Abstract.md for detailed wiring diagrams and mechanical drawings.
| 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 |
Contributions are welcome! Feel free to open issues or submit pull requests.
This project is open source. See the LICENSE file for details (if applicable).