A few years ago I helped a blind friend to install an electric wheel on his tandem bicycle. He recently contacted me again to ask me if I knew where to find a talking multimeter, but I could find only this way overpriced model that costs >2000$. Well, I feel quite stupid now because googling again while writing this article led me to this and this, but it looks like they’re both discontinued anyway. By the way, this seemed an interesting challenge so I volounteered to build him one, with the help of my local hackerspace Crunchlab. While most of the more common household items have a “speaking” version, there are very few specialized instruments that have been adapted to make them usable by blind persons. This is a step forward in this direction, and I hope that my project can help more people bridging the gap by doing things they couldn’t before.
I started by looking for a feature rich multimeter with serial output and remembering an hackaday article I started to roam ebay for a deal and found this DT-4000ZC multimeter, that comes with a pre-wired isolated serial output on a 3.5mm jack. I needed it in europe with fast shipping, but I could have purchased the identical TP4000ZC cheaper from here. I would suggest anyone to buy the multimeter from that second link, as they’ve made the extra effort to prepare this awesome PDF cheat-sheet to explain the protocol. A lot more details are available here too, as these multimeters are all based on the same CyrusTek ES519xx chip.
While waiting for the multimeter, I started thinking about the voice syntesizer. There are a lot of synth ICs out there, but they’re quite expensive and complex. But after a bit of thinking, it was clear that I didn’t need anything complex. Saying a number in my language (italian) is quite easy, as it is in english: you only need a few recorded samples to represent every number.
So, to say 92 you just play “90″ and “2″, and to say 1337 you just have to play “1000″, “3″, “100″, “30″, “7″. Sorry France.
The sound playing part is quite easy, as the internet is full of examples for every microcontroller, so I tried a few demos and finally decided that this SimpleSDAudio library for the Arduino was the right one.
And here’s the first prototype. I recorded all the samples I needed from an online syntesizer and placed them on the SD card. Everything worked out nicely! The only issue was with the SimpleSDAudio library, as reading from SD cards requires a lot of RAM and the atmega328 has not a huge amount of memory on board. The arduino was resetting at random, but I finally solved this issue saving every string to the flash memory.
PlaySync("mega"); //Waste memory PlaySync(F("mega")); //Better
Now, I didn’t want to get into enclosure design, amplifier prototyping and battery charging so I had the idea to place everything inside one of these inexpensive chinese phone speakers:
and browsing through my local chinese shop I could find exactly what I neded. A nice little speaker with an aluminium case, internal amplifier, internal battery with USB charging circuit, and a lot of nice features like MP3 player, FM radio and AUX input. I left all original features intact and added my circuit in parallel to the AUX input , adding a 3.5mm jack to get the serial input from the multimeter. I soldered wires to a microSD to SD adapter and used it as a cheap microSD socket, and everything fitted incredibly well inside the speaker.
Everything installed, new 3.5mm jack on the upper right:
And here’s the schematic, in DaveCAD format:
The result was quite annoying, because the synthesizer was costantly reading unneeded values. The obvious solution was to add a button on one of the multimeter leads, that’s wired to the free pin of the serial jack and starts a reading when it is pressed. Check out this demo to see how it works:
I wanted to add the digital caliper reading function, but never found the time to do it.
The first idea was to just make a simple software for PC to read the values from the serial port, but that would make the multimeter tied to the PC and unusable in most situations. Then I thought about making a bluetooth adapter to use a smartphone synth instead but my friend told me that a lot of blind people still use Nokias S40 for their better usability, so making apps for all the platforms may become a nightmare. Also, an independent device is, as the name implies, independent. A bluetooth version is still interesting through, to make data logging apps and more interesting stuff, so I think that I will develop that too. Bluetoooth multimeters already exist too, but they just don’t have all the functions of that chinese device and/or they cost a lot more.
Dave usually bashes these chinese multimeters for their poor safety and accuracy. I found my multimeter quite well built, with good soldering joints, good isolation and good overall accuracy for an everyday use. While it is true that they may be dangerous for high-energy measurements, I really hope that no blind person will mess around with high voltage circuits without assistance. Please always check the safety of your instruments to ensure that they’re adequate for the measurements you’re taking.
I’m releasing the code with the GPL v3 public license in the hope that if someone finds it useful, he/she could add functions and/or translate it to other languages and/or add support for other devices. SimpleSDAudio library is released under MIT license, so I’m including a copy in my file in case some future versions break compatibility with my code.
SoftwareDMM Original PC software for the multimeter
Sintetizzatore v1 Manual for the synthesizer, plain text (italian)
Multimetro v1 Manual for the multimeter, plain text (italian)
Audio files for the numbers for the SD card (italian)
TalkingMultimeter Sources of the project