Introduction: UMIO: Universal Morse Input/Output Device

UMIO is an inexpensive assistive device for deaf-blind users and users with mobility impairments, to enter and read text. It allows a user to use a single button to input text as morse code. Text is then output as morse code to a piezo buzzer.

UMIO currently implements a single app. Text input as morse is parsed as a URL. The URL is then fetched, and page content is encoded as morse, and then output to the piezo buzzer.

In the future, UMIO will work with alternate input and output modalities, and work with existing apps via accessibility APIs.

Step 1: Setup Intel Edison Prototype Hardware

This application was developed on the Intel Edison. Flash the latest firmware and configure the following components:

  • Intel Edison Arduino development board.
  • Seeed studio shield
  • Button input sensor
  • LCD display
  • LED
  • Piezo Buzzer

Step 2: Install Software

The software has been packaged as a Node.js application, and is available via npm.

First connect your edison to Wifi.

Next, open a shell on your Edison via ssh or serial.

Run: "git clone https://github.com/jbeard4/universal-morse-input-output.git umio; cd umio; npm install"

This will take several few minutes to install.

You can then start the server by running "npm start" from the command-line.

umio is built on a software library called "microexpresscion". You can open the microexpresscion diagnostic dashboard by navigating to http://your_edison_ip:8888/ in your web browser. This shows you how button signal input is being parsed.

Step 3: Input URL Via Morse Code

You can input a URL as morse code. The following characters are supported:

  • 0 -----
  • 1 .----
  • 2 ..---
  • 3 ...--
  • 4 ....-
  • 5 .....
  • 6 -....
  • 7 --...
  • 8 ---..
  • 9 ----.
  • a .-
  • b -...
  • c -.-.
  • d -..
  • e .
  • f ..-.
  • g --.
  • h ....
  • i ..
  • j .---
  • k -.-
  • l .-..
  • m --
  • n -.
  • o ---
  • p .--.
  • q --.-
  • r .-.
  • s ...
  • t -
  • u ..-
  • v ...-
  • w .--
  • x -..-
  • y -.--
  • z --..
  • . .-.-.-
  • , --..--
  • ? ..--..
  • ! -.-.--
  • - -....-
  • / -..-.
  • @ .--.-.
  • ( -.--.
  • ) -.--.-

Hold down the button for one second to fetch the web page and output the page contents as morse code.

Press the button while page contents is being outputted to cancel output and input a new URL.

Step 4: Future Work

The next steps will be to improve UMIO as a universal accessibility device. This includes the following:

Support alternate input modalities. Rather than using a button for input, it would be possible to use a camera to capture eye blinks; or potentially to encode signals from an EEG. This would be useful for users with severe physical impairments, such as locked-in syndrome.

Support alternate output modalities, including haptics. Rather than emitting audio, it should be possible to use a motor to trigger vibration. This would be useful for deaf users.

Integrate UMIO with existing app ecosystems. By integrating with existing accessibility APIs on iOS, Android and other operating systems via Bluetooth, it would be possible to use UMIO as an alternate screen reader and virtual keyboard.

Improve universality of the software by targeting inexpensive cell phone hardware. This would enable UMIO to be used as an inexpensive accessibility device without the need for specialized hardware.

It will be important to perform user testing to achieve optimal usability for various classes of target users.

Comments

author
Chanio made it! (author)2015-07-08

Interesting use of morse code.

A simple keyboard could also help...

author
otakuj462 made it! (author)otakuj4622015-07-08

Thank you for your feedback. One intended use case is for users with limited mobility, where a regular keyboard may not be the best choice.

author
amberrayh made it! (author)2015-07-08

This is a cool project! Thanks for sharing.

author
otakuj462 made it! (author)otakuj4622015-07-08

Thanks!

About This Instructable

496views

9favorites

License:

More by otakuj462:UMIO: Universal Morse Input/Output Device
Add instructable to: