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
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
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?
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.
//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);
}
}
//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();
}
}
}
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
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.
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
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
}
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?
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 ..
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...
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?
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?
ya realice el montaje como esta en el esquematico, pero no me funciona, solo funciona en modo ADC en modo MP3,
1- le di formato a la sd card en FAT y fat 32 y ninguna funciono
2- copie tres archivos mp3 desde el PC a la sd card
3- monte el circuito anterior
4 conecte el arduino leonardo del TX al modulo, alimente a 5v, conecte el pin 7 del arduino
5- presiono el pulsador y no sucede nada.
6- cambie el pin 7 por el pin 13 de arduino y nada.
ya me funciono todo, hay un error en el codigo por que se debe colocar Serial1.begin(9600); y en todo lo que se use el puerto serial del arduino se debe colocar el puerto correspondiente, serial es para envio de datos al PC pero esto no activa al modulo, lo demas funciono bien, solo falta ensayar SPI, USB
les dejo un video y el tutorial en español de todo lo que hice
el proyecto consiste en enviar datos por blueooth RN42 desde android el arduino leonardo recibe el codigo y envia los datos al modulo para que reproduzca la pista seleccionada y luego al prender un led se reproduzca el sonido respectivo.
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?
on aliexpress now only for 9,99$, i just ordered 2 more for future projects.
I wonder if anyone has managed to access the SD Card directly using SPI? I've wired module pins 11, 12 and 13 for the SPI and tried module pin 15 (SPI_CEN) for CS but without any luck ("Initialising card.. failed" using the Arduino SD examples.).
My idea is to be able to list the actual track filenames from the card to a display (and hence work out the "track order number") and then to "switch over" to the module to access each file by track order number using the module's Serial communication.
Edit: Just to add that the module itself is working fine using the example posted earlier by onesky.
I think the WT5001M02-28P 's SPI pins are for the onboard flash memory chip (25Q32BSIG).
I believe the SPI flash chip holds the kernal that provides all the WT5001's functionality. This is probably a VLSI chip that Waytronic has created using VLSI's development software.