Accessibility Tools for Physical Computing

This page lists tools, techniques, and resources that may be helpful to students with differing abilities who want to build the projects described on this site. It is a constant work-in-progress, so if you have suggestions for additions, please let us know.

General Resources

Tactile Schematics

The Physical Computing schematics redesigned for tactile use and a style guide for how to design them, available for download at

Blind Electronics Blog

Ken Perry’s Blind Electronics blog  is on all things electronics. His post on Arduino setup With Windows Screen Reader is useful for Windows users. He’s got some useful notes on Snap Circuits too.

The Blind Arduino Project

An effort led by Joshua Miele “to better understand barriers faced by blind people wanting to participate in the vibrant global culture of DIY hardware prototyping.” Josh’s blog has a wealth of information, including: a detailed description of the Arduino Uno , an introduction to the Grove shield and notes on compiling and uploading from NotePad++ on Windows are all useful posts.

APH has a good image library of SVG graphics that’s useful in a variety of educational subjects. The Mathematics ones are likely most relevant here. APH has other useful tools as well, like their Braille Blaster Braille conversion editor, and a few good talking calculators as well.

The Smith-Kettlewell Technical File

The Smith-Kettlewell technical file “was a publication by and for blind and visually-impaired electronics professionals and enthusiasts”. Running from 1980-1998, it covers a range of technical topics with practical advice on topics like soldering, using power tools, electronic components, logic tools and testers, and more. It’s useful for anyone interested in electronics, and formatted in a way that’s accessible for assistive reading devices like screen readers and Braille readers. Thanks to Ken Perry for the link.


Here are some notes on using a programming editor, with specifics on Visual Studio Code.

Visual Studio Code

Microsoft Visual Studio Code is a decent text editor that is optimized for screen readers. If you have the Arduino IDE installed on your machine, the Arduino Plugin for VS Code makes a good screen reader-friendly editor (thanks Ken, Josh and John Schimmel for the tip). The Arduino Plugin gives you access to most of the tools in the Arduino IDE: boards manager, library manager, examples, compile and upload, and serial monitor. The VS Live Share Plugin allows you to share code live with other users over a network in real time as well. The Accessibility for VS Code page is a useful intro to features in the editor.

Arduino-cli Command Line IDE

There is now an officially supported command-line interface for the Arduino IDE. Here are some tips on how to set up the arduino-cli environment. With these instructions, you can use the command line IDE with your favorite text editor.

Command-line alternative to reading serial input

On MacOS and Linux, the command line allows you to read input from a serial port just as you would from a file, using the cat command. cat /dev/cu.usbmodemXXXX will open an Arduino’s serial port, if no other application has it open already. control-C will close it. If you’ve got a continually repeating serial output, you may prefer to use the less command instead of the cat command. less /dev/cu.usbmodemXXXX will also print out the serial output, but it will stop after each screenful. Type the spacebar to page through multiple screens, or use the arrow keys to read up and down. Type q to exit.

Raspberry Pi Tools

Raspberry VI is a forum and tools for Pi support visually impaired users. They’ve been working on, among other things, a working and stable version of Emacspeak for the Pi.

Here’s a tutorial on Setting up a Raspberry Pi and securing it with command line interface only. This tutorial is aimed at the ITP environment specifically.

Debugging Tools

Emic2 text-to-speech module

The Emic2 test-to-speech module  is an alternative to using the Arduino IDE Serial Monitor for debugging.It’s a piece of hardware that you can plug it into your Arduino’s serial transmit (TX) or softwareSerial transmit pin, and it will speak whatever you send out the serial pin via Serial.print(), Serial.println(), or Serial.write(). You can get it from Parallax, SparkFun or Adafruit. The Emic2 manual is available online. Here is a barebones code example for the Emic2. (Thanks to John Schimmel of DIYAbility for the tip)

General Tools TS04 Bluetooth Connected Multimeter

The TS04 Multimeter is a multimeter that connects to an Android/iOS app that works through a screen reader. It is possible to write your own HTML interface for the TS04 meter as well, using the web-bluetooth JavaScript framework. Here are some details on the TS04 protocol. You can connect to the connect to the TS04 meter from this link if you have one. This only works on the Chrome browser, as of this writing.

Piezo Buzzers and Speakers

Because sometimes an LED just won’t do. These buzzers vibrate in the audible range when you apply 3-5V across their pins. You can drop them into the Blink sketch with no change in code and you’ll hear the results. A useful replacement for LEDs when you need auditory instead of visual feedback. Large Piezo Alarm – 3kHz from SparkFun or 2KHz buzzer from Adafruit or 3900kHZ Buzzer from Digikey or 4kHz Buzzer from Solarbotics

Similarly, if you want a replacement for a dimming LED, use a speaker and the tone() function. An 8-ohm speaker will work pretty well with a 220-ohm resistor in series with it, so you can swap an LED for a speaker and swap analogWrite(pinNumber, x); for tone(pinNumber, x*10); in most cases and get an audible result, because analogWrite() takes a number from 0 to 255 as the second parameter, and a tone() from 200 – 2550Hz is reasonably audible.

Grove Components

SeeedStudio’s Grove components are useful for building projects without a breadboard. The Blind Arduino Blog has some notes on using Grove. In addition to the Grove Shield and the components, there’s also a MKR Connector Carrier that’s compatible with Grove for the MKR series Arduinos. Here are a few useful Grove part numbers from Digikey: