

BionicHand
our project in CEDD source code in bionic hand using esp32s3 micro controller
- Size
- 48 × 121.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 13
- Nets
- 47
- Pads
- 74
- Tracks, vias
- 135, 0
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 2 Jun 2026
- Updated
- 3 Jun 2026
Overview
BionicHand is an open-source printed circuit board by Minecrapft, from the Minecrapft/BionicHand repository on GitHub. It is a 2-layer board of 48 × 121.5 mm with 13 parts on 47 nets, routed with 135 tracks and 0 vias.
Its parts include 4 resistors, 1 capacitor and 1 switch.
README
README.mdRobohand
A simple Arduino sketch to control a robotic hand (servo-based) — provided as Robohand.ino.
Summary
This project contains an Arduino sketch that reads inputs (sensors/buttons/potentiometers) and drives servos to move a robotic hand. Use this README to set up the hardware, upload the sketch, and customize pin mappings or servo ranges.
Files
Robohand.ino— main Arduino sketch (open in Arduino IDE).
Required Hardware
- Arduino board (Uno, Nano, Mega, etc.)
- 3–5 x hobby servos (depending on hand design)
- Power supply for servos (separate 5–6V recommended)
- Jumper wires, breadboard
- Optional: potentiometers, push buttons, flex sensors for control
Wiring (example)
- Connect servo signal wires to Arduino digital pins (example):
- Thumb: D3
- Index: D5
- Middle: D6
- Ring: D9
- Pinky: D10
- Connect servo power (V+) and ground to the servo power supply. Connect servo ground to Arduino GND.
- Connect control inputs (potentiometers or buttons) to analog pins A0–A2 as needed.
Adjust pin numbers in Robohand.ino to match your wiring.
Software & Upload
- Install the Arduino IDE from https://arduino.cc.
- Open
Robohand.inoin the Arduino IDE. - Select the correct board and port under
Tools→Board/Port. - Connect the Arduino via USB and click Upload.
If using external servo power, ensure the external supply is connected and common-grounded with the Arduino before powering servos.
Usage
- Once uploaded, control the hand using the configured inputs (potentiometers/buttons). The sketch maps inputs to servo positions; modify the mapping in the code if needed.
Customization
- Open
Robohand.inoand edit pin definitions and servo limits to match your hardware. - Calibrate servo min/max values to prevent mechanical binding.
Troubleshooting
- Servos jittering: provide a stable external power supply and common ground.
- Servo not moving: check signal pin, correct power, and that the sketch references the correct pin.
Contact
If you want help customizing the sketch or wiring, open an issue or reply here.
ESP32-S3 (connection & run)
This sketch can run on an ESP32-S3-based board with a few small changes. Follow these steps to connect and upload:
- Install ESP32 board support in the Arduino IDE:
- Open
Tools→Board→Boards Managerand install the "esp32" package by Espressif.
- Power and wiring:
- Servos typically need 5V. Use a separate 5–6V servo power supply and connect all grounds together (ESP32 GND ↔ servo power GND).
- Connect each servo signal wire to a free ESP32-S3 GPIO. Example (change pins in the sketch to match):
- Thumb: GPIO 18
- Index: GPIO 19
- Middle: GPIO 21
- Ring: GPIO 22
- Pinky: GPIO 23
- Avoid pins reserved for flash/SPI (commonly GPIO6–GPIO11) and consult your board's pinout for S3-specific restrictions.
- Library and code changes:
- If
Robohand.inouses the AVRServo.h, switch to an ESP32-compatible servo library such asESP32Servo(install via Library Manager) or use a PWM/i2c driver (PCA9685) for many servos. - Update the pin definitions at the top of
Robohand.inoto the GPIOs you wired. - Ensure servo pulse limits are appropriate for your servos (calibrate
min/maxvalues to avoid binding).
- Uploading the sketch:
- In Arduino IDE select
Tools→Board→ESP32S3 Dev Module(or the specific board name) and the correctPort. - Click Upload. If required, press the boot/enable buttons as prompted by the IDE.
- Troubleshooting & tips:
- If servos twitch or reset the board, power them from a dedicated supply and keep a common ground.
- For many servos, using a dedicated PWM driver (PCA9685) reduces load on the ESP32 and simplifies timing.
- Use the Serial Monitor to view debug messages; set the baud rate in the sketch to match (commonly 115200).
These steps should get Robohand.ino running on an ESP32-S3 board. If you want, I can update Robohand.ino to include ESP32Servo examples and default ESP32 pin definitions.
Control via Phone (Web Interface)
To control the robot hand from your phone using a web browser on the local network:
Setup
-
Connect ESP32-S3 to WiFi:
- Add WiFi credentials to
Robohand.ino:cpp const char* ssid = "YOUR_WIFI_SSID"; const char* password = "YOUR_WIFI_PASSWORD"; - Initialize WiFi in
setup():cpp WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } Serial.println(WiFi.localIP()); - Note the IP address printed to the Serial Monitor (e.g.,
192.168.1.100).
- Add WiFi credentials to
-
Create a simple web server:
- Add these includes at the top of
Robohand.ino:cpp #include <WiFi.h> #include <WebServer.h> - Create a WebServer instance:
cpp WebServer server(80); // Listen on port 80 (HTTP) - In
setup(), define a handler that serves an HTML control panel:cpp server.on("/", HTTP_GET, []() { String html = "<html><body style='font-family:Arial'>" "<h1>Robohand Control</h1>" "<button onclick=\"fetch('/servo?pin=18&pos=90')\">Thumb Open</button>" "<button onclick=\"fetch('/servo?pin=18&pos=0')\">Thumb Close</button><br>" "<button onclick=\"fetch('/servo?pin=19&pos=90')\">Index Open</button>" "<button onclick=\"fetch('/servo?pin=19&pos=0')\">Index Close</button><br>" "</body></html>"; server.send(200, "text/html", html); }); - Add a servo control endpoint:
cpp server.on("/servo", HTTP_GET, []() { int pin = server.arg("pin").toInt(); int pos = server.arg("pos").toInt(); // Attach servo and move to position // (details depend on your Servo library) server.send(200, "text/plain", "OK"); }); - Start the server in
setup():cpp server.begin(); - In
loop(), handle incoming requests:cpp server.handleClient();
- Add these includes at the top of
-
Access from your phone:
- Connect your device to the
RoboHand-S3WiFi network (password:12345678). - Open a web browser and navigate to:
http://192.168.4.1 - No port number needed — it runs on port 80 (standard HTTP), so the browser uses it automatically.
- You should see the Robohand control panel with buttons to open/close fingers.
- Connect your device to the
-
Customize the web interface:
- Add sliders for smooth servo control:
html <input type="range" min="0" max="180" value="90" onchange="fetch('/servo?pin=18&pos=' + this.value)"> - Add visual feedback (color change, status display) using JavaScript.
- Add sliders for smooth servo control:
Troubleshooting
- Phone can't find the ESP32: Ensure both phone and ESP32-S3 are on the same WiFi network.
- Web page doesn't load: Check the IP address from the Serial Monitor (e.g., 192.168.1.), and make sure no firewall is blocking port 80.
- Servos don't respond: Verify the
/servoendpoint is correctly wired to your servo control code.
Parts
13| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 10k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R1, R2, R3 |
| 3 | Screw_Terminal_01x02 | TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type073_RT02602HBLU_1x02_P5.08mm_Horizontal | BATTERY_INPUT1, BUCK_TB1, PCA9685_TB1 |
| 2 | Conn_01x06 | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | EMG_SENSOR1, PCA9685 |
| 2 | Conn_01x22 | Connector_PinSocket_2.54mm:PinSocket_1x22_P2.54mm_Vertical | ESP32_LEFT1, ESP32_RIGHT1 |
| 1 | 20k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R4 |
| 1 | 470u | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C1 |
| 1 | SW_DPST_x2 | Button_Switch_THT:SW_PUSH_1P1T_6x3.5mm_H4.3_APEM_MJTP1243 | SW1 |
Similar boards
- 2 layers40 × 20 mm

- 2 layers74.9 × 49.5 mm

- 2 layers35 × 29 mm

MagSpoofTC
samyk/magspoof
A portable device that can spoof/emulate any magnetic stripe, credit card or hotel card "wirelessly", even on standard magstripe (non-NFC/RFID) readers.
13 parts4.2k - 2 layers20.6 × 23.6 mm

AO-03 signal amplifier
fossasia/pslab-scripts
Pocket Science Lab - Scripts for Sensor Experiments
13 parts1.6kApache-2.0 - 2 layers47 × 35.6 mm

- 2 layers95 × 95 mm

Cube batteryboard
willem-pennings/balancing-cube
A cube that balances itself in a corner or edge using reaction wheels
13 parts1.1kGPL-3.0 - 2 layers15.2 × 20.3 mm

Pt100stick
VoronDesign/Voron-Hardware
Cool Hardware designed by the Voron Design group
13 parts1.1kGPL-3.0 - 2 layers53.9 × 23.2 mm

Buffer
hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI
13 parts1kGPL-3.0
Questions
How big is the BionicHand PCB?
It measures 48 × 121.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the BionicHand use?
13 parts. 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 BionicHand KiCad files?
From the Minecrapft/BionicHand repository on GitHub, at the commit this page was made from: the board is all-project-files/bionic_hand_pcb/bionic_hand.kicad_pcb and its schematic all-project-files/bionic_hand_pcb/bionic_hand.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the BionicHand design in my own project?
Its repository states no licence, so its author keeps all rights: ask Minecrapft before reusing the design.