Skip to content

SonDinh23/EMGBand-HandBionic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✋ EMGBand - Hand Bionic

EMGBand logo
Muscle intent in → bionic motion out.

License: GPL 3.0   LinkedIn: dinhsonn

EMGBand / Hand Bionic is a full-stack, open hardware kit that turns forearm muscle signals into predictable, servo-safe hand motion. It is built to be hackable, reproducible, and fast to demo: one bill of materials, one firmware pair (ring + hand), one Flutter app to calibrate and ship.

Designed for makers, researchers, and product teams, EMGBand focuses on reliability, safety, and repeatability. The repo bundles manufacturing-ready assets (Gerbers, BOMs), production photos, a tested ESP32 firmware pair, and a Flutter app that makes calibration and demos straightforward.

Table of Contents

MyoBand front Main block Sensor block

Wearable EMG ring + controller blocks from the latest build.

What this repo delivers

  • Hardware you can fabricate: KiCad projects for the MyoBand EMG front-end, hand controller, and modular sensor blocks. Gerbers, pick-and-place, and reference photos are ready for a quick manufacturing turn.
  • Firmware that guards the hardware: ESP32 (ring + hand) stack with EMG filtering, intent classification, BLE services, OTA hooks, and stall-safe servo control so experiments stay repeatable and safe.
  • App that closes the loop: Flutter client to scan, pair, stream EMG, calibrate thresholds (Line/Radar), push configs, and swap control modes without reflashing.
  • Media to build confidence: Photos and demo videos to set assembly expectations before you order or solder.

Quick gallery

See how the wearable comes together before diving into schematics or code.

Real build 1
📸 Assembled unit 1
Real build 2
📸 Assembled unit 2
Real build 3
📸 Assembled unit 3
Real build 4
🖼️ Side profile
Real build 5
🔬 Sensor block close-up
Real build 6
🔗 Strap view

Live demo videos

If embeds do not autoplay in your viewer, use the direct links: Demo1.mp4 · Demo2.mp4.

Platform at a glance

Layer Highlights
🛠️ Hardware Low-noise EMG front-end, modular controller blocks, ready-to-manufacture assets, BOMs aligned to the photos you see.
🧠 Firmware ESP32 (ring + hand), FreeRTOS, NimBLE, OTA-ready, Line/Radar classifiers, servo current and motion guards to avoid stalls.
📱 App Flutter UX for BLE JSON control, half-float EMG streaming, auto pair/connect, per-user calibration, and live plots.

Architecture snapshot

Signal path in two stages: capture and clean EMG on the ring, classify intent and drive actuators on the hand controller. Calibration data lives in the app and syncs over BLE when you change modes.

Raw EMG
⚡ Raw EMG capture
Line mode
🔎 Line thresholds
Radar mode
🔁 Radar/Spider matching
Detection percent
✅ Match confidence
Distance metric
➖ Similarity metric
App UI
📱 Flutter app in action

Deep dives

Fast start

  1. Fabricate / assemble: pick your board set from hardware; use the included Gerbers and assembly files to keep builds consistent with the photos.
  2. Flash firmware: open firmware/Embedded in VS Code + PlatformIO, select the target (ring/hand), and run pio run -t upload.
  3. Pair with the app: run the Flutter app (see app/README.md), scan and save Hand + MyoBand, then start EMG streaming.
  4. Calibrate deliberately: choose Line or Radar, adjust thresholds/templates, push to devices, and watch the live plots to confirm stability.
  5. Demo safely: use the stall/over-activity protections while you tune grip strength or motion ranges.

Tech highlights

  • Half-precision EMG streaming keeps BLE lean; float32 reconstruction happens in the app for analysis.
  • Dual control modes: Line (summed thresholds for fast response) and Radar/Spider (template similarity, ≥70% match) for finer intent mapping.
  • Safety nets: relax-before-use gating, over-activity clamps, current-based stall detection on servos, watchdog-backed tasks, and OTA hooks for quick fixes.
  • UX polish: LED/buzzer cues, auto reconnect, smoothed charts, per-grip calibration profiles, and JSON-based control that is easy to script.

Licence

This project is licensed under the GNU GPLv3.
Compared to permissive licences like MIT, GPLv3 requires that if you modify this code and distribute your version (including in commercial products), you must also release your changes under the same GPLv3 licence and provide the corresponding source code.

This way, everyone can benefit from improvements built on top of this project.
If this licence causes issues for your intended use, feel free to contact me – I’m open to discussing alternatives.

Thanks

Huge thanks to contributors, early testers, and the open-source toolchains that made this build possible. Enjoy hacking, and share what you build.

About

Full-stack 6-ch dry-electrode sEMG wearable (ESP32/BLE, 1 kHz/ch, JSON presets) with DC removal + HPF/LPF + Kalman DSP and dual-path gesture control (Amplitude thresholds + 6-ch Radar-shape matching) + Flutter app; SNR>=8 dB, latency<=80-100 ms, >=85% online (4 grips)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors