Wednesday, May 25, 2016

What is the Blind Arduino Blog?

There is nothing new about blind makers -- we have a long history of creativity and innovation in order to get access to the information we need to do the things we want to do. We also have a long history of sharing how-to information among ourselves in order to support our community in achieving our goals and potential. The Blind Arduino Blog follows in this proud tradition.

Bob Gunderson's Braille Technical Press was a great, mid-century example of blind people supporting other blind people in building the tools they need. It largely focused on amateur radio tools and techniques, but it was an early pioneer in the blind DIY electronics genre. Bob worked as an electronics teacher at the New York Institute for the Blind and published the Braille Technical press in the 1950s as a way of documenting the accessible tools he and his students developed so that other blind hams could build and use them.

More recently in the 1980s and 90s, Bill Gerrey at The Smith-Kettlewell Eye Research Institute (where I happen to work) published the Smith-Kettlewell Technical File -- a publication inspired by Gunderson's earlier magazine. In addition to publishing instructions for building all kinds of useful accessible test equipment and refining the technique of circuit description, the Technical File published a series of excellent tutorial articles on techniques for blind solderers.

With the advent of open-source, relatively standardized, microprocessor-based project kits like Arduino, the kinds of devices that can be built by the casual maker at home have become quite sophisticated. In fact, Arduino is an ideal platform for creating a variety of accessibility devices which blind makers and users might find useful. For example Arduino would be perfect for building tools like audio and tactile meters and gauges which could be driven by any manner of sensors and detectors. From accessible scales to timers, range finders, multimeters and beyond, Arduino could make it relatively easy to design and share accessible tools which can be endlessly modified, adapted, and improved to meet a wide range of applications and needs.

A little googling reveals that there are designs for a number of Arduino-based accessibility devices scattered across the net. However, none that we have found are intended to be built by blind people, Nor is the documentation necessarily accessible. Furthermore, the fact that they are from all over the place means that they are inconsistently documented and occasionally hard to find.

The Blind Arduino Blog is another step along the road paved by Gunderson and Gerrey. Its intent is to provide a public clearing house for blind makers who want to build accessible devices with Arduino. The project has two main objectives:

  1. To provide clear instructions and accessible resources for blind people who want to develop for Arduino, and
  2. To Assemble a library of accessible project descriptions for devices that might be of particular use for blind people.

Before we can begin assembling our library of accessible Arduino devices for blind makers, there are a number of hurdles to be overcome. We can build on Bill Gerrey and Bob Gunderson's hardware-assembly description techniques to document how to build the Arduino hardware, but the coding component needs some R&D. First we need to identify and document the accessible tools and resources for learning, writing, and uploading code to the Arduino itself.

There are many different Arduino boards and accessories, and many different software tools available for coding, uploading, and debugging. Thus, the first posts to this blog will document our investigations into which boards, tutorials, and other tools are most accessible, as well as any work-arounds or tricks for getting the most out of them as a blind user. Once we have a nice foundation of accessible tools for Arduino development on which to build, we can move on to our long-range plan of collecting and developing accessible instructions for building a wide variety of accessibility devices based on Arduino. My own personal interest is in duplicating a number of devices from the S-K Technical File recast in Arduino. As our group learns and grows, I have confidence that the depth and diversity of projects will expand well beyond what I currently imagine.

Some Comments on Platforms, Screen Readers, and Browsers

Arduino software development can be done on Linux, Mac, Windows, and other platforms. This blog will focus on identifying tools that are Windows based. For folks who are comfortable in Linux, I suspect that is the easiest and most accessible path for Arduino development. However, most people are a little intimidated by Linux. While Apple has done great work with VoiceOver, the vast majority of blind users are still on Windows. For these reasons, we are committed to charting an accessible Arduino-development path through Windows. This doesn't mean that we won't include some posts on tools for other platforms, it just means that the emphasis here will be on tools for Windows.

In addition, in making our judgements about accessibility of tools and informational resources, we will assume the default screen reader/browser combination of NVDA and Firefox. Certainly there are other screen readers and browsers and preferences will vary, but web site performance will as well. Since we can't test all combinations, we will generally stick to NVDA and Firefox when we test Arduino resource sites for accessibility.


  1. I've dabbled with hobby firmware for a while, not getting anywhere fast. On the up side, bookshare has lots of maker info, and books specifically about Arduino. But on the downside, the "processing" IDE seems completely inaccessible.
    The first thing I need a tutorial on is how to go about blinking a LED on an evaluation board using the command line -- working outside of the IDE. I've found no tutorials on how to do this. (Any light probe could tell you if you blinked the LED) but I've found no tutorials on how to get started without the IDE.
    I've had great success with SDCC (the small device C compiler)
    which is command-line based, and used it to port some firmware originally written in the commercial Keil compiler to make an MP3 player open source; see it here:
    My husband designed the hardware for an article in Nuts and Volts. But it used the 8051 and there is more info on programming the Arduino these days.
    I also have had great success playing with the Paralax Basic Stamp
    its IDE seems fully accessible and there is tons of tutorial and accessible documentation online. It was used in the 1990s mainly to teach introductory firmware design to middle and high school students.
    Also very accessible is Win AVR:
    as long as you use the command line. I wrote some primitive firmware for an audible compass I'm still messing around with which uses the ATTiny26
    What turned me on to the AVR was the AVR butterfly, which was around before Arduino. It was a gimmick, a tiny Atmel evaluation board that could be worn like a conference badge:
    And Joe Pardue of serial port cookbook fame wrote an ebook tutorial on how to program it with Win AVR. I wrote to Joe and he kindly sold me an accessible version of the book The Butterfly can still be gotten from Mouser or DigiKey but Joe's page has disappeared, probably because the Butterfly isn't as sexy as it used to be. The book is titled:
    C Programming for Microcontrollers Featuring ATMEL's AVR Butterfly.
    If Joe can be tracked down I'm sure he'd be willing to sell accessible copies to other blind makers. The book is clear and beginner friendly. But the original PDF he sold wasn't accessible at all.
    As far as Linux goes, I think any serious blind maker really should learn it. You can run Debian on the most ancient of machines, and its installer now talks. There is also Talking Arch,
    the Speakup-enabled Fedora,
    Vinux of course
    and my guide on Eyes-Free Linux under Windows, which walks you through installing Linux on a virtual machine:
    NetBSD and OpenBSD are also very accessible to install -- search for guides on Headless install to learn how to install them using your Windows or Mac computer as a terminal. They both will run SDCC at least.
    What makes Linux so daunting is all the depricated (out of date) information. Sighted people just click on stuff; we blind people need to figure out how to install it without being able to read the screens of the usually graphical installer. The above guides should clear up matters for the neophyte.

  2. Hi, Deborah!

    Thanks a ton for all these great resources.

    I think getting the IDE to be accessible might be a worthy long-term project, but for the moment, I think we are going to look for ways to work in the text editor of your choice, then use command-line tools to upload your sketch to the board.

    One approach you might consider trying (and one I'm currently evaluating) is using Python as a way of uploading to the Arduino hardware, as well as for doing active experimentation and hardware debugging on the board. For example, check out the Thearn/Python Arduino Command API:

    Incidentally, instead of using an LED for this project, I suggest using a continuity tester if you still have one from your Little School days, or possibly an audio logic probe which I think you can still get from Radio Shack.

    Anyway, I hope you plan to contribute more -- it sounds like we could use your experience!

    Also, please consider coming to a LightHouse Labs meeting some time if you can make it up to Berkeley. We would love to have you!


  3. This is quite an exciting initiative! I played with a small Atmel board and WinAVR very briefly in the course of my studies and remember wishing I had more time and some accessibility resources so I could bypass asking someone where to insert the little wires, LEDs and buzzer. I also remember thinking that maybe embedded/headless devices would be more accessible than model-driven software development.

    As for IDEs, I finished my hardware course with a pen-and-paper exam and could produce useful programs that way. So the text editor of your choice should be fine. It was mostly the hardware that had me wondering where to go next. But an IDE could definitely be useful, in particular if there are any emulators available. This is how I dealt with writing programs for the MIPS architecture and that worked very well.

    Oh, and it's great to have the opportunity to participate in a California-centered project, albeit more as a student than a teacher. Everytime I read a science textbook from around that area I want to come visit. :-)

  4. Programming is very interesting and creative thing if you do it with love. Your blog code helps a lot to beginners to learn programming from basic to advance level. I really love this blog because I learn a lot from here and this process is still continuing.
    Love from Pro Programmer

  5. As a parent of two visually impaired children, who are very interested in science, how do we even get started in this?

    Thank you!