SD Card Audio Player

Note, you mentioned Teensy 3.1. The main difference between the Teensy 3.1 and the current Teensy 3.2 is the 3.2 has a bigger 3.3v regulator. This was important for adding wifi shields to the Teensy.
  • Teensy 3.1: 3.3v output power: 185ma; Input power 3.7-5.5v.
  • Teensy 3.2: 3.3v output power: 250ma: Input power 3.7-6v.

I'm not sure why you need a USB breakout board. Why not use the USB port that the Teensy provides? Unless you were going to use a USB Y-cable to power both the Teensy and the speakers from the same power bank, and you need the breakout board for the speakers.
 
The LCD I was planning to use is here.

I haven't found a similarly sized I2C or serial version.

Hi bigpilot

I have found a the same large display with I2C on the back.
Probably better to use this with the attached I2C board as it also handles the LED backlighting.

You can still use the I2C I/O board for other IO.

If you only need 8 bits then a PCF8574 will do. Something like this.
The boards are fairly generic and can be bought from many places.
The chip is also available as a DIP which could be plugged into a breadboard.

If you want 16bits there are a number of chips available PCF8575, MCP23017 as well as the SX1509.
 
20210524_141044small.jpg

Received the metal enclosure from China.
 
Playback_cropped.png

I'm currently having the problem that the FLAC file plays for only a fraction of a second. I'm investigating what the problem is.

As you can see the GetLastError() on the FLAC player object is 0 (no error), which makes it harder for me to identify the problem.
 
  • Teensy 3.1 and 3.2: I2S support and a single DAC pin. Note, you need to change the SPI pins if you use I2S on Teensy 3.1 and 3.2.

I couldn't get the software to work, but I now see the problem: I'm using the default SPI pins for the SD card, so the I2S doesn't work.
 
I recently updated the Teensy framework on my Platform.io installation and I suddenly got long file name support!

I was looking in the source code and asking questions here and there but in the end it turned out to be as simple as pushing a button and recompiling and it works!

I'll now be focusing on getting the LCD and infrared remote working.This shouldn't be too hard since in the past I wrote my own HD4780 LCD driver, but I currently don't have a lot of spare time and I'm waiting for the infrared receivers to arrive in the mail.
 
Just received the IR remote control and its accompanying IR receiver. Also ordered some additional 38Khz IR remote control receivers, just in case.

I also got me a I2C LCD display even though I already have a regular LCD display (both 2 x 16 backlit). In addition, I also got me some NPN and PNP transistors to enable me to switch off the power to the LCD and DAC board when the unit is not in use.

The software is coming along nicely, but since I'm working 40 hours a week and my weekends are mostly planned full it'll take me a while to finish it.

I'm also trying to put the schematics in Kicad. I'm not currently planning on developing a PCB, but that might change.
 
20211214_192321.jpg

Picture of the working setup with the new I2C LCD. I'm now going to work on integrating the infrared remote receiver. I've already prepared the software to handle the commands.
 
After two hours of fiddling I finally got the IR remote receiver working as well. I still have to translate the codes into commands upon which the player will act, but that's certainly doable in a day's work.
 
Just curious, which Teensyduino version are you using? In Arduino, click Help > About to see.

I updated to the latest IRremote for the 1.56 release. As part of that update, I updated the timer defs to use a higher interrupt priority for the way IRremote samples incoming pulses, for (hopefully) better compatibility when using libraries with other interrupts.

I'm pretty sure transmitting with IRremote doesn't work together with audio. Whether that matters, I'm not sure, but it's on a long list of low priority issues. My main concern is whether receiving works well.
 
Hi Paul, I'm using Teensyduino 1.54 I think (I'm using Visual Studio Code on Linux Mint with Platform.io and I'm not sure how to check). It was the first version that had long file name support.

I'm not transmitting with IRremote, just receiving commands from a remote control.

I'm using this receiver and this remote control.
 
The obligatory picture of the working setup with the IR receiver.

20220104_111400.jpg

I have to say: I'm very pleasantly surprised by the sound reproduction of the D/A converter. Probably one of the best I've heard, more so considering the dirt-cheap price.
 
Last edited:
The first two assembled PCB's.

20231114_145844_small.png
20231114_145940_small.png


I'll soon attempt to connect the SD card module, the D/A converter and the LCD
 
Back
Top