Showing posts with label accessibility. Show all posts
Showing posts with label accessibility. Show all posts

Tuesday, March 7, 2017

Talking Calipers 2

Preface: Voting on a contest I submitted this to is open right now. You can vote once a day through this link. http://review.wizehive.com/voting/view/infypublic2017/47311/4496312/0

Before going all in on the research for my minimal-cost minimal-footprint all on one custom PCB version of the Talking Calipers, I went through my bin of parts and made one more with just what I had already available. It uses:





The video demonstrates that the reading is taken when the button is pressed, so the display can potentially change to reflect that the measurement has changed since the reading began being spoken aloud. The button is a limit switch super glued next to the thumb wheel.

It was a useful learning experience to build, and it was good to have it done quickly for demos and such, but in the end I built something very, very similar to the Adafruit Wave shield (https://www.adafruit.com/product/94) but slightly more expensive.

Feature list (all were tested on the breadboard, though some haven't yet migrated to the somewhat portable prototype):
  • Rechargeable battery on board, recharges via USB
  • Separate amp with lower gain for headphones for hearing safety
  • Headphone detection for automatic headphone/speaker output switching
  • SD card for easy file loading--can be made to work in any language by switching out files
  • Relay mutes headphones to reduce pop
  • Sleep mode that wake up on request for a reading, for longer battery life
Features not yet added:
  • Filter to get rid of a hum caused whenever the SD card is read
  • Low battery indicator (through sound or vibration ideally!) (though thanks to a circuit built in to the battery header, it will turn itself off to protect from under-voltage to the battery)
  • Inches mode protocol is different and currently reads off incorrectly
  • Audio files and code support for reading numbers more naturally (currently reads off each digit separately)
  • Change sleep mode to trigger only if the readings are constant and the button is not pressed for a certain time interval (right now just based on button)
I actually recorded my voice for this project since I couldn't find everything I wanted online. I used http://www.audacityteam.org/ to create the files and then used http://sox.sourceforge.net/ to make sure the files were 44.1kHz sampling rate and 16 bit sample size and then volume adjusted to a max volume that did not clip. (Note: the wav shield played most any wav files I could find fine, but the Teensy audio library was picky about the settings, necessitating use of the sox tool).

I estimate the battery life at about 10 hours of use (assuming it never enters sleep mode). The main power switch does lose the zeroing, but is convenient to have (out of the box, these calipers draw enough current to drain the coin cell in half a year to a year, unless the battery is removed). Auto-entering sleep mode when the user is away helps extend the battery life even more.

Tuesday, February 14, 2017

Talking Calipers 1

At a recent Sector67 monthly meeting, a member who teaches at a school for the blind and visually impaired mentioned a need for talking calipers. They are hard to find for sale and they typically cost in the realm of $250, though if you have a link to something significantly cheaper please let me know. My overall goal is to design a cheap little add-on that slots on to standard calipers that have a serial output already. This post is about the first step: a quick talking calipers proof of concept. Here's a picture of the working setup. See bottom of post for a video of the setup in action.



Here's what's in the photo. Everything came from either my collection of prototyping stuff, or from the collection of a fellow Sector member who took interest in this project.

If you add up the total cost of the items listed above, it comes out to about $85...so already cheaper than the $250 price point. (I'm aiming to get the total cost down a lot further than that though).

Here's how it all works together. The calipers are bumped up from their usual 1.5 volt voltage from the coin cell, to a 1.9 volt supply from the breadboard power supply. This makes it so that the logic level converter works with the signal from the calipers (because the minimum signal it will support is 1.8 volts, so 1.5 is too low). The signal from the calipers is easy to access; there's a port on the calipers accessible by a removable plastic cover. On the other end of the logic level converter we have the Arduino at 5 volts.

The wave shield comes with it's own example code. The calipers communication protocol has already been reversed engineering by a number of folks online; I got my code snippet from http://nut-bolt.nl/2012/reading-digital-calipers-with-an-arduino/.

The main challenge here is that the Wave shield uses all the external interrupt pins on the Arduino. I needed to use a different kind of interrupt. After a brief read through the forums and the datasheet for the Atmega328P, I decided to use the analog comparator. Comparing against some code snippets made it a fairly easy job to set all the registers I wanted to the values I needed. I used the internal bandgap reference as the positive input to the comparator and my calipers CLOCK signal as the negative input. Then I set the interrupt to trigger on rising output edges. [Noting that the positive input to the comparator, Atmega pin AIN0, refers to Arduino pin D6, and the negative input to the comparator, Atmega pin AIN7, refers to Arduino pin D7.]

The code for this project is available here.

Here's the video:



Next up I'll tackle building a prototype of a cheap and portable version.