A robust 16-DOF hand/finger tracking wearable standard Bluetooth Human Interface Device (BLE HID) designed for humanoid teleoperation and collecting embodied AI training datasets.
- 16-DOF Finger Tracking: Full hand tracking with 16 Hall effect sensors for precise joint angle measurement
- Wireless Connectivity: Standard BLE HID protocol (~100Hz wireless transmission)
- Multi-Mode Support: Generic HID and gamepad modes with custom firmware
- 9-DOF Orientation Tracking: Optional BNO085 IMU integration (Accelerometer/Gyro/Magnetometer)
- Custom Hardware: Purpose-built PCB with analog multiplexer for efficient sensor management
- ESP32-C3 MCU: Built-in BLE, WiFi, and battery charging capabilities
- All-Day Battery: 3.7V 2000mAh lithium polymer battery with power management
- Wearable Design: Fully 3D printable exoskeleton optimized for comfort and accuracy
- Power Management: Integrated power switch and LED status indicators
- Microcontroller: Seeed XIAO ESP32-C3 (RISC-V 32-bit @ 160MHz)
- Sensors: 16x Hall effect sensors + magnets for joint tracking
- IMU: BNO085 9-DOF sensor (optional)
- Multiplexer: Analog multiplexer for sensor input management
- Battery: 3.7V 2000mAh Li-Po with ETA4054S2F charging chip
- Seeed XIAO ESP32-C3 [Amazon]
- Hall Effect Sensor [Amazon]
- BNO085 IMU Module [Amazon]
- Adjustable Hand Strap [Amazon]
- Finger Velcro Loops [Amazon]
- Wire Zip Ties [Amazon]
- M2 Screws [Amazon]
- Lipo Battery [Amazon]
- Power Switch [Amazon]
- Status LED [Amazon]
- JST Connectors + Wires [AliExpress] (only if using custom PCB)
- Multiplexer Module [Amazon] (only if NOT using custom PCB)
| Function | GPIO | Pin Label | Notes |
|---|---|---|---|
| Multiplexer Control | |||
| S0 | 10 | D10 | Multiplexer select bit 0 |
| S1 | 9 | D9 | Multiplexer select bit 1 |
| S2 | 6 | D4 | Multiplexer select bit 2 |
| S3 | 7 | D5 | Multiplexer select bit 3 |
| User Interface | |||
| Boot Button | 9 | D9 | Built-in XIAO button |
| Mode Button | 10 | D10 | PCB-mounted button |
| Status LED | 5 | D3 | Power/status indicator |
| BNO085 IMU (Optional) | |||
| I2C SDA | 21 | D6/TX | IMU data line |
| I2C SCL | 20 | D7/RX | IMU clock line |
The BNO085 9-DOF IMU provides orientation tracking to complement finger position data. This is an optional component that can be added for enhanced hand tracking capabilities.
I2C Connection:
- SDA: GPIO 21 (D6/TX) - I2C Data line
- SCL: GPIO 20 (D7/RX) - I2C Clock line
- VCC: 3.3V power supply
- GND: Ground connection
- I2C Address: 0x4B (default)
Optional Connections:
- RST: Not currently implemented (software reset used instead)
- INT: Interrupt pin (not used in current implementation)
- Button Conflicts: Boot button (GPIO 9) and Mode button (GPIO 10) conflict with multiplexer pins S1 and S0
The IMU is configured for:
- Sensor Fusion: Game Rotation Vector mode
- Update Rate: 200Hz (5ms intervals)
- Auto-Detection: System continues operation if IMU is not connected
- Data Output: Quaternion format for orientation representation
Breakout Board Recommendation:
- GY-BNO085 Module [Amazon]
- PlatformIO IDE extension
- 3D printer for mechanical components
- PCB manufacturing (or breadboard for prototyping)
- Components listed in BOM (see PCB directory)
- Clone this repository
- Open firmware project in PlatformIO
- Install dependencies (automatically handled by platformio.ini)
- Build and upload to XIAO ESP32-C3
- Assemble mechanical components
- Calibrate sensors using built-in calibration mode
- ResponsiveAnalogRead ^1.2.1: Sensor input filtering
- NimBLE-Arduino ^1.4.1: Bluetooth Low Energy
- Adafruit BNO08x ^1.2.3: IMU sensor library
The eidon-glove includes a comprehensive web-based visualizer for real-time hand tracking data visualization and analysis.
A browser-based 3D hand visualization tool that:
- Real-time 3D Hand Model: Displays a detailed 3D hand that mirrors your glove movements
- IMU Orientation Tracking: Shows precise hand orientation using quaternion data from the BNO085 IMU
- 16-DOF Finger Tracking: Visualizes all finger joint movements with color-coded angle displays
- Multi-Device Support: Can connect to multiple gloves and trackers simultaneously
- Data Recording & Playback: Record hand movements and play them back for analysis
- 🎯 Gimbal-Lock Free: Stable orientation tracking without axis flipping at extreme angles
- 🔄 Auto-Reconnect: Automatically reconnects to previously paired devices on page refresh
- 🎨 Color-Coded Visualization: Device-specific colors for easy identification
- 📊 Real-Time Data: Live quaternion values, Euler angles, and joint positions
- 🎮 HID Protocol: Uses standard Web HID API for direct browser connection
- 💾 Session Recording: Capture and save hand movement sequences
- Open the Web App: Navigate to
/web/index.htmlin a modern browser (Chrome/Edge recommended) - Connect Your Glove: Click "Connect" and select your eidon-glove from the HID device list
- Calibrate: Use the "Calibrate" button to zero the sensor baseline
- Visualize: Watch the 3D hand model mirror your real hand movements in real-time
- Chrome 89+ or Edge 89+ (Web HID API support required)
- HTTPS Connection (required for Web HID API)
- Modern GPU (WebGL support for 3D rendering)
- Communication: Web HID API for direct glove communication
- 3D Rendering: Three.js for WebGL-based hand visualization
- Coordinate System: Optimized quaternion mapping
(x, z, -y, w)for stable orientation - Update Rate: ~60fps visualization with real-time sensor data
- Data Format: 24-byte HID reports containing joint angles + quaternion data
web/
The web visualizer provides an intuitive way to validate glove functionality, debug sensor issues, and demonstrate the full capabilities of the eidon-glove system.
eidon-glove/
├── firmware/ # ESP32-C3 firmware (PlatformIO)
│ ├── src/ # Main source code
│ ├── lib/ # Custom libraries
│ └── platformio.ini # Build configuration
├── pcb/ # KiCad PCB design files
├── cad/ # 3D printable components
├── web/ # Web interface (if applicable)
│ ├── index.html # Main web interface
│ ├── script.js # Core visualization logic
│ ├── style.css # UI styling
│ ├── tetris.html # Simple Tetris game demo
│ └── piano.html # Simple five key piano demo
└── images/ # Documentation images
This project builds upon excellent open-source work:
- Project-Homunculus: Original 3D models and mechanical design
- finger-tracker: Original firmware architecture
- glove-v3: Current PCB design foundation
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is released under an open-source license. See individual component repositories for specific licensing terms.
Status: Active development - hardware tested, firmware functional, documentation in progress.

