Arduino library for WTV020-SD-16P audio module

tas_tig3r:
Hey.

1: Yes the files were converted. Just to make sure I downloaded the test file made (and tested) by another user on these forums.
2: As far as I am aware, I just needed to copy the files named 0000.ad4, 0001.ad4, etc to the SDcard root dir?
3: Ok. If the file tree is correct, then I will try a different card.

I don't have a shield to test it with, as money is tight at the moment, and I've never needed one. Please let me know about the file tree if you can, as I can't find any info about it on the web. Cheers!

I had the same problem. But all suddenly started to work when I plugged the module into 5V instead of 3.3V. The form advices you to plug the module into 3.3V but the voltage on the module itself indicates 5V.

--there have been a lot of discussions regarding this (junk) item.
My (two) modules stared working when fed from 3.7V lion (phonebatteries).
Other replies suggest the same. 3V3 is too low voltage.
Try feeding 5V reduced by a couple of series silicon diodes

If your 3.3V device powers on 5VCC and has 3.4VDD, you can use that line with a good bit of resistor to pull up a pin that you have a diode on, blocking 5V level signal from an UNO. When the signal is low, it drains the pullup and when the signal is high, the pullup provides VDD to the pin.
Serial TX/RX idle state is HIGH to keep the lines from floating, the diode will prevent flow during idle and 0-bit times where with other voltage-levelers the 5V gets regulated some way that generally wastes more current and makes heat, the signal line at idle will need constant current loss. For RX/TX you only need to level shift RX, not TX.

Jack Christiansen showed me this one BTW. He said he saw it somewhere on a site.

Hello everyone,

May be this is a silly question, but I'm a newbie so.. sorry in advance...
Can I have direct access to the SD card with the WTV020? I mean, read and write files directly with an SD card library like the SD.h...

I want to use this module for two things in my project:
1.- Play some music files
2.- Store some html files for a micro-webserver

Do you think that this is possible or I have to buy another SD card module to store the HTML files?

Thanks!

You can make an SD adapter pretty cheaply. Google DIY SD card

If your Arduino is 3.3V then you don't have to do any voltage leveling, otherwise you will need a small handful of cheap parts for leveling.

The neatest voltage leveling I've seen uses 3.3V pullups on the SD adapter input pins and diodes on the same pins blocking 5V input. It only wastes a little power on one line.

When a 5V line is HIGH, the SD card reads 3.3V HIGH pullup because the diode blocks the 5V.
When a 5V line is LOW, it takes the pullup current away through the diode and the SD card reads LOW.
Feed the SD card VCC from a voltage divider and use that same line to power the pullups through 10k resistors.
That's 2 resistors for VCC and a resistor and diode for MOSI, SCK and SS.

However you wire it, there are oodles of voltage leveling circuits and chips, the code will be the same.
In your IDE under File->Examples-> you should find the SD examples and they should run.

Can this module be controlled totally by the arduino? If so what can be eliminated from the circuit? The project that I have in mind for it will require that it operate and change recordings via the arduino. Thanks!

d

Basically anything that uses a button can be replaced by the arduino. Volume, next/prev song, pause/play.

What about the schematic? Does the module only need the three connections to the Arduino and the rest of the schematic can be eliminated? Or do you need additional pins on the Arduino. Thanks

d

Take a look at the attachment below. On page 5, it gives you a layout of what each pin does, and if you look at pin P04 and P05, you will see a secondary function. P04 is the clock, and P05 is the data, so with that, you basically only need two pins to get it to work, but you also need to send the correct data too.

The library was made to send said data, and all you need to do is wire it correctly.

MP3%20Module.pdf (204 KB)

Thanks I'll give that a shot.

d

I am trying to get this working and I have a question re: schematic and sketch. In the schematic it is showing only three pins on the arduino used. Pin 1 of the WTV020-SD-16P going to A3 on the Arduino, Pin 7 of the WTV020-SD-16P going to pin A4 of the Arduino, and Pin 10 of the WTV020-SD-16P going to pin 5 of the Arduino.

But in the sketch there are four pins defined. I wired it up as in the schematic but nothing is working.... What am I missing?

int resetPin = 2;  // The pin number of the reset pin.
int clockPin = 3;  // The pin number of the clock pin.
int dataPin = 4;  // The pin number of the data pin.
int busyPin = 5;  // The pin number of the busy pin.

Thanks

Dan

P06 is the busy pin (pin 5), it lets the arduino know when a audio file has ended.

I guess I am confused about the reset which is defined in the sketch as pin 2 but in the schematic it is A3. And A3 in the sketch is defined in the sketch as the clock pin not the reset. Not clear to me at all.

d

The pins used in the diagram are just examples, it's the pins in the code you want to go by. Then again, you could always changes those too, but as long as you know which pin is what (clk,data,reset and busy) you can code it to work on any combination of arduino pins. Just note, if you plan on using the serial monitor, don't have anything in digital pins 0 & 1 , otherwise you may get incorrect results.

Hello All,

this is my first post so don't kill me for asking.

I've got my module working fine with a 2GB Transcend SD card connected to a 3.3V 8Mhz Arduino Pro Mini. It plays every sound on the SD card but I have a kind of funny behavior: whenever I play a file (synchronously or asynchronously - it doesn't matter) it will play 2 seconds, rewind and play the whole song.

It will always do this and with every file - play 2 to 3 seconds, rewind, play the whole file without a problem...

Any ideas?

P.S: Of course I'm using the library from the first post...

In case anyone wonders - I could solve the problem by applying the fixes mentioned here:

https://www.sparkfun.com/users/395251

insufficient delay after reset. In line 37, changing “delay(300);” to “delay(750);” worked for me;
if you rely on the playVoice() call: sendCommand() returns too soon, when the busy pin is not yet on. In line 94, tweaking “delay(20);” to “delay(50);” worked for me.

It might be better to watch the busy pin than to delay and assume readiness.
Best case with the delay is you wait every time longer than needed.

Yes you are right but for the time being this single delay in the beginning is the easiest way. The documentation is so weird and the findings in this and other forums so different I won't believe a single thing ...

I'm using a Transcend 2GB Micro SD card which is said, does not work most of the time. I've tested it with 2 1.5V AAA batteries as well and it is working for hours together with the 3.3V Arduino Mini Pro ... . All this should not work reading this forum and the documentation :wink:

I know what you mean about the confusion.
A little extra time in initialization hardly impacts speed anyway.

hello ... this is my first time to make an arduino project .........
I just want to ask if audio amplifier is necessary in this module? :smiley: