Open-source wearable haptic feedback systems for spatial audio, VR/AR, and interactive installations
Transform spatial information into tactile sensations with wearable haptic devices. This project provides complete hardware designs, firmware, and software for building custom haptic feedback systems that respond to OSC (Open Sound Control) messages.
-
Audio-Reactive by Design
- Originally built as audio-reactive LED wearables (sound β light patterns)
- Evolved into audio-haptic feedback systems (sound β tactile patterns)
- Signal-agnostic: responds to any OSC-formatted input (audio, sensors, game engines, etc.)
-
Two Complete Implementations
- Arduino + Bluetooth: Portable system with up to 6 wireless haptic belts
- Raspberry Pi + I2C: High-fidelity system with 8 channels and 120+ haptic effects
-
Professional Hardware
- Custom PCB designs (KiCad projects included)
- Gerber files ready for manufacturing (JLCPCB, PCBWay)
- 3D-printable enclosures (STL and OpenSCAD source)
- Complete Bill of Materials with part numbers
-
OSC Protocol Integration
- Standard OSC namespace for haptic control
- Works with Max/MSP, TouchDesigner, Unity, Pure Data, and more
- WebSocket bridge for web applications
- Regex-based multi-device addressing
-
Pre-programmed Patterns
- Clockwise/counter-clockwise rotation
- Pulse and wave patterns
- 7 customizable pattern slots
- Real-time pattern updates via OSC
-
Production Ready
- Systemd services for auto-start
- OLED IP display for network debugging
- Proper dependency management
- Configuration templates (no hardcoded credentials)
| Feature | Arduino + Bluetooth | Raspberry Pi + I2C |
|---|---|---|
| Haptic Channels | 5 per belt, up to 6 belts | 8 channels |
| Connectivity | Bluetooth (HC-05/HC-06) | WiFi |
| Haptic Effects | On/Off patterns | 120+ DRV2605L effects |
| Portability | βββββ Highly portable | βββ Portable with power bank |
| Setup Complexity | βββ Moderate | ββββ Advanced |
| Cost | ~$30 per belt | ~$150 total |
New to haptics? Start with the Arduino + Bluetooth implementation.
Need high fidelity? Use the Raspberry Pi + I2C implementation.
-
Arduino + Bluetooth Quick Start
- Flash firmware to Arduino
- Pair Bluetooth module
- Run Node.js OSC bridge
- Send your first haptic pattern
-
Raspberry Pi + I2C Quick Start
- Install Raspberry Pi OS
- Clone and install software
- Configure I2C devices
- Send your first haptic effect
- Choosing a Platform - Detailed comparison and decision guide
- Arduino Quick Start - 15-minute setup
- Raspberry Pi Quick Start - 15-minute setup
- Assembly Guide - Step-by-step with photos
- PCB Fabrication - How to order PCBs
- Bill of Materials - Where to buy components
- 3D Printing Guide - Print settings and materials
- OSC Protocol Specification - Complete OSC namespace
- Arduino API Reference - Serial protocol and patterns
- Raspberry Pi API Reference - I2C and effects library
- Max/MSP Integration
- TouchDesigner Integration
- Unity VR Integration
- Research Background - Academic context and publications
on-body-haptics/
βββ implementations/ # Platform-specific implementations
β βββ arduino-bluetooth/ # Arduino + Node.js + Bluetooth
β βββ raspberry-pi-i2c/ # Raspberry Pi + I2C
βββ hardware/ # PCB designs and enclosures
β βββ pcb/ # KiCad projects and Gerbers
β βββ enclosures/ # 3D-printable cases
βββ protocol/ # OSC protocol specification
βββ docs/ # Documentation
βββ tools/ # Development and testing tools
- Spatial Audio Feedback: Directional cues for immersive audio experiences
- VR/AR Navigation: Haptic waypoints and object proximity alerts
- Interactive Installations: Responsive art installations with tactile feedback
- Accessibility: Spatial information for visually impaired users
- Research: Haptic perception studies and HCI research
- Gaming: Immersive tactile feedback for games
- Telepresence: Remote touch and directional communication
from pythonosc import udp_client
client = udp_client.SimpleUDPClient("192.168.1.100", 9999)
# Trigger clockwise rotation on belt 1
client.send_message("/onbody/1/pattern", "CW")
# Trigger specific effect on Raspberry Pi
client.send_message("/onbody/effect/14", 1) # Strong click 100%const ws = new WebSocket('ws://localhost:8080');
ws.onopen = () => {
// Send haptic pulse pattern
ws.send(JSON.stringify({
address: '/onbody/1/pattern',
args: ['PULSE']
}));
};[udpsend 192.168.1.100 9999]
|
[prepend /onbody/1/pattern]
|
[CW( [CCW( [PULSE(
- Microcontroller: Arduino Uno/Nano
- Bluetooth: HC-05 or HC-06 module
- Haptic Drivers: 5x coin vibration motors or LRAs
- Power: 3.7V LiPo battery
- Total Cost: ~$30 per belt
- Computer: Raspberry Pi 3/4/Zero 2W
- I2C Multiplexer: TCA9548A (8 channels)
- Haptic Drivers: 8x Adafruit DRV2605L boards
- Actuators: 8x Linear Resonant Actuators (LRAs)
- Display: SSD1306 OLED (128x32)
- Total Cost: ~$150
Complete schematics, PCB designs, and assembly instructions are available in the hardware documentation.
We welcome contributions! Whether you're fixing bugs, improving documentation, or adding new features, please see our Contributing Guide.
# Clone the repository
git clone https://github.com/MissCrispenCakes/On-body-haptics.git
cd On-body-haptics
# For Arduino implementation
cd implementations/arduino-bluetooth/server
npm install
# For Raspberry Pi implementation
cd implementations/raspberry-pi-i2c/firmware
pip install -r requirements.txtThis project uses dual licensing to cover both software and hardware:
MIT License - All software, firmware, and code are licensed under the MIT License.
- See LICENSE for details
- Includes: Arduino firmware, Python code, Node.js server, test scripts
CERN-OHL-P v2 (CERN Open Hardware License - Permissive) - All hardware designs are licensed under CERN-OHL-P v2.
- See LICENSE-HARDWARE for details
- Includes: PCB designs (KiCad), Gerber files, 3D enclosures (STL/OpenSCAD), schematics, BOM
This ensures both software and hardware freedom while using licenses designed for their respective domains.
This project is ready for OSHWA certification! β
All requirements for Open Source Hardware Association (OSHWA) certification are met:
- β OSHWA-approved licenses (CERN-OHL-P v2 + MIT)
- β Complete design files (KiCad, OpenSCAD, Gerbers)
- β Clear documentation and accessibility
- β Third-party component datasheets included
See OSHWA Certification Guide for step-by-step instructions to get your official OSHW certification mark and UID.
- @rglenn for:
- Production-ready PCB designs and Gerber files for manufacturing
- 3D printed enclosure samples with battery compartment (a wonderful surprise!)
- I2C system implementation and hardware testing
- Expert soldering skills for prototype assembly (saving the project from shaky hands and twitchy eyeballs!)
- Research context from tactile feedback and spatial audio studies
- DRV2605L haptic driver library by Adafruit
- OSC protocol implementation using
osc-minandpython-osc
See AUTHORS.md for complete contributor details.
- Hackaday - "In Pursuit of Haptics for a Better VR Experience" (February 2020)
- Mitacs Grant - "Washable Wearables for Affordable and Aesthetic Augmentation of Visuo-Tactile Sensory Perception Enhancement in Mixed Reality"
- York University Procurement - KDF Entertainment is an official procurement vendor to York University
π‘ Maker Tip: Swap the haptic motors for LEDs and you've got a wearable light display! Same control protocol, different sensory modality. The original prototype used audio-reactive LEDs before evolving into haptic feedback. π
If you find this project useful, consider:
- β Starring this repository
- π Reporting bugs and suggesting features
- π Improving documentation
- π° Sponsoring development
Your support helps maintain and improve this open-source project!
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Website: KDF Entertainment
If you use this project in your research, please cite using the information in CITATION.cff or:
Suggested Citation:
MissCrispenCakes, & rglenn. (2026). On-Body Haptics: Open-Source Wearable Haptic Feedback Systems (Version 2.0.0) [Computer software]. https://github.com/MissCrispenCakes/On-body-haptics
BibTeX:
@software{onbodyhaptics2026,
author = {MissCrispenCakes and rglenn},
title = {On-Body Haptics: Open-Source Wearable Haptic Feedback Systems},
version = {2.0.0},
year = {2026},
url = {https://github.com/MissCrispenCakes/On-body-haptics}
}Zenodo DOI: Coming soon (archive and get DOI by connecting this repo to Zenodo)
See CITATION.cff for machine-readable citation metadata and AUTHORS.md for contributor information.
Built with β€οΈ for the haptics and HCI community