I finally have sometime to pull everything together and managed to get it working.
Project Brief:
In a nutshell, this project is interfacing a Digital Multimeter to an Arduino. The Arduino has a MicoSD Card loaded with Audio files attached. The Arduino is also connected to a Speaker.
The Arduino reads the serial message from the DMM and outputs an Audio message to the speaker.
The project is made for a blind engineer as well as help to another sighted engineer that may not want to always check a multimeter display whilst testing.
Details:
I've prototyped the project on a breadboard to test functionality. I've written a sketch to read and display the result from the DMM to the Serial Monitor, this is included in this post.
Mike's advice on connecting the DMM Serial communication to another Anagloue Pin and declare that as a different serial port was valuable. This allows the processing and monitoring of the communication on the Arduino's IDE serial monitor. basically read at A0 and push it to Serial monitor.
The serial input from the multimeter (0-1V) needed further amplification to 5V be make it legible by the Arduino. I've use a PNP transistor to shift the level up. I've included a picture of the oscilloscope output.
Now that the Arduino can read the message from the DMM, it was time to look at the code. Cristiano Griletti (Mastro Gippo) code was originally created for a similar application. I have not had to alter it a lot. However, where this is done a comment was entered.
Essentially there are 4 tabs:
1) TalkingMultimeter_V1.0
The main sketch for definitions and calls to other functions.
2) inc_14ByteMsg.h
This library goes through the 14 byte message received from the DMM
3) DMM_Reading
Tranlating the DMM message into reading
4) Group_Numbers
puts the numbers together, to be then called as audio. For example so a reading of 234.5 mA would call various individual audio files, so 234.5mA = two, hundred, Thirty, four, point, five, milli, and amps.
I've also had to record new audio files of the numbers, units and DMM status. The code was altered to call the respective files. As I have used the SimpleSDAudio.h library, I've had to convert the .wav files to .asf files. these are described in details on SimpleSDAudio – Hackerspace Ffm, as such I will no not go into details here.
I've included the audio files to this post. Note, during the build of the project, I've placed all the audio files on the root of the microSD card for the Arduino to call them upon request.
At this stage, the project was coming along very well. I've connected the output to a cheap chinese speaker (I liked the Gippo's idea), the speaker had a builtin 3.5mm cable so I've built a female audio socket on my board to connect the output from the Arduino. This simplifies the build and make it simpler to store away. That said, the Arduino Audio output (Pin 9), needed a smoothing capacitor. I found a 3.3uF works best to filter out the high frequencies. the suggested 100nF by SimpleSDAudio.h didn't do it for me!
Upon testing the project and found it successful, I've transferred everything into a project box and mounted the Variable 50K resistor (to control the volume) and placed a button on the box to request read out. This button is in addition to the button mounted on the DMM probe. I though if you are testing, you wouldn't want to let go of the probes to press the button on the box and request a reading. At the same time, there are measurements that would need the probes connected; The DMM comes with a Thermocouple probe to measure temperature, I felt a button on the box will come handy in such applications.
Included in the attached zipped file:
- The sketch and relevant files (see 1-4) above.
- TalkingDMM_Numbers_Audio.zip : Numbers Audio files needed
- TalkingDMM_Units_Audio.zip : Units Audio files needed See NOTE below
Note: I've had to split the Audio files on two zipped files to be able to upload it to the forum. Unfortunatley, I can't upload both files on one post. You will need to download the second (TalkingDMM_Units_Audio.zip) file from my next post and extract both files to the root of the microSD Card to be able to hear the full DMM reading.
In addition, I've included the:
- DMM_DT-4000ZC_CommsMsgChk : Simple sketch to check comms from DMM
- Breadboard Layout : TalkingDMM_Breadboard_Layout_V1.0
- Circuit Schematic : TalkingDMM_Schematic_V1.0
- Oscilloscope Trace : SerialComms_TTLMonoRS
The Material List:
- Digitek-DT4000ZC Digital Multimeter(DDM), see http://sigrok.org/wiki/Digitek_DT4000ZC for details. This DMM is a rebadged TekPower TP4000ZC and all information relating to the interface apply in the same manner. Both DMMs are based on the CyrusTek ES1978Q Chip.
- Arduino (I used Nano, however any type will work based on budget and space required)
- PNP transistor, I happen to have SS8550 Datasheet: Intelligent Power and Sensing Technologies | onsemi
- A Catalex microSD Adapter
- A microSD (obviously!), The audio files are about 3.5MB
- 2x Female 3.5mm Audio Jack
- 3.5mm audio cables male on both ends.
- Cheap Speaker with 3.5mm cable (to connect to project box).
- 3.3uF I've used electrolytic Capacitor
- 50K Variable Resistor (potentiometer)
- 2 x 220 Ohm Resistor colour code: Red-Red-Brown
- 1 x 10K Ohm Resistor colour code: Brown-Black-Orange
- 1 x 100K Ohm Resistor colour code: Brown-Black-Yellow
- Means to power up your Arduino power supply or power bank
The project proved easy and very useful. Therefore I've decided to share it with everyone.
DMM_DT-4000ZC_CommsMsgChk.zip (854 Bytes)
TalkingDMM_Numbers_Audio.zip (1.01 MB)
TalkingMultimeter_V1.0.zip (9.64 KB)