

Exohand Updated
EMG-controlled assistive robotic hand. Built for ECTE351 by Team Orvyn (Group 19).
- Size
- 76 × 66 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 26
- Nets
- 66
- Pads
- 125
- Tracks, vias
- 0, 0
- Routed
- Not yet
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 17 Apr 2026
- Updated
- 16 Sep 2026
Overview
Exohand Updated is an open-source printed circuit board by muhammadmapkar, from the muhammadmapkar/Exohand_Project repository on GitHub. It is a 2-layer board of 76 × 66 mm with 26 parts on 66 nets.
Its parts include 6 connectors, 2 ICs and 1 switch. It belongs with the NXP (LPC, Kinetis, i.MX RT) boards of this library.
README
README.mdExoHand
EMG-controlled assistive robotic hand. Built for ECTE351 by Team Orvyn (Group 19).
Overview
ExoHand reads surface EMG (sEMG) from the forearm, classifies the muscle activity into a hand gesture, and drives four servo-actuated fingers to match. The current system recognizes rest, fist, and individual-finger gestures (pinky&ring, middle, index, thumb), running the trained classifier directly on the microcontroller. VR integration is planned; not yet in this codebase. — see docs/architecture.md. Runs the trained classifier on-device (no PC needed for inference).
EMG-control concept
- Sample raw EMG at 1 kHz from a single sensor channel.
- Extract statistical features (MAV, RMS, variance, std dev, waveform length, zero-crossing rate, slope sign changes, skewness, kurtosis, IQR) over a rolling 30-sample window.
- Classify the window with a Random Forest trained on EMG collected by the team (plus validation against the public NinaPro benchmark dataset).
- Debounce the result (4 agreeing windows + 150ms hold) before committing to a new gesture.
- Drive 4 servos through a PCA9685 to match the confirmed gesture, moving smoothly rather than snapping.
Full signal-flow diagram: docs/architecture.md.
Hardware stack
- Teensy 4.0 — main MCU for EMG sampling, feature extraction, and on-device RF inference
- PCA9685 servo driver (I2C, 4 channels)
- MG996R servos (or equivalent)
- SEN0240 EMG sensor
- ESP32-C3, for live telemetry/graph relay (
firmware/current/esp32_bridge.ino— self-hosted WiFi AP + WebSocket server)
Repo layout
ORVYN/
├── firmware/ Teensy/ESP32 .ino code — current/ is what's in active use, archive/ is superseded versions
├── web/ static site + the FastAPI live dashboard
├── hardware/ KiCad schematics/PCB, BOM, perfboard build docs
├── signal-processing/ EMG filtering, feature extraction, trained model, datasets
├── docs/ build-log, architecture, decisions, posters
├── media/ screenshots, recordings, concept art
└── _quarantine/ duplicate/superseded files pulled out of the tree (gitignored, see MANIFEST.txt)Nothing failed or superseded was deleted — old firmware versions, every dated PCB backup, duplicate dataset exports, and earlier notebook runs are all kept under the relevant archive/ folders. See docs/build-log.md for the full story of what was tried and what changed.
How to build / run
Firmware: open firmware/current/teensy_final.ino in Arduino IDE with Teensyduino (board: Teensy 4.0), plus the Adafruit PWM Servo Driver and Watchdog_t4 libraries. It includes ai_classifier_model.h, which is checked into firmware/current/ and compiles as-is. To regenerate it from a retrained model, run python3 signal-processing/export_model_to_header.py (loads ExoHand_RF_Model.joblib + ExoHand_Scaler.joblib, writes the header back to firmware/current/ai_classifier_model.h).
Signal processing / training: pip install -r signal-processing/requirements.txt, then signal-processing/ExoHand_EMG_Classifier_RF_V2.ipynb to retrain, or signal-processing/live_predict.py to run live PC-side inference over serial.
Live dashboard: web/dashboard/app.py (FastAPI). Install web/dashboard/requirements.txt, run with uvicorn app:app, open the browser page it serves. Includes a /api/demo mode that fakes EMG data if no hardware is connected.
Website: web/website.html is the current main site (Live Rehab dashboard view, live EMG chart, camera-based sensor-placement assistant). web/archive/ORVYNUpdated.html is an earlier, less developed version.
Hardware: schematics and PCB in hardware/schematics/, BOM in hardware/bom/, perfboard wiring/assembly in hardware/perfboard/.
Credit
Team Orvyn (Group 19). My role: led firmware (Teensy), EMG signal processing, hardware build. Data collection was team effort. Benchmark data from NinaPro.
Parts
26| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | C | Capacitor_SMD:C_0805_2012Metric | 0.1µF1, 470µF1, C_BAT_SENSE1, C_EN1, C_ESP_0P1, C_ESP_10U1, C_PCA_0P1, C_PCA_10U1, C_VBAT_HF1 |
| 6 | R | Resistor_SMD:R_0805_2012Metric | R_BAT_BOT1, R_BAT_TOP1, R_EN1, R_I2C_SCL1, R_I2C_SDA1, R_UART_TX1 |
| 3 | Conn_01x06 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical_SMD_Pin1Left | J2, J3, J4 |
| 2 | Conn_01x02_Pin | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical_SMD_Pin1Left | J5, J6 |
| 1 | C_Polarized | Capacitor_THT:CP_Radial_D8.0mm_P3.50mm | C_VBAT_BULK1 |
| 1 | Conn_01x02 | Connector_AMASS:AMASS_XT30UPB-F_1x02_P5.0mm_Vertical | JBAT_MAIN1 |
| 1 | Conn_01x04_Pin | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical_SMD_Pin1Left | J1 |
| 1 | SW_SPST | Button_Switch_THT:KCD1-101 | SW1 |
| 1 | Teensy4.0 | Teensy40:Teensy40 | U1 |
| 1 | WEMOS_C3_mini | RF_Module:WEMOS_C3_mini | U3 |
Questions
How big is the Exohand Updated PCB?
It measures 76 × 66 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Exohand Updated use?
26 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 Exohand Updated KiCad files?
From the muhammadmapkar/Exohand_Project repository on GitHub, at the commit this page was made from: the board is hardware/schematics/Exohand_Updated.kicad_pcb and its schematic hardware/schematics/Exohand_Updated.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Exohand Updated design in my own project?
Its repository states no licence, so its author keeps all rights: ask muhammadmapkar before reusing the design.
Similar boards
- 2 layers57.3 × 19 mm

- 2 layers98 × 59.5 mm

MCP23017 PCB
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
26 parts915 - 2 layers142.9 × 98.5 mm

- 2 layers86.1 × 86.1 mm

- 2 layers103.8 × 50 mm

Galagino pcb set
harbaum/galagino
A Galaga, Pac-Man and Donkey Kong arcade emulator for the ESP32
26 parts558 - 2 layers20.3 × 34.8 mm

L0 ESP32
Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.
26 parts546MIT - 2 layers40.6 × 50.8 mm

WALTsm
google/walt
A device for measuring latency of physical sensors and outputs on phones and computers
26 parts474Apache-2.0 - 2 layers158.5 × 75 mm
