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:
- Teensy 3.1 https://www.pjrc.com/teensy/teensy31.html
- Sparkfun Mono Audio Board https://www.sparkfun.com/products/11044
- Adafruit LiIon/LiPoly charger board https://www.adafruit.com/product/259
- Sparkfun MicroSD card breakout board https://www.sparkfun.com/products/544
- LiIon 1000mAh battery
- LM4860 Audio power amplifier http://www.ti.com/lit/ds/symlink/lm4860.pdf
- Headphone jack, speakers, volume knob, misc. parts
- Relay silence the headphones for pop reduction
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.