Sound Module WT588D-U

Hello, I was wondering if anyone knows any sample code for the sound module wt588d-u? I've had much frustration trying to get either the key/button mode or the 3 line serial mode to work, even with the documentation.

Has anyone else had any success?


I've had a look through but I cannot get it to work. I have scl, sda, cs, reset, busy pins connected, I cannot get the code to work shown in the documents.

Anyone help with working arduino code? :(

I guess you’ve got this
and seen this

Anyone else struggled to get it working? Ok wondering if it's just a damaged component?

I have recently used a WT588D module and it took me a while to get the sound samples right, or it wouldn't play them. In my case - 22khz (exact! Not 22.022hz or something) and 16bit mono worked. And both VCC and VDD had to be connected to 5v.

Hope this helps, Kay

Thanks Kay, am still trying to get it going. For your sound module, was it in key mode or 3 line data?

FN605-M01 is much easier to use than WT588D-U. No need any assistant software, and upload MP3 sound files into the flash directly via the USB port based on PC.

Here is a link about this module and a datasheet attached.

FN605-M01 MP3 Audio Module Datasheet.pdf (351 KB)

Right the first two boards that I bought were duff - did not work!
I have managed to get a new board (still WT588D-U) from a new supplier to work on key mode really easily. I cannot manage to get it to work while in ‘3 line serial’ connected to the arduino.

I’ve used a sample code for the WT588D-16P however cannot get this to work;


This program cycles through the first eight files loaded onto a WT588D-16P Sound Module

]The pins labeled on the data sheet as CLK, DI, DO, CS, REST are for programming
the module via the external USB programmer.

In the Waytronic VoiceChip beta software, the settings are configured as “Control Mode: Three Line Mode, and Busy Mode: LOW”


#include <Wire.h>

#define WT588D_RST 8 //Module pin “REST” or pin # 1
#define WT588D_CS A3 //Module pin “P02” or pin # 11
#define WT588D_SCL A4 //Module pin “P03” or pin # 10
#define WT588D_SDA A5 //Module pin “P01” or pin # 9
#define WT588D_BUSY 10 //Module pin “LED/BUSY” or pin # 15

byte file_count = 1;

void setup() {

pinMode(WT588D_RST, OUTPUT);
pinMode(WT588D_CS, OUTPUT);
pinMode(WT588D_SCL, OUTPUT);
pinMode(WT588D_SDA, OUTPUT);
pinMode(WT588D_BUSY, INPUT);

digitalWrite(WT588D_CS, HIGH);
digitalWrite(WT588D_RST, HIGH);
digitalWrite(WT588D_SCL, HIGH);


void loop()



if(file_count == 3) file_count = 0;

delay(50); //give the module time to start playing

while(digitalRead(WT588D_BUSY) == 0) { }



void WT588D_Send_Command(unsigned char addr) {

unsigned char i;

digitalWrite(WT588D_CS, LOW);

delay(5); //delay per device specifications

for( i = 0; i < 3; i++) {
digitalWrite(WT588D_SCL, LOW);
if(bitRead(addr, i))digitalWrite(WT588D_SDA, HIGH);
else digitalWrite(WT588D_SDA, LOW);
delay(2); //delay per device specifications
digitalWrite(WT588D_SCL, HIGH);
delay(2); //delay per device specifications
} //end for

digitalWrite(WT588D_CS, HIGH);

} //end WT588D_Send_Command

In the manual for WT588D-U it does give an example of programming in C, however I have not had much luck with that either.
It mentions include at89x51.h, ive looked online however cannot find the file
Three-wire serial control of C-voice procedures
Description: This procedure is test program.Please change the IO port of MCU according to Practical
#include <at89x51.H>
sbit KEY=P1^1; /* The 2nd of P1 port is P1_1 /
sbit CS=P3^1; /
The 3rd of P3 port is P3_1 /
sbit SCL=P3^2; /
The 4th of P3 port is P3_2 /
sbit SDA=P3^0; /
The 5th of P3 port isP3_0 */
PLEASE PLEASE PLEASE can anyone help me write some arduino code for this sound module, as I have been trying to get this thing working for months :frowning:

Sorry guys, I know this is an old topic, but I'll post the reply here rather than start a new one.

I found the WT588D based modules rather unreliable and cumbersome, with horrible PWM sound. As said above, they require a separate programmer circuit (not cheap either) and additional software, which is also horribly written and clumsy. The documentation is also very bad - several documents can be found on the Internet, quite contradictory in key points (e.g. timing intervals which proved to be 1:2 rather than 1:3).

I managed to make it work even with the infamous One-Line protocol, but then again, the BUSY line is totally unreliable.

I used a 28mm 8Ohm 2W speaker connected directly to the PWM output. The sound level is about one half or even below of what the DFPlayer gives. It is also quite noisy, especially if you crank the volume up to 6 or 7 (there are 7 available levels plus mute, while 5 seems to be the default). Also as said above, it does not support the standard 22050 Hz, so you have to resample it to 22kHz which is also a major pain.

Any DFPlayer or MP3-FLASH-16P with a USB connector would be a better choice because:

  • You can directly access files from USB or an SD card reader (even though I prefer those with USB-accessible built-in memory, since it can not pop out like an SD card) - no need for 3rd party software
  • The volume is twice as powerful, perhaps even more
  • Sound quality is much better - no noticeable noise
  • Better reliability (as long as you don not power it directly from the Arduino Vcc pin, since it needs more current)
  • It uses standard Serial protocol to communicate
  • You are not required to use the TX line if you are not querying it, and you can use the BUSY line instead.
  • Better documented
  • Better libraries

Just my two cents...

Hi All,

Maybe someone tried to produce DTMF tone through this sound module, I just can't make it work

Help please :(