Monday, August 22, 2016

Arduino IDE Setup With Windows Screen Reader


I have never been satisfied with the current methods being used to program Arduino boards when a person has to use a screen reader. There is a perfectly good tool that should be accessible. I have been trying to make Arduino IDE work since 1.5.6. I have always been able to use the code editor but the menus never worked right. My version at 1.5.6 was able to program my Arduino Uno with Jaws but NVDA never worked and Jaws was sometimes good sometimes bad. So I had partial access. Every blind person I have talked to has told me that they could not get it to work at all. I knew I must have done something accidental So I set out to prove that it was possible to make Arduino IDE work with Jaws and NVDA.

The truth is the steps to get the Arduino IDE to work have been out for a while but they are scattered across three pages. and if you were using Arduino IDE before 1.6 you would get different results, even if you did it right. I am going to write out all the steps here but if you follow Oracles page on installing both the 32 and 64 bit JDK, the Android Studio Accessibility guide, and the enabling Java accessibility bridge from Oracle. You can get the Arduino IDE working without my little article here.

Download and Install JDK and Arduino IDE


First I am using the latest Windows 10 Anniversary addition but I know this will work as far back as Windows 8. The instructions might even work with Windows 7 but I have not tested them. If you don't have a 64-bit machine you only need to download and follow the 32 bit instructions. To make this as easy as possible I suggest downloading everything first then setting it up. The following is needed:

  • jdk-8u101-windows-i586.exe
  • jdk-8u101-windows-x64.exe

Both of the JDK's above can be found at

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

You can probably follow all these steps with any of the JDK with a version of 8 or higher but I like to use the latest to get all the benefits of accessibility fixes.

Next download the Arduino IDE (arduino-1.6.11-windows.exe) or anything newer than 1.6.9. The link to the latest windows installer can be found on the following page.

https://www.arduino.cc/en/Main/Software

Once you have these three downloads. Start by running all three installers. If you're doing this on a Windows 32-bit platform just install the 32 bit JDK and the Arduino IDE.

Setup Java Environment variables


Next you will need to make sure that the Java environment that runs is the one you think is running. The way to make sure of this is to set the path to the bing, two windows system environment variables, copy some important files and turn on the Java access bridge. The Easiest way to accomplish this is to do the following steps:

Step 1: Set Path, JAVA_HOME, and JRE_HOME

  1. Press Windows key +Pause (The pause key is the first key on the right in the set of three above the six pack on a standard keyboard.)
  2. Tab until Advanced System Settings is reached. And press enter
  3. Tab until Environment variables is reached. And press enter
  4. Tab till system variables' is reached and press down arrow till PATH is selected
  5. Tab till System variables edit is reached and press enter
  6. Arrow up and down and delete any path information about Orical Java. To delete select it then tab to remove. Once done do OK so that the change is saved.
  7. Add a the path to the 64 bit JDK by Editing the path again and pressing new. A dialog will ask for the new path. My 64 bit JDK is found at: C:\Program Files\Java\jdk1.8.0_101\bin. After done Press OK to save.
  8. Add two new system variable's so that you know you are using your JRE and Java command line tools. The two variables are JAVA_HOME, AND JRE_HOME.
  9. Press Tab until System Environment variables new is selected and hit enter
  10. A Dialog will ask for name put: JAVA_HOME
  11. Tab and as a value put your home path. My home path is: C:\Program Files\Java\jdk1.8.0_101\
  12. Tab until OK is selected and press enter.
  13. Repeat the above steps to enter the JRE_HOME variable. My JRE_HOME is set to C:\Program Files\Java\jdk1.8.0_101\jre
  14. Press OK and Tab until OK is reached and press enter. Continue to Tab until OK and press enter until you are out of the dialogs. If you do not Press OK it is possible your variables will not get saved. You can check your variables by going back to the System variable screen and checking to make sure your variables are there and are correct.

Step 2: Turn on Java Accessibility Bridge

Now that you have the paths all setup. It is time to turn on the Java Access bridge. There are a couple ways to do this. The easiest way I have found is the following:

  1. Press Windows key + r to open the run dialog.
  2. Type in cmd.exe and press enter
  3. Type cd C:\Program Files\Java\jdk1.8.0_101\bin Type: jabswitch.exe /enable and press enter
  4. You should see confirmation that the Java Access Bridge is enabled.
  5. Type exit and press enter.

Step 3: Copy all essential Access bridge files

Now to move all the files where they need to be. taken from Oracles page at:

http://docs.oracle.com/javase/7/docs/technotes/guides/access/enable_and_test.html

Note: On a 64-bit machine it is recommended that you install both the 32-bit and 64-bit versions of the JRE. The 32-bit version only adds support for 32-bit assistive technology, and the 64-bit version only adds support for 64-bit assistive technology.

Using Java Access Bridge with Only the Private JRE

The JDKs installed above contains a private JRE. This is required to run tools included with the JDK. In order to use the Private JRE the Windows Access bridge files must be installed manually by copying them to the windows directories found in the table below.

Dynamic-Link Library (DLL) Files to Copy from Private JRE to Windows Directory

JDK Windows Operating System File to Copy Destination Directory
32-bit 32-bit .dll C:32
32-bit 64-bit -32.dll C:64
64-bit 64-bit -64.dll C:32

Testing The Install


Now if you have done all previous steps correctly simply press the Windows key and type Arduino and press enter. The Arduino IDE should come up and everything including the menus and edit field should talk correctly. There should be a default script template loaded and waiting for you to get going on making.

Blogger Introduction


My name is Ken Perry. To start out this blog, I wanted to give you a bit of history about myself and let you know that I am no PHD holder or genius, but I do have a BS in Software Engineering. Something I probably would have never received if I didn’t lose my sight in the military. I had planned on staying in for 20 years and getting out and who knows working for AT&T or some other large communication company but sometimes what you plan is not what is meant to be.

When I was very young only 8 or 9 I helped my dad test tubes on TV’s that he fixed as an extra job while he was in the Air Force. I say I helped him but who knows how much help I really was. I did learn to read the large book and know how to cross reference the numbers on the tubes to set the tube tester switches to tell us if the tube was good or bad. I don’t know that he needed every tube I could get my hands on tested but I really did enjoy testing them. I also liked playing with the soldering iron when he was not looking and while I knew nothing about electronics I was already bitten by the bug to tinker. I watched my dad build our first color TV set from a Heath Kit and there was no going back. I knew then that all I had to do is get out of High School and I could join the Air Force like my dad and get to tinker with the big stuff.

I joined the Air Force when I was 17 and turned 18 just before I went in. My dad was a Ground radio guy which means a lot of what he worked on was more like Ham radio but and I went in as Wideband communications which means I dealt with more wave guides and high power transmission. Turns out that both jobs had some crossover and my first posting was with the 601st ASOC which actually had some of the old equipment my dad worked on years earlier. I would not be shocked if one of the Track-97’s had both our name on the preventive maintenance logs. The Stars and Stripes newspaper even did a small article on the fact that we ended up in the same 601st Wing and worked on a lot of the same equipment. I got to work on some of the new stuff in Desert Storm and Desert Shield. We were using some of the first Satellite phones and fiber data vans and learning how to splice fiber when it was much fatter than it is now.

The Air Force seems to hint that a person coming out of Electronics basic and Tech school has an equivalent to an Associates level in electronics minus all the electives. It is a lot like ITT or DeVry without having to worry about what you are going to wear and having a scheduled study time. There is one blaring difference between what I learn in the military and what is learned in a tech school. The big difference between what the military teaches lowly airmen or is it airpersons now, is that ITT and DeVry has classes that explain the math and physics behind electronics much more than the Air Force Tech School does. I could tell you how things work and how to fix it but not why what I did worked and why electricity works as it does. When I got out. My younger brother, who was only 14, knew more than I did about why things work then I did when I got out of Tech School. Don’t get me wrong. I knew a lot and was able to do amazing MacGyver like things while I was in Saudi but that is for another blog I think.

Since the college councilors were sure I couldn’t do electronics and I figured since the military didn’t think I could do electronics. I decided to do software instead because of all the tools blind people had at the time to read the screens and use compilers. Even in Software Engineering classes I had to build computers (stick cards together), program Pic chips (Assembly just a socket burner). No real prototyping just theory and plug and play work. Looking back now it is to bad I didn’t get to try making some bread board prototypes. I might have learned a long time ago that I could still do electronics. My Software Engineering classes never went that deep into electronics. I could have taken a elective but I still assumed I could not have done it and to be truely honest there were not the tools there are now so it might have been difficult at best.

While it is true I didn’t take any serious electronics classes, I did take two physics classes and all the calculus I could take as well as statistics. The physics classes made the biggest difference because it finally explained a lot of how electricity works and gave me a much better foundation than what the military tech school did.

I took my time getting my BS in Software engineering. I worked part time training others with disabilities on how to use their computers while working at the Disability resource center at Salt Lake Communitty college and then after at Weber states Satelite program. I received my BS in Software Engineering in 2001 and I had been running a commercial game server since 1995 on-line so that kept me busy while I had my kids in the house. This was the first time I thought I might still have the ability to really still do electronics. Previous to this my brother was living with me, my wife and kids. Being that he is a genius in so many things I never was expected to do those little house maintenance things because he could do them faster. When he went on to another job in another state and my wife and I moved to Canada, it was up to me and my wife to maintain our house. that is when I actually wired my kitchen light blind. Sure there was a fair amount of Kathy yelling that my feet were twitching when she applied power and I was hanging out of the hole but I am still alive. I also bought my first talking multi-meter which was made there in BC Canada. They no longer make them. I heard a rumor that they found blind people were buying them and they didn’t want to be liable for one of them trying to test a power line or something. Who knows if that is true.

Once my kids got older I got bored and wanted to work some. I had military disability and did not have to work but I can’t stand sitting around on someone else’s dime. I found a job at the Disability Resource Centre in Victoria BC Canada and since I had done a lot of the same stuff for the college when I was going to school. I fit right in teaching other disability people what equipment they needed and how to use it. At home I still did a lot of wood working projects and even re-did our kitchen with a small bit of help from friends.

Once the kids all graduated my wife and I decided that we would try living somewhere different. I looked around and applied at a few places in the states. I was very happy to get a job with the American Printing House for the Blind in Louisville Kentucky (APH. , which is an amazing place that has services and makes tools for the blind. I have worked on a lot of projects with APH in both the Software Engineering role and Project lead roll. I will probably not Blog a lot about that since I would have to get approval for things I am working on to post about them. I will say though it has been fun creating new devices and Software at APH. Some of them can be found at the (Tech site.

It wasn’t till 2013 a full 22 years after I was blind and after I had done some really fun stuff at APH. My wife bought me a Christmas present that shocked me a bit. I had been wining for a while that I would love to be able to build my own robot. She seems to have a much higher opinion of my skills than I must have had at the time because she bought me an ActivityBot which is pretty much two servos with a proto board and a pretty cool 8 core parallax processor. My brother came up for Christmas and read the instructions to me on how to put it together. He made me do all the work. For the first time in 22 years I was playing with resistors, transistors, and a speaker. The coding was not too hard and I was able to make it beep and move not long after I had it put together. The problem was though all the instructions on-line are graphics. So while I love my little robot I had trouble figuring out things at first.

An important note here. I had seen my brother use a proto board but I never understood how they worked. I didn’t understand that each row of 5 was connected together and where the power and ground was expected to be on them. In the military I had made a circuit board for tech school and I had repaired them but designing them I had no idea how to do. prototyping. So here I am blind learning to use a bread board and actually going beyond the knowledge I had in the military.

It wasn’t until half a year later that it really got easier for me. My brother found Snap Circuits and enlisted my parents in using a braille dimo tape labeler to label the parts. Then they brought it up to our house. it was like stepping into the past when we had those spring electronic kits from Radio Shack. In fact, this was the same company that used to make those. Now I had a method to quickly prototype stuff with out counting tiny holes and fighting with small pieces. The only problem was once again the instructions were all graphical.

I came up with a way to write the instructions out. You don’t need electronics knowledge to start building kits if you can look at the pictures. It is like Lego’s for electronics. I had my wife build the circuits and then I would take them apart writing the instructions backwards. I plan on posting some of the instructions I have wrote from the kits and some I have created on this blog. After I got about 30 of the instructions converted. I no longer needed them and built a light detector. After I built the light detector on the Snap Circuits I wanted to see if I could build it on a bread board. I am leaving out a lot of steps and a lot of hours searching for parts I needed on line. I also don’t want to leave out that without my wife and family support and I don’t mean help putting it together I mean just help looking at web sites. It would have been hard to make sure I was buying the right stuff. but I have now built the light detector using nothing but a bread board several parts including a 555 timer and steps that I found on a DIY project and was able to figure out with my brother on the phone and my wife over my shoulder.

It was not long after getting the Snap Circuits working and the first bread board project, that my wife and I went to a Makers fair in Louisville. If you have not been to one. Search out the one in your town or city and go. At this fair I found a small kit that fit in a box the size of a deck of cards. It now is in a very small tackle box because that is how they sell it now. At the time though they had less projects. The kit is called “Let’s start coding”. It is a kit to teach coding by building projects. At the time they did not have a light detector project but I thought it would be cool to buy the $45 kit and use some other parts to make a light detector. If you want to see this kit they still sell them at (Lets start coding

I have now built the light detector in many ways to show the difference. I have made it with Little bits, Raspberry PI and a break out board, Arduino with and with out a bread board, with Arduino and Bluetooth going to an Android phone, Arduino using USB to an Android phone. I even made a light detector that talked the value of the resister using a speech shield with an Arduino as the controller. I made and remade the light detector in a lot of ways. I did this because it was a not to simple device that was useful which I could practice on and learn how I could build more interesting things. I have even built a small talking Volt meter. Not a big multi feature one but one that can teach how to make a more complicated one if someone really wanted to.

Along the way I have learned a lot and I continue to learn. I have new tools and circuits that I continue to find and build. This is not rocket science all though maybe I will build one of those two but the point is anyone can do this even a blind man who thought his dream had to change. It did not. Now I have two big skills, electronics and coding and I hope that in the blogs to follow I can help other blind and sighted get the same bug I had when I was young.