Skip to content

Latest commit

 

History

History
668 lines (514 loc) · 24.9 KB

File metadata and controls

668 lines (514 loc) · 24.9 KB

RoboticHand: 3D Printed Bionic Hand with IoT Control

Mini Project Case Study


1. Introduction

The field of robotics and prosthetics has witnessed remarkable advancements over the past decade, driven by the convergence of 3D printing technology, microelectronics, and物联网 (IoT) capabilities. Traditional prosthetic limbs, while functional, often come with prohibitive costs ranging from $5,000 to $50,000, making them inaccessible to millions of amputees in developing nations. The global prosthetics market, valued at approximately $8.5 billion in 2023, continues to grow as technological innovations make bionic limbs more sophisticated and affordable.

The intersection of 3D printing and low-cost microcontrollers has democratized access to prosthetic technology. By leveraging readily available components and open-source designs, it's now possible to create functional bionic hands at a fraction of traditional costs. This approach not only reduces manufacturing expenses but also enables rapid prototyping and customization for individual users.

RoboticHand is an innovative bionic hand project that combines 3D printed mechanical components with IoT-enabled microcontroller technology. The system utilizes the NodeMCU Lolin V3 (ESP8266) as the central processing unit, coordinating five SG90 servo motors to achieve realistic finger movement. The entire mechanical structure is 3D printed using PLA filament, comprising 20 individual components manufactured over approximately 50 hours of printing time.

Key Features:

  • WiFi-enabled control via ESP8266 microcontroller
  • Five independent servo motors for individual finger movement
  • 3D printed mechanical structure using PLA filament
  • Web-based control interface for intuitive operation
  • Real-time finger position control
  • Customizable grip patterns and gestures

2. Problem Statement

The challenges in prosthetic technology development and robotics education present significant opportunities for innovation:

2.1 Accessibility Issues

  • High Cost of Prosthetics: Commercial prosthetic hands range from $5,000 to $50,000, depending on sophistication
  • Limited Availability: Access to quality prosthetics is concentrated in urban centers and developed nations
  • Customization Barriers: Traditional manufacturing processes make personalized solutions expensive
  • Maintenance Challenges: Repairs require specialized technicians and parts

2.2 Educational Gaps in Robotics

  • Lack of Hands-on Projects: Robotics education often focuses on theoretical concepts without practical implementation
  • Component Complexity: Existing projects require expensive servos, motors, and control systems
  • Integration Challenges: Combining mechanical design, electronics, and software remains difficult for learners
  • Resource Constraints: Educational institutions face budget limitations for advanced robotics labs

2.3 Technical Limitations in DIY Robotics

  • Motor Control Complexity: Managing multiple servos requires complex timing and PWM signals
  • Power Management: Balancing servo power requirements with microcontroller capabilities
  • Connectivity Issues: Remote control of robotic systems often requires complex networking
  • Mechanical Design: Creating functional articulated structures is challenging without specialized tools

2.4 Project Objectives

  1. Develop a functional bionic hand at minimal cost (under ₹1,000 in components)
  2. Implement WiFi-based control using ESP8266
  3. Create an intuitive web interface for finger manipulation
  4. Design a scalable 3D printed mechanical structure
  5. Document the complete development process for educational purposes
  6. Demonstrate integration of mechanical, electronic, and software components

3. System Architecture

3.1 High-Level Architecture

RoboticHand employs a client-server architecture with the ESP8266 functioning as both the embedded controller and local web server:

┌─────────────────────────────────────────────────────────┐
│              PRESENTATION LAYER                         │
│  ┌──────────────────────────────────────────────────┐   │
│  │           Web Control Interface                  │   │
│  │  ┌─────────┐ ┌─────────┐ ┌────────────────────┐  │   │
│  │  │Finger   │ │Preset   │ │ Real-time Position │  │   │
│  │  │Sliders  │ │Buttons  │ │      Display       │  │   │
│  │  └─────────┘ └─────────┘ └────────────────────┘  │   │
│  └──────────────────────────────────────────────────┘   │
└────────────────────────┬────────────────────────────────┘
                         │ HTTP/WebSocket
┌────────────────────────▼────────────────────────────────┐
│               HARDWARE LAYER                            │
│  ┌──────────────┐  ┌──────────────┐  ┌─────────────┐    │
│  │ ESP8266      │  │ 5x SG90      │  │ 3D Printed  │    │
│  │ Web Server   │  │ Servos       │  │ Hand        │    │
│  └──────────────┘  └──────────────┘  └─────────────┘    │
└─────────────────────────────────────────────────────────┘

3.2 Communication Protocol

The ESP8266 hosts a web server that serves the control interface and processes commands:

  • Server Port: 80 (standard HTTP)
  • Control Endpoint: /control?finger=<0-4>&angle=<0-180>
  • Preset Endpoint: /preset?name=<preset_name>
  • Status Endpoint: /status (returns current finger positions)

Request Format (Client → ESP8266)

GET /control?finger=0&angle=90 HTTP/1.1
Host: 192.168.1.100

Response Format (ESP8266 → Client)

{
  "status": "success",
  "finger": 0,
  "angle": 90,
  "positions": [90, 45, 120, 60, 30]
}

3.3 Network Configuration

  • Mode: WiFi Station (connects to local network)
  • IP Assignment: DHCP (automatic)
  • Web Server: ArduinoOTA for firmware updates
  • mDNS: Optional for local hostname resolution

4. Hardware Design

4.1 Components Overview

RoboticHand uses affordable, readily available components:

Component Model Purpose Cost (₹)
Microcontroller NodeMCU Lolin V3 (ESP8266) Main processing & WiFi 250-350
Servo Motors 5x SG90 (Tower MG90S) Finger actuation 50-80 each
Power Supply 5V 2A Adapter System power 100-150
3D Printed Parts 20x PLA components Mechanical structure 200-300 (filament)
Jumper Wires 20x connecting wires Connections 30-50

4.2 Pin Configuration

NodeMCU Lolin V3 (ESP8266) Pin Assignments:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
D1 (GPIO5)   ──► Thumb Servo Signal (Finger 0)
D2 (GPIO4)   ──► Index Servo Signal (Finger 1)
D4 (GPIO2)   ──► Middle Servo Signal (Finger 2)
D5 (GPIO14)  ──► Ring Servo Signal (Finger 3)
D6 (GPIO12)  ──► Pinky Servo Signal (Finger 4)
D7 (GPIO13)  ──► Status LED (optional)
Vin (5V)     ──► Servo VCC (all 5 servos)
GND          ──► Servo Ground (common)

4.3 Technical Specifications

NodeMCU Lolin V3 (ESP8266)

  • Processor: Tensilica Xtensa L106 32-bit @ 80MHz
  • Flash Memory: 4MB (ESP-12F module)
  • WiFi: 802.11 b/g/n (2.4GHz)
  • GPIO: 11 digital I/O pins
  • ADC: 1 channel, 10-bit resolution
  • Power: 3.3V logic, 5V input via USB/Vin

SG90 Servo Motor Specifications

Parameter Value
Operating Voltage 4.8V - 6V
Stall Torque 1.8 kg-cm (4.8V)
Operating Speed 0.1s/60° (4.8V)
Dead Band Width 5µs
Control Signal PWM (50Hz, 1-2ms pulse)
Rotation Range 0° - 180°

4.4 3D Printed Mechanical Structure

Manufacturing Details

  • Total Parts: 20 individual components
  • Printing Time: Approximately 50 hours
  • Material: PLA Filament (1.75mm)
  • Layer Height: 0.2mm (standard quality)
  • Infill: 20% (balance of strength and weight)
  • Supports: Required for overhanging elements

Component Categories

  1. Finger Segments (5 sets × 3 parts = 15 pieces)

    • Proximal phalanx
    • Middle phalanx
    • Distal phalanx
  2. Palm Structure (3 pieces)

    • Main palm base
    • Palm side panels
  3. Mounting Hardware (2 pieces)

    • Servo mounting brackets
    • Wrist attachment

Assembly Notes

  • Friction fit for finger joints
  • Screw fixation for servo attachments
  • PLA material allows post-print drilling/tapping

4.5 Power Consumption

The system power requirements:

  • ESP8266 Active: ~70-80mA (with WiFi)
  • ESP8266 Idle: ~15-20mA
  • SG90 Servo Active: ~100-250mA each
  • SG90 Servo Stall: ~600-700mA each
  • Total Peak: ~1.5A (all servos moving simultaneously)
  • Recommended Supply: 5V 2A minimum

5. Software Architecture

5.1 Firmware Components

The ESP8266 runs Arduino-based firmware with the following modules:

Core Modules

  • WebServer: Handles HTTP requests and serves control interface
  • ServoController: Manages PWM signals for 5 servos
  • WiFiManager: Handles network connection and configuration
  • Preferences: Stores last-known finger positions

Main Loop Flow

1. Initialize WiFi and web server
2. Register HTTP handlers (/, /control, /preset, /status)
3. On request: Parse parameters, update servo angles
4. Return JSON status response
5. Continue monitoring WiFi client connections

5.2 Web Interface

The embedded web server serves a single-page application:

Control Interface Features

  • Individual Sliders: Five range inputs (0-180°) for each finger
  • Preset Buttons: Pre-configured grip patterns
  • Position Display: Shows current angle of each finger
  • Connection Status: WiFi signal strength indicator

Grip Presets

Preset Name Finger Configuration
Open Hand [180°, 180°, 180°, 180°, 180°]
Fist [90°, 0°, 0°, 0°, 0°]
Pinch [45°, 180°, 180°, 180°, 0°]
Peace [180°, 180°, 90°, 0°, 0°]
OK Sign [90°, 180°, 90°, 0°, 0°]

5.3 API Reference

Endpoints

Endpoint Method Parameters Description
/ GET None Serves control interface HTML
/control GET finger (0-4), angle (0-180) Sets specific finger angle
/preset GET name (preset name) Applies grip preset
/status GET None Returns all finger positions
/move POST JSON array of angles Sets all fingers simultaneously

Example API Calls

# Set thumb to 90 degrees
curl http://192.168.1.100/control?finger=0&angle=90

# Apply fist preset
curl http://192.168.1.100/preset?name=fist

# Get current positions
curl http://192.168.1.100/status

6. Mechanical Design

6.1 Finger Actuation Mechanism

Each finger is controlled by a single SG90 servo using a tendon-based actuation system:

┌─────────────┐
│    Servo    │──► [Tendon Wire] ──► [Finger Joint]
└─────────────┘

Design Principles

  • Tendon Routing: Fishing line serves as tendons from servo horn to finger tip
  • Counter-Force: Elastic bands provide return force when servo releases
  • Joint Hinge: 3D printed living hinges for finger bending

6.2 Assembly Sequence

Step 1: Palm Assembly

  1. Mount servo brackets to palm base
  2. Install five SG90 servos in brackets
  3. Route tendon wires through palm channels

Step 2: Finger Assembly

  1. Assemble proximal, middle, distal segments
  2. Insert hinge pins through joints
  3. Attach tendon terminators to finger tips

Step 3: Integration

  1. Connect fingers to palm using hinge pins
  2. Thread tendons from servos to finger tips
  3. Adjust tension for smooth operation

Step 4: Electronics

  1. Connect servo signal wires to ESP8266 GPIO
  2. Connect VCC and GND to power supply
  3. Install ESP8266 in mounted position

6.3 Design Modifications

The design allows for several customization options:

  • Finger Length: Scalable phalanx lengths
  • Joint Stiffness: Adjustable hinge thickness
  • Grip Style: Interchangeable finger designs
  • Wrist Options: Multiple attachment methods

7. Implementation Details

7.1 Development Environment

Required Software

  • Arduino IDE: Version 1.8.x or higher
  • ESP8266 Board Package: v3.0.x
  • Libraries: Servo, ESP8266WiFi, ESPAsyncTCP

Board Settings

  • Board: NodeMCU 1.0 (ESP-12E Module)
  • Flash Size: 4M (3M SPIFFS)
  • CPU Frequency: 80MHz
  • Upload Speed: 115200

7.2 Source Code Structure

RoboticHand/
├── RoboticHand.ino        # Main sketch
├── ServoControl.h         # Servo management
├── WebServer.h            # HTTP handlers
└── Config.h               # Pin definitions

7.3 Key Functions

setup()

  • Initialize serial communication
  • Configure GPIO pins as outputs
  • Connect to WiFi network
  • Start web server
  • Initialize servo positions

handleControl()

  • Parse GET parameters (finger, angle)
  • Validate input range
  • Update servo angle
  • Return JSON response

handlePreset()

  • Lookup preset configuration
  • Apply angles to all servos
  • Return status JSON

8. Testing & Calibration

8.1 Initial Testing Procedure

Hardware Verification

  1. Verify all servo connections before power
  2. Test each servo individually with test code
  3. Check finger movement range (0-180°)
  4. Verify tendon tension (no binding)

WiFi Verification

  1. Upload sketch and verify serial output
  2. Check for successful WiFi connection
  3. Determine assigned IP address
  4. Ping ESP8266 from computer

Web Interface Testing

  1. Navigate to ESP8266 IP in browser
  2. Verify all sliders render correctly
  3. Test individual finger control
  4. Test preset buttons

8.2 Calibration Procedures

Servo Angle Calibration

  • Each servo may have slightly different center position
  • Adjust offset values in firmware for 0° and 180° accuracy
  • Verify fingers return to neutral position

Tendon Tension Adjustment

  • Too tight: Finger won't return fully
  • Too loose: Finger won't grip fully
  • Optimal: Smooth bidirectional movement

9. Key Features

9.1 Individual Finger Control

The system provides independent control over each of the five fingers:

  • Precise angle adjustment from 0° to 180°
  • Real-time position updates
  • Synchronized multi-finger movement capability

9.2 Preset Grip Patterns

Pre-configured grip patterns for common use cases:

  • Grasp: Power grip for holding objects
  • Pinch: Precision grip for small items
  • Point: Index finger extension
  • Victory: Peace gesture display

9.3 WiFi Connectivity

Built-in WiFi enables:

  • Browser-based control from any device
  • Network integration for IoT applications
  • Remote operation within WiFi range
  • Potential for cloud connectivity

9.4 Scalability

The design supports future enhancements:

  • Additional servos for wrist rotation
  • Force sensors for grip feedback
  • Bluetooth module addition
  • Mobile application integration

10. System Workflows

10.1 Startup Sequence

┌─────────────┐    Power On     ┌─────────────┐
│   Power     │ ──────────────► │  ESP8266    │
│   Supply    │                 │  Initialize │
└─────────────┘                 └──────┬──────┘
                                       │
                                       ▼
┌─────────────┐    Connect     ┌─────────────┐
│    WiFi     │ ◄───────────── │   Network   │
│   Router    │                │  Connection │
└─────────────┘                └──────┬──────┘
                                      │
                                      ▼
┌─────────────┐    Start       ┌─────────────┐
│   Web       │ ◄───────────── │    HTTP     │
│   Server    │                │   Server    │
└─────────────┘                └──────┬──────┘
                                      │
                                      ▼
┌─────────────┐    Initialize  ┌─────────────┐
│   Servos    │ ◄───────────── │   Default   │
│             │                │   Position  │
└─────────────┘                └─────────────┘

10.2 Command Processing Flow

Client Request    ┌─────────────┐    Parse Parameters
─────────────────►│   HTTP      │─────► finger, angle
                  │   Handler   │
                  └──────┬──────┘
                         │
                         ▼
┌─────────────┐    Validate    ┌─────────────┐
│   Range     │ ◄───────────── │   Input     │
│   Check     │                │   Validation│
└──────┬──────┘                └──────┬──────┘
       │                              │
       ▼                              ▼
┌─────────────┐    Update      ┌─────────────┐
│   Servo     │ ◄───────────── │    PWM      │
│   Driver    │                │   Signal    │
└──────┬──────┘                └──────┬──────┘
       │                              │
       ▼                              ▼
┌─────────────┐    Response    ┌─────────────┐
│   Status    │ ◄───────────── │   JSON      │
│   Response  │                │   Output    │
└─────────────┘                └─────────────┘

11. Technology Summary

11.1 Hardware Technologies

Component Technology Purpose
Microcontroller ESP8266 (NodeMCU Lolin V3) Main processing & WiFi
Servo Motors 5x SG90 (Tower MG90S) Finger actuation
Power Supply 5V 2A DC Adapter System power
3D Printing FDM with PLA Mechanical structure
Wiring Dupont/Jumper wires Connections

11.2 Software Technologies

Layer Technology Version/Details
Firmware Arduino Framework ESP8266 Core v3.0.x
Web Server ESP8266WebServer Built-in library
HTML HTML5 + CSS3 Embedded in firmware
JavaScript Vanilla JS Client-side control

11.3 Dependencies

ESP8266 Core (Board Package)
Servo Library
ESP8266WiFi Library
ArduinoOTA Library (optional for updates)

12. Advantages & Benefits

12.1 Cost Effectiveness

  • Total component cost under ₹1,000
  • No expensive manufacturing equipment needed
  • Open-source design eliminates licensing fees
  • 3D printed parts replace expensive molded components

12.2 Educational Value

  • Demonstrates integration of multiple technologies
  • Provides hands-on experience with embedded systems
  • Teaches web server implementation on microcontrollers
  • Shows mechanical design and fabrication

12.3 Accessibility

  • Simple browser-based interface
  • No custom software required on client devices
  • Works with any WiFi-capable device
  • Intuitive slider controls

12.4 Customizability

  • Fully 3D printed allows design modifications
  • Arduino-based firmware is open and modifiable
  • Modular servo control enables expansion
  • Easy to add additional features

13. Challenges & Limitations

13.1 Hardware Limitations

  • SG90 servos have limited torque for heavy grasping
  • Single servo per finger limits independent joint control
  • No force feedback or sensors included
  • Power supply must handle peak servo currents

13.2 Mechanical Limitations

  • PLA may fatigue over extended use
  • Tendon tension may require periodic adjustment
  • Limited finger articulation (single joint per finger)
  • No wrist or forearm movement

13.3 Connectivity Limitations

  • Range limited to WiFi coverage area
  • No internet/cloud integration in current version
  • Single-user operation (no multi-client coordination)
  • Requires existing WiFi network

14. Future Enhancements

14.1 Hardware Improvements

  • Upgrade to stronger servos (MG996R or digital servos)
  • Add force-sensing resistors for grip feedback
  • Include IMU for orientation detection
  • Add battery for portable operation

14.2 Mechanical Upgrades

  • Implement multi-joint fingers with additional servos
  • Add wrist rotation mechanism
  • Use more durable materials (PETG, Carbon Fiber)
  • Design myoelectric control integration

14.3 Software Features

  • Add WebSocket for real-time updates
  • Implement mobile application
  • Add voice control integration
  • Include gesture learning capability

14.4 Connectivity Expansions

  • MQTT integration for IoT platforms
  • Bluetooth control option
  • Cloud dashboard for monitoring
  • Alexa/Google Assistant voice commands

15. Conclusion

RoboticHand demonstrates the powerful combination of accessible hardware, 3D printing technology, and embedded web systems to create an educational bionic hand platform. By leveraging the ESP8266 microcontroller's built-in WiFi capabilities and serving a web interface directly from the device, the project eliminates the need for external servers or smartphone applications.

The success of this project lies in its comprehensive approach:

  1. Mechanical Design: 20 custom 3D printed parts creating a functional articulated hand structure
  2. Electronics Integration: Five servo motors controlled precisely by ESP8266 PWM outputs
  3. Software Implementation: Embedded web server providing intuitive browser-based control
  4. Educational Documentation: Complete build guide enabling replication and learning

The total cost of approximately ₹1,000 makes this project highly accessible for students, hobbyists, and anyone interested in robotics. The 50 hours of 3D printing time, while significant, represents a one-time investment that can be replicated across multiple builds.

This project serves as a foundation for further innovation in prosthetics, robotics education, and IoT applications. The modular design allows for incremental improvements while the core concept remains simple and educational. As 3D printing technology becomes more accessible and microcontrollers continue to advance, projects like RoboticHand will play an increasingly important role in democratizing robotics and prosthetic technology.

Learning Outcomes:

  • ESP8266 firmware development
  • Web server implementation on embedded systems
  • 3D printing for mechanical fabrication
  • Servo motor control and PWM signaling
  • System integration of hardware and software
  • Project documentation and documentation

Appendix: Project Directory Structure

RoboticHand/
├── Documentation/
│   └── Abstract.md              # This documentation
│
├── Hardware/
│   ├── STL_Files/               # 3D printing files
│   │   ├── fingers/
│   │   ├── palm/
│   │   └── mounts/
│   └── Electronics/
│       └── Wiring_Diagram.md    # Pin connections
│
├── Firmware/
│   ├── RoboticHand.ino          # Main sketch
│   ├── ServoControl.h           # Servo handling
│   ├── WebServer.h              # HTTP handlers
│   └── Config.h                 # Pin definitions
│
└── README.md                    # Quick start guide

Mini Project Case Study - RoboticHand 3D Printed Bionic Hand with IoT Control