Custom wavtooeasy board

Hi there, I recognize that the wav too easy is a great product, I was trying to make it work with a custom pcb. However I have been having issues with burning the bootloader to the chip, can you help. I designed the pcb with your reference hardware but the arduino ide doesn’t recognize it

Good day, From further research I believe I need a bootloader, but I can’t find the bin file in the github repo for the wavtooeasy board, do I use the same one provided for the propboard or can you provide the one used for the wavtooeasy. I would really appreciate the help.

Hello @Oluwadara_Olaifa,

How are you trying to download the bootloader?

It can’t be loaded through the Arduino IDE. You need either a JTAG or use the serial port with the STM32 Flasher.

Here you can find the default bootloader we load on WaveTooEasy boards.

Hi, thanks for the response Ivan. I was able to flash the bootloader with the ftdi(fr323) and stmflasher app however I still get the stk500v2_ReceiveMessage():timeout error with the arduino ide,
Do you have any other ideas?
Do I need to put the board in bootloader mode before i can upload with the arduino ide(3.3 to boot pin)
Or can it be a driver issue

Assuming the bootloader is running correctly, the bootloader should accept the new program from the Arduino IDE using a serial port. The board is reset through one of the RS232 lines (DTR if I recall correctly).

Also if you copy a FW file named as wte.bin in the root of the SD, it will try to write it.

Check Firmware Updates and Firmware customization from the documentation.

Thanks @Ivan . To clarify, do you mean I can write the firmware to the chip by simply placing a wte.bin file in the sd card after burning the bootloader, without uploading from the arduino ide?

If yes, how do I compile a wte.bin file, the arduino ide said that the core does not support exporting of compiled binaries

Here’s my setup, I am usng an ftdi
I can burn the bootloader and upload code using yhe standard arduino bootloader (stmduino)however with the artekit core no luck

@Ivan I GOT IT FIXED!! I had to swap the pull up resistor and capacitor on the dtr pin from 100k and 1uf to 10k and 100nf. Do your store boards use the same values in the data sheet?

Hello @Oluwadara_Olaifa,

That’s great!

The capacitor should be 1uF with 100k pull-up, if not stated otherwise, but I can check with the HW engineer on Monday.

Regarding .bin files, these are built when you compile the sketch and placed in some temp folder like %userprofile%\AppData\Local\Temp\arduino\sketches\.

Hi @Ivan I have a question about the board, what does the red and green led flashing mean. According to the guide it means the configuration file is missing but I have it on the sd cardProcessing: 20230606_143223.mp4…

Hello @Ivan any response to the above query?

Hello @Oluwadara_Olaifa,

Sorry for the late reply. The guide says:

Both LEDs flashing quickly (500ms ON, 250ms OFF): there was an error reading the config.ini file. This means there was an error accessing the microSD, the config.ini file was not found or there was a misconfiguration.

So if the file is there, then there must be a problem accessing the SD card or there is a misconfiguration (an error in the config file).

mode = serial
sample_rate = 44100
speakers_volume = 19
headphone_volume = -7
disable_leds = false

heres my config file, is there a specific way i need to format the sd card?
i also have been playing around with the schematic, now when theres no sd card, both leds blink but with the sd card no led comes on

I wouldn’t know. Perhaps with the SD inserted the program is not starting at all because a HW issue of some kind.

The normal behavior is green LED fixed ON with red LED blinking slowly. Whenever an audio file is playing, the red LED will blink faster.

The SD card should be formatted with FAT32 file system.

Hello, @Ivan , I didn’t know you were thr o e that wrote the code fir the wavetooeasy. Wow

I am really grateful for your assistance so far.
I have one more query, I am having issues getting the audio from thr dac, thr stm32 communicates with my arduino, and it starts playing the wav file, the led blinds rapidly, however the dac doesn’t produce any audio and when I price thr i2s pins, I don’t see any signal,
My questions are

  1. Would the stm32 send out it’s i2s data even if the dac isn’t communicating with it
  2. Is it possible to connect another dac (eg pcm5102)to the i2s pins of the stm32, because I know in your schematic, the stm communicates with thr dac through i2s and i2c.
  3. How do I enable debug mode, and when I do, would the debug info be sent over serial , or do I need to use the jtag

Hi @Oluwadara_Olaifa,

  1. I don’t think so. You can try to avoid initializing the codec by commenting these two lines.

  2. You’ll probably need to modify the source. I don’t remember how the pcm5102 codec works.

  3. Try setting this constant to 1. You’ll lose serial mode (sending commands over serial to play wav files).

Hello Ivan thank you for your last message it really helped me find the issue, (It was the hps switch of the lm49450 as well as the i2c resistors I left out.

I have gotten the ability to play wavs now. However I am currently having a noise issue. The circuit is totally silent when nothing is playing, however as I play a wav file, there’s an audible noise . Do you have any ideas,
Is this typical?
Ps I am using a boost converter to supply the 5v(tps61023) and a 3.3v ldo. I have attached a sample. I am playing a file containing 10 seconds of silence on the wavtooeasy.

Sorry for the late reply. I was out of office.

It sounds like electrical interference. Maybe a layout problem. The WaveTooEasy is completely silent (noise wise) whenever there is audio or not.

Thanks Ivan. I actually fixed it, the noise was coming from a boost converter I chose.

I am in the process of modifying how the io mode works , I have 6 buttons on my device and I want to use them to control 6 wavs. The catch is that I have multiple folders with wavs, and I want to switch to other folders using the 6th button.
Do you have any advise for me?
I am abit stuck

i modified the initializeio mode function but im looking for a way to dynamically change the folder the wavs are in. i plan on having 6 folders(00 to 05 each containing 6 wavs. then 6 buttons that play the wavs in those folders(1.wav to 6.wav) however to change folders i want to press either an extra button or the button 6 then an extra button that would switch to the folder corresponding to that button

bool initializeIoMode()
    // Initialize players list

    // hardcoded settings for pin1 through pin6
    for (uint8_t i = 0; i < 6; i++)
        char file_path[128];
      sprintf(file_path, "\\%s\\%i.wav", current_folder, i+1);

        io_pins[i] = new IoPin(i, file_path, PinActiveLow, EdgeTrigger, PlayModeNormal, 5.0, DeassertPause, 5);
        if (!io_pins[i]->begin())
            debugMsg(DebugError, "Could not initialize pin %i", i);
            return false;

    return true;

thats my current code