jasonwebb / openSipPuff

Simple, low-cost "sip and puff" USB interface for expressive interactions, enabling breath-based control of keypresses, mouse actions and much more using USB HID.
11 stars 4 forks source link
adaptive-technology arduino assistive-technology breath electronics sip-and-puff

openSip+Puff

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.

Features

Hardware

Firmware

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.

Software

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. 

Mechanical

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!

Similar projects

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!

License

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!

Creative Commons license

Media

Assembled prototype