How we built itnspiration
This project was inspired by the need to create more accessible computing interfaces for people with limited mobility. We were motivated by the idea that simple actions like sipping and puffing through a sensor could unlock full control of a computer. The thought that we could turn basic breath patterns into mouse movements, clicks, or even keyboard shortcuts was both exciting and meaningful — technology for empowerment.
What We Learned
Through this hackathon, we learned how hardware and software integration can come together to form a seamless user experience. On the hardware side, we explored differential air pressure sensors, ADC scaling, and noise filtering. On the software side, we dove into: 1. Writing HID over GATT (Bluetooth Low Energy) services in Python and C. 2, Mapping HID keycodes into byte arrays like [0x01,0,0x06,0,0,0,0,0,0] where the first byte encodes modifiers like Ctrl, and the third byte represents a letter key. 1. Using state machines to classify short sip, long puff, and continuous actions. 2. Configuring Linux device nodes like /dev/uinput and BlueZ to emulate a real keyboard and mouse.
How We Built It 🛠️
1. Hardware Layer: We connected an MPXV7002DP air pressure sensor to the BeagleBone’s ZenHat ADC, scaling the 5 V signal down safely with a resistor divider.
2. Signal Processing: Raw ADC values were converted into pressure in kPa, filtered, and classified into sip/puff gestures with timing thresholds.
3. Bluetooth HID: We attached an Asus USB-BT500 dongle, set up BlueZ with HID over GATT, and created a composite device that appears to any computer as a standard keyboard and mouse.
4. Voice & AI Extension: We added optional voice recognition and Snowflake Cortex LLM integration to map natural-language commands (like “open Chrome”) into HID key sequences.
Challenges We Faced ⚡
• Electrical safety: Scaling down 5 V sensor outputs to the ADC’s 3.3 V limit without losing resolution.
• BLE HID quirks: Ensuring that our HID Report Map matched the exact number of bytes in our notifications — otherwise the computer ignored our input.
• Latency: Avoiding backlogged BLE notifications that caused delayed cursor movement.
• Command mapping: Building a flexible system that can handle typos (like “cpoy” → copy) and still generate the correct HID array.

Log in or sign up for Devpost to join the conversation.