A talking multimeter

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 at my 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.

Language

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.

Synth prototype

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:

phone speaker

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.

All components:

20131021_153630

Test fit:

20131021_153656

Everything installed, new 3.5mm jack on the upper right:

Everything inatalled

And here’s the schematic, in DaveCAD format:

20131106_193828

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:

 

Remarks

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.

Safety

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.

License

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.

Downloads

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

11 pensieri su “A talking multimeter”

  1. Hi there.
    I’m a blind person with an interest in electronics. You might consider using something like the eSpeak speech synthesizer to simplify the process of speech output. Then you can speak anything without having to prerecord the clips:
    http://espeak.sourceforge.net/
    Thanks for doing this awesome project.

  2. Caro mastro Gippo, carissimo crunchlab,

    avrei bisogno di contattarvi per il multimetro parlante.
    Intanto perchè lo acquisterei e poi perchè avevo pensato di realizzare qualcosa di simile, con una filosofia simile, open-hardware e costo equo incluso, sicchè imbattersi in questo articolo per me è stata una folgorazione.
    Sono non vedente, informatico, mi occupo di accessibilità, ho collaborato a un progetto di sintesi vocale, e su un aggeggio simile stavamo avviando forse una collaborazione col dipartimento di informatica dell’università di Catania, e da digiuno di elettronica sono in questi giorni alle prese con gli esempi di codice e il reference di Arduino.
    Spero vogliate contattarmi, dal momento che non sono riuscito ad accedere dalla sezione Contatti del sito, nè ho trovato un telefono o un referente.
    Thanks in advanced.
    Donato Taddei

  3. visionando il multimetro parlante, ho scaricato i campioni e al riguardo voglio fare 3 osservazioni:
    1) – non so se migliori o peggiori, ma io sono in grado in qualche oretta di di fornire messaggi perfettamente equivalenti basati sulla sintesi Mbrola.
    2) – se qualcuno si imbarca in un port di espeak per Arduino non fa male;
    a me sta molto antipatica, ma ha indubbie doti di compattezza e di flessibilità.
    3) – L’esperimento di sintesi online all’indirizzo:
    http://donatotaddei.altervista.org/parla.php
    mostra a chi volesse che con 7 mega di campioni si può fare una sintesi capace di sintetizzare qualsiasi sequenza di parole e numeri.
    é molto importante avere una sintesi vocale su Arduino non solo perchè aprirebbe nuove opportunità di utilizzo ai non vedenti di questo ed altri strumenti di misura, ma anche per il controllo domotico di impianti, luci, ma, come sempre, quelle che sembrano attenzioni per una categoria disagiata di utenti finiscono sempre per avere ricadute positive sulla totalità degli utenti, come è appunto accaduto con i telefonini parlanti o a controllo vocale.
    Sarà dunque il caso di pensarci.
    Il mio approccio è di tipo difonico,concatenativo.
    In php mi c’è voluta qualche decina di righe di codice, e questo sta a significare che anche a volerla rifriggere da zero in altro linguaggio non è affatto impossibile.
    In attesa di riscontri.
    Donato Taddei

    1. Ciao Donato, dall’esperienza che ho fatto sono arrivato alla conclusione che arduino non è abbastanza potente per gestire una sintesi vocale più complessa del semplice playback di tracce audio preregistrate, che comunque è più che sufficiente per la maggior parte dei progetti semplici. Esistono schede più potenti, ma a quel punto si può usare direttamente un raspberry pi o una linux board, o uno smartphone collegato al circuito, che permettono l’uso di sintesi vocali più evolute e molte altre possibilità.
      Sono comunque curioso di vedere quali soluzioni troverete, tenetemi aggiornato!

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>