Skip to the content
PCBKitNew board
2 layers76 × 66 mmExohand Updated, the printed circuit board in 3D

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.md

ExoHand

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

  1. Sample raw EMG at 1 kHz from a single sensor channel.
  2. 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.
  3. Classify the window with a Random Forest trained on EMG collected by the team (plus validation against the public NinaPro benchmark dataset).
  4. Debounce the result (4 agreeing windows + 150ms hold) before committing to a new gesture.
  5. 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

text
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
QtyValueFootprintReferences
9CCapacitor_SMD:C_0805_2012Metric0.1µF1, 470µF1, C_BAT_SENSE1, C_EN1, C_ESP_0P1, C_ESP_10U1, C_PCA_0P1, C_PCA_10U1, C_VBAT_HF1
6RResistor_SMD:R_0805_2012MetricR_BAT_BOT1, R_BAT_TOP1, R_EN1, R_I2C_SCL1, R_I2C_SDA1, R_UART_TX1
3Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical_SMD_Pin1LeftJ2, J3, J4
2Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical_SMD_Pin1LeftJ5, J6
1C_PolarizedCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC_VBAT_BULK1
1Conn_01x02Connector_AMASS:AMASS_XT30UPB-F_1x02_P5.0mm_VerticalJBAT_MAIN1
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical_SMD_Pin1LeftJ1
1SW_SPSTButton_Switch_THT:KCD1-101SW1
1Teensy4.0Teensy40:Teensy40U1
1WEMOS_C3_miniRF_Module:WEMOS_C3_miniU3

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 mm11ua, the printed circuit board in 3D

    11ua

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    26 parts990GPL-3.0
  • 2 layers98 × 59.5 mmMCP23017 PCB, the printed circuit board in 3D

    MCP23017 PCB

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    26 parts915
  • 2 layers142.9 × 98.5 mmCantor MX, the printed circuit board in 3D

    Cantor MX

    diepala/cantor

    Cantor keyboard, a 42 key diodeless split keyboard.

    26 parts756GPL-3.0
  • 2 layers103.8 × 50 mmGalagino pcb set, the printed circuit board in 3D

    Galagino pcb set

    harbaum/galagino

    A Galaga, Pac-Man and Donkey Kong arcade emulator for the ESP32

    26 parts558
  • 2 layers20.3 × 34.8 mmL0 ESP32, the printed circuit board in 3D

    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 mmWALTsm, the printed circuit board in 3D

    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 mmDoj v2, the printed circuit board in 3D

    Doj v2

    kelu124/echomods

    Open source ultrasound processing modules and building blocks

    26 parts463