openSip+Puff aims to provide a cheap, simple, open, and modern alternative input method based on the breath of a user that can be easily mapped to a variety of common actions like mouse clicks and keypresses.
The ultimate goal of this project is to go beyond simple utilitarian functionality and provide a new modality for creative expression that is meaningful for people with or without limited mobility. For me this means musical expression and visual art applications, but you are welcome to take it in whatever direction you want!
In contrast to other DIY sip-and-puff solutions, this project aims to keep the number of parts and assembly steps to a minimum while keeping the focus entirely on the digitization of breath - nothing more, nothing less. The hope is that this device can be manufactured as a true "plug-and-play", standalone device such that the only remaining steps that users will need to complete on their own are to (1) pop the board into an enclosure, (2) attach a mouthpiece with tubing, and (3) plug in a USB cable. With the help of native USB HID functionality, this device should (theoretically) be as easy to set up as any keyboard or mouse - no special drivers needed!
In keeping the focus tight and the parts count low it is expected that this device will be possible to sell for under $100 (ideally around $60). Fewer external parts also means fewer points of failure, so the device should last a while with minimal need for maintenance.
- ATmega32u4 microcontroller running the Arduino Leonardo bootloader, allowing for the device to work as a standard USB HID device (mouse, keyboard, MIDI, etc) without any special drivers.
- MPXV7007GP analog pressure sensor for detecting direction and strength of sips and puffs.
- USB mini-B port so it can be connected to any PC
- 4-pin I2C interface for future expansion (may be removed if a good use case isn't identified)
TODO:
=====
1. Sips and puffs need to be associated with actions (keypresses, mouse clicks, MIDI notes, etc) using some
sort of persistent data structure that can be loaded from EEPROM when the device is powered on.
2. Patterns of sips and puffs should also be supported at some point. For example, one puff for left mouse
click, two puffs for right mouse click.
3. Output raw analog values as serial data over USB to be transformed into other interesting actions by custom
applications or something like Wekinator.
4. Output analog data as MIDI CC changes so the device can be used for expressive musical applications.
TODO:
=====
To make it easy for non-technical users to reconfigure the device, some sort of easy-to-use desktop application
should be built.
Once the firmware is worked out, I'd like to experiment with using Electron and modern web technologies to build
this interface.
TODO:
=====
Connecting a plain plastic tube directly the sensor is fine for prototyping, but is not hygienic for real-world
users. Some sort of easy-to-replace filter(s) should be added to capture saliva and particulates before they
reach the sensor.
I don't know much about these sorts of filters, so if you have some experience or ideas please send them to me!
When I started building this project there weren't any other viable DIY sip-and-puff interfaces out there, but in the past year so a few great projects have sprung up that are worth looking at!
- LipSync - uses an Arduino Pro Micro board and the MPXV7002DPT1 sensor, as well as an optional Bluetooth breakout board. Includes a custom mouth-operated joystick built using 3D-printed parts and FSRs, all housed in a 3D-printed enclosure. Incredible documentation, and available as a kit or fully assembled through Makers Making Change.
- FLipMouse - uses a Teensy LC and the MPXV7007GP sensor. Includes a custom mouth-operated joystick that is nearly identical to LipSync, all housed in a laser-cut acrylic enclosure. Available as a kit through Hackerspace Shop.
- The 'Sup - uses an Arduino Pro Micro and a MPXV7002DP sensor on a breakout board, as well as an off-the-shelf two-axis joystick module. Features a unique 3D-printed mouthpiece that couples the joystick and tubing, though no filters are used.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Use this project to learn, tinker and share with friends. You are completely free to build this project for individuals who need it. Small commercial runs for workshops or other educational uses are also completely cool.
The only reason that a fully-permissive open-source license is not used is to discourage, however naively, abuse through mass production and sale of this project by companies who are not as passionate about the quality and core mission of the project. If you're interested in producing and distributing this project to larger markets, please contact me and maybe we can collaborate!