Go Down

Topic: WT5001M02-28P another mp3/wav cheap sound module (Read 20619 times) previous topic - next topic

onesky


a schematic to connect this to the Uno?
thanks.


follow the data sheet
http://www.hmangas.com/Electronica/Datasheets/Modulos%20de%20Audio%20y%20MP3/WT5001M02-28P/WT5001.pdf

there is the WT5001M02-28P pin assignment scheme (page n. 10). On the board the first pin on the left is labeled "1" as you can see on the magnified picture.
The 5v input is the vdd50 pin 22.
From pag. 14 you can find the serial commands to use with arduino.

elac

Thanks alot for answering.
I just downloaded the datasheet, will give it a thorough read through.
It's all about the skills

onesky

#17
May 01, 2013, 11:28 am Last Edit: May 01, 2013, 11:38 am by onesky Reason: 1

Thanks alot for answering.
I just downloaded the datasheet, will give it a thorough read through.


also u can have an idea of the connections in the video  posted before

http://www.youtube.com/watch?v=FaTS-hvRUFM

tuccer

Hi.

It is possible to connect the files to buttons?
For example if i press button 1 it's gonna play the file 1, press 2  play file 2 and so on??
My second question is that i want to loop the sound files so when i press the button it is starting the file, and the playing is countinous ( repeat the same file endlessly) until i press another button.

If it is possible can you give me a hand how to do it?

Thanks in advance.

task

What is the lowest voltage this module works at?  I ordered one two weeks ago, probably need to wait another two weeks for it to get here.  Would just like to do my planning.  I will have one/two/four LifePo4 batteries that deliver +3.3V each.  I would prefer to stay at 3.3V rather than going to 6.6V and have a regulator waste alot of my voltage

On pages one and two of the datasheet it has this for voltage: 5.0V - 3.3V; 3.3V - 1.8V
On page three it says -0.3V - 5.2V
On page four it says 3.3V minimum to 5.2V maximum

onesky


What is the lowest voltage this module works at?  I ordered one two weeks ago, probably need to wait another two weeks for it to get here.  Would just like to do my planning.  I will have one/two/four LifePo4 batteries that deliver +3.3V each.  I would prefer to stay at 3.3V rather than going to 6.6V and have a regulator waste alot of my voltage

On pages one and two of the datasheet it has this for voltage: 5.0V - 3.3V; 3.3V - 1.8V
On page three it says -0.3V - 5.2V
On page four it says 3.3V minimum to 5.2V maximum

well then you should test the 3.3v and please report here if it works
remember the wav files seems not (well) supported, so i would start with mp3 files testing

SimLego

I'm probably very spoiled, but I don't find that module very cheap.

I can buy a car mp3 player/transmitter with USB connector, SD card reader, remote control and decent sound quality for maybe $4.00. But just an mp3 player without FM transmitter, without remote, without USB but with Arduino compatible input pins instead of buttons is $19.99. Why? I guess part of the explanation is the fact that they don't make this in the same quantities. But yet, $20?

Roeijoen

I have a problem with the WT5001M02-28P
I'm a firefighter in the Netherlands and I have made with the arduino a system that when we get a call the go on and a sound is playing. Every thing work only problem when we get a call first the sound is on low volume and go higher and and it will repeat in the middle of the call sound. is there somebody who can help me.

Code: [Select]
//Pager Circuit
const int ledOn = 13;                                          //Green led for visible on
const int timeRelay = 12;                                     //Timerelay for switching the light on and after delay off
const int led_tR = 11;                                        //See of the TimeRelais signal goes off
const int remoteControl  = 10;                                //To send a signal to a Remote Control.
const int led_rC = 9;                                         // See of the remote control is Off
const int optocoup_pager = 6;                                 //Pager with optocoupler
//const int buttinState = 0;                                  // variable for reading pushbutton status


void setup() {               
  pinMode(ledOn, OUTPUT);
  pinMode(timeRelay, OUTPUT);
  pinMode(led_tR, OUTPUT);
  pinMode(remoteControl, OUTPUT);
  pinMode(led_rC, OUTPUT);
  pinMode(optocoup_pager, INPUT);

  Serial.begin(9600);                                         
  Serial.write(0x7E);
  Serial.write(0x03);
  Serial.write(0xA7);
  Serial.write(0x1F); //  volume max
  Serial.write(0x7E);

  //start sound
  Serial.write(0x7E);
  Serial.write(0x04);
  Serial.write(0xA0); // A0 for SD card
  Serial.write((byte)0x00);
  Serial.write(0x02); // track number
  Serial.write(0x7E);
  delay(3000); 
}

void loop() {
  int val = digitalRead(optocoup_pager);
  if (val == HIGH) {           
    digitalWrite(timeRelay, HIGH);
    digitalWrite(remoteControl, HIGH);
    digitalWrite(led_tR, HIGH);
    digitalWrite(led_rC, HIGH);
    digitalWrite(ledOn, HIGH);

    Serial.write(0x7E);
    Serial.write(0x04);
    Serial.write(0xA0); // A0 for SD card
    Serial.write((byte)0x00);
    Serial.write(0x01); // track number
    Serial.write(0x7E);
    delay(300);
    digitalWrite(timeRelay, LOW);
    digitalWrite(remoteControl, LOW);
    digitalWrite(led_tR, LOW);
    digitalWrite(led_rC, LOW);
  }
}




thanks in advance

elac

Try this:
Code: [Select]
//Pager Circuit
const int ledOn = 13;                                          //Green led for visible on
const int timeRelay = 12;                                     //Timerelay for switching the light on and after delay off
const int led_tR = 11;                                        //See of the TimeRelais signal goes off
const int remoteControl  = 10;                                //To send a signal to a Remote Control.
const int led_rC = 9;                                         // See of the remote control is Off
const int optocoup_pager = 6;                                 //Pager with optocoupler
//const int buttinState = 0;                                  // variable for reading pushbutton status


void setup() {               
  pinMode(ledOn, OUTPUT);
  pinMode(timeRelay, OUTPUT);
  pinMode(led_tR, OUTPUT);
  pinMode(remoteControl, OUTPUT);
  pinMode(led_rC, OUTPUT);
  pinMode(optocoup_pager, INPUT);

  Serial.begin(9600);                                         
  Serial.write(0x7E);
  Serial.write(0x03);
  Serial.write(0xA7);
  Serial.write(0x1F); //  volume max
  Serial.write(0x7E);

  //start sound
  Serial.write(0x7E);
  Serial.write(0x04);
  Serial.write(0xA0); // A0 for SD card
  Serial.write((byte)0x00);
  Serial.write(0x02); // track number
  Serial.write(0x7E);
  delay(3000); 
  WaitForCall();
}

void loop() {
//Nothing needed here
}

void WaitForCall()
{
while (true){
int val = digitalRead(optocoup_pager);
  if (val == HIGH) {           
    digitalWrite(timeRelay, HIGH);
    digitalWrite(remoteControl, HIGH);
    digitalWrite(led_tR, HIGH);
    digitalWrite(led_rC, HIGH);
    digitalWrite(ledOn, HIGH);

    Serial.write(0x7E);
    Serial.write(0x03);
    Serial.write(0xA7);
    Serial.write(0x1F); //  volume max
    Serial.write(0x7E);
    delay(10);
    Serial.write(0x7E);
    Serial.write(0x04);
    Serial.write(0xA0); // A0 for SD card
    Serial.write((byte)0x00);
    Serial.write(0x01); // track number
    Serial.write(0x7E);
    delay(300);
    CallDone();
}
}
}

void CallDone()
{
    digitalWrite(timeRelay, LOW);
    digitalWrite(remoteControl, LOW);
    digitalWrite(led_tR, LOW);
    digitalWrite(led_rC, LOW);

while(true)
{
int val = digitalRead(optocoup_pager);
  if (val == LOW) {   
    WaitForCall();
}
}
}

It's all about the skills

Roeijoen

Thanks.
I'm really al lake, you don't use the Void loop() is it now possible to implement a Hygrostate and thermostate to read the wheater.
when I place that in the in to the loop? whitout disturbing the pager signal

elac

You can use the while(true) in WaitForCall as if it was a loop. And anything you put above while(true) in WaitForCall will run once when WaitForCall is called from setup() or from CallDone or anywhere else you would stick it in your code. Same goes for the CallDone function. Or any other function you create AND use while(true) in it.

Going through CallDone:
This part of CallDone
Code: [Select]
digitalWrite(timeRelay, LOW);
    digitalWrite(remoteControl, LOW);
    digitalWrite(led_tR, LOW);
    digitalWrite(led_rC, LOW);

gets run once like a setup for the function.

Then this
Code: [Select]
int val = digitalRead(optocoup_pager);
  if (val == LOW) {   
    WaitForCall();
}

(and anything you add to it) is looped inside while(true) until it is broken when your if (val == LOW) is true or any other interrupt you wish happens.
Try putting your code for the hydrostat and thermostat in the WaitForCall while(true) above if (val == HIGH).
Create a function and use that.

Like this
Code: [Select]
void WaitForCall()
{
//Put any code here that you want to run ONLY when this function is called
while (true){
int val = digitalRead(optocoup_pager);
CheckWeather(); //Runs monitor weather function
  if (val == HIGH) {           
    digitalWrite(timeRelay, HIGH);
    digitalWrite(remoteControl, HIGH);
    digitalWrite(led_tR, HIGH);
    digitalWrite(led_rC, HIGH);
    digitalWrite(ledOn, HIGH);

    Serial.write(0x7E);
    Serial.write(0x03);
    Serial.write(0xA7);
    Serial.write(0x1F); //  volume max
    Serial.write(0x7E);
    delay(10);
    Serial.write(0x7E);
    Serial.write(0x04);
    Serial.write(0xA0); // A0 for SD card
    Serial.write((byte)0x00);
    Serial.write(0x01); // track number
    Serial.write(0x7E);
    delay(300);
    CallDone();
}
}
}

void CallDone()
{

    //Put any code here that you want to run ONLY when this function is called
    digitalWrite(timeRelay, LOW);
    digitalWrite(remoteControl, LOW);
    digitalWrite(led_tR, LOW);
    digitalWrite(led_rC, LOW);

while(true)
{
int val = digitalRead(optocoup_pager);
CheckWeather();// Use it here so not to lose monitoring while call is active
  if (val == LOW) {   
    WaitForCall();
}
}
}

void Checkweather()
{
//Put your weather monitoring code here
//It will run then return to the function it was called from
}
It's all about the skills

onesky


I'm probably very spoiled, but I don't find that module very cheap.

I can buy a car mp3 player/transmitter with USB connector, SD card reader, remote control and decent sound quality for maybe $4.00. But just an mp3 player without FM transmitter, without remote, without USB but with Arduino compatible input pins instead of buttons is $19.99. Why? I guess part of the explanation is the fact that they don't make this in the same quantities. But yet, $20?

it's cheaper compared to other mp3/wav sound module for arduino.
And it seems obvious that this module is more expensive than a normal mp3 player because this can be controlled by Arduino (or other MC) as needed trought input pins... the basic principle of arduino ..

elac

Onesky, do you get any PWM noise through the amp when the amp is turned up and the module volume is low?
It's all about the skills

aleandrogreete

#28
Jul 29, 2013, 12:08 am Last Edit: Jul 29, 2013, 12:27 am by aleandrogreete Reason: 1
I spent an entire day with this module and want to put directly in the trash not before destroing it with an hammer...

The datasheet it's one of the worst I've see in my life, it's almost useless! I will call it Datashit.
They claim compatible with wav but if you read the datashit(!) you will see that you need another model (?!?)
They put SPI for what? In the datashit almost no mention apart a couple of words. Trying to play/access SPI memory, get any type of results from SPI it's simply a waste of time with no results.
Try to connect an USB memory stick (they call U in the datashit... why???), nothing more than 2 giga works and it connet/disconnect continuosly so forget the 'U' disk.
There's a SPI memory of 16M onboard, the only way to use it's put an SD card and copy the content in the SPI memory, oh my...
In datashit it's almost impossible understand witch is the supply limits of this module! In my experiment I see that will works only at 5V If you try to supply at 3.3 even serial communication (that seems the only protocol accepted) will not be reliable and the LDO out will spot strange results.
I still trying to figure out what/where is the iSound.mp3 file mentioned in the datashit and why I need to edit it!!!!...oh, my...
The sound quality suffer from some digital noise that became un'acceptable when volume it's too low.
The only thing that works is the serial communication but figure out that you will need some time of control if you intend to use this module in applications outside the simple 'play the file', with the other module there was a digital line connected to busy led, I cannot understand why the protocol of this chip it's so miserable.
Last, I'm afraid but this chip it's expensive, for what you get, the obscure and insufficent protocol, the tons of useless and undocumented pins, the features on board that are not working or not documented, it's really expensive and documentation it's near the useless.
An outstanding failure in design...

PS
Thanks onesky to save my day and let others to play with this thing, you have a great patience! But I'm trying to figure out where's my hammer...

Good afternoon.

as I can do to access the contents of the SD and internal memory module.

I could tell as I connect it to arduino and PIC microcontroller?
There are some example pic done to help me?
is there any example you select the track you want to play and can be controlled with SPI or USB or serial?

sorry for my English, I'm Latino of Colombia
thanks
editronikx@gmail.com

Go Up