This project is a smaller, Mono version of my previous Jumbleum Player.
You can also see the build instructions on my Instructables projects page.
I have simplified the design to make it compact enough to fit in a small 3d-Printed case.
The main features are:
- The tunes are “jumbled-up” (shuffled) to prevent repeats.
- It is easy to use
The case can be fixed to the top of a small speaker cabinet.( I used an old Eltax bipolar rear surround speaker).
It is controlled either by the rotary-encoder knob or by an infra-red remote.
Two addressable RGB LEDs mounted behind the front panel provide mood lighting.
- D-SUN 3 Amp Regulator module (eBay or AliExpress)
- TPA3110 PBTL MONO 30W Amplifier Module (type HW-328) (eBay or AliExpress)
- PIC18F14K50-I/P PIC Microcontroller (DIP type)
- 100uF Capacitor Radial Electrolytic 25V Working
- 0.1uF Capacitor 2.5mm Y5V Ceramic 50V working X 5
- 0.47uF Capacitor 2.5mm Y5V Ceramic 50V working
- 100uF Capacitor Radial Electrolytic 16V Working X 2
- BAT85 Schottky barrier diode
- Fuse, 3A poly Resettable (30v Working) (or a standard wired fuse)
- Length of 2.54mm Pin Header Strip to cut as required
- 2.1mm DC Socket PCB R/Angle Mount
- BC337 Transistor TO-92L
- 10K 1/8W Carbon Film Resistor (5%) X 7
- 470R 1/8W Carbon Film Resistor (5%)
- 100R 1/8W Carbon Film Resistor (5%)
- 1K 1/8W Carbon Film Resistor (5%) X 3
- 50k Preset Potentiometer 6mm
- Rotary Encoder With Switch type EC11 (12mm long shaft) (eBay or AliExpress)
- Addressable LED PL9823 5mm X 2
- TL1838 VS1838B HX1838 Infrared Receiver (eBay or AliExpress)
- 28-Pin DIP / DIL PCB IC Socket (0.3”) (for the PIC)
- IR Infrared Remote Control (NEC Protocol) – (eBay)
- Learning Infrared Remote (Optional – see text)
- Knob for Rotary Encoder (3D-printed)
- Double-sided 1.6mm thick copper PCB board (77 x 77 mm approx.)
- DC power adaptor (12V – 19.5V 4 Amp recommended)
- Speaker cabinet (I used an old Eltax bipolar rear surround speaker)
- Speaker cable
- “Toner transfer” laser printer paper
- PCB etching tools – Ferric Chloride and plastic container etc.
- M2 screws and nuts for PCB mounting X 4
- PLA filament for case (I used Silver/Grey for top & base and White for front & rear panels).
- Micro SD-card with a capacity up to 32GB.
- Small, Fine tip Soldering iron.
- Safety goggles for use while soldering, etching etc.
- Laser printer with manual paper feed (for toner transfer PCB method)
- Household iron or modified Document laminator(for toner transfer PCB method)
- ESD Wrist strap (for handling static sensitive parts)
- PCB drill
- PCB drill bits, 0.8mm, 1mm, and a step drill bit (3-13mm)
- Pliers, Cutters, Fine hacksaw, file
- Microchip PIC programmer (eg. Pickit2 or Pickit3).
Step 1: Circuit Diagram and Description
This design has a single, smaller Amplifier module (TPA3110) than in my original Jumbleum Player.
I have arranged everything to fit on a small square PCB about 77 x 77 mm (3″ x 3″).
Microchip PIC Microcontroller
The heart of the circuit is a Microchip PIC18F14K50 microcontroller. This chip was chosen as it has just enough memory available to jumble-up the music, fairly small (20 pins) and low cost. It is programmed in Assembler Language to control a DFplayer Mini MP3 module using a serial data protocol. (9600 Baud).
DFplayer MP3 module
The DFplayer module is a very low cost device for playing MP3 files using a built in Micro-SD Card holder. It has a 24-bit DAC output and 2 Watt Amplifier (Not used in this project). This module is easily available from eBay.
D-SUN Voltage regulator module
The PIC microcontroller, DFplayer module and RGB LEDs are powered at 5V by a D-Sun 3 Amp high efficiency switching regulator module. (available from eBay). The regulator module has a variable resistor which must be adjusted to output exactly 5 Volts before connecting it to any part of the circuit.
Alternatively there is a similar version of the D-SUN regulator module available from some eBay sellers that has a fixed 5V output. It looks identical to the original module except the small variable resistor has been replaced by a 44.2KOhm (63C) SMD resistor.
TPA3110 Amplifier Module (mono (PBTL))
This TPA3110 Class D (Digital) 30W PBTL mono power amplifier module (Type HW-328) is smaller than the one I used in my original design.
The Standby/Mute function reduces noise between tunes and while the player is stopped or paused.
It is powered directly from the external DC power supply which can be between 8 to 19.5 Volts.
Addressable RGB LEDs
Mood and status lighting is provided by two addressable RGB LEDs. (5mm through hole type PL9823.
The player volume can be controlled by the rotary encoder.
On each turn of the knob, the PIC senses the turn direction and sends commands to the player to set the new volume level. The selected volume level is saved to the PIC eeprom to be retained even after power-off.
The Rotary Encoder Button
A short press instructs the PIC to select a new tune. If the the button is held pressed for a few seconds, the PIC stops the current tune and mutes the amp. The next press of the button selects and plays a new tune.
A VS1838B IR 38Khz remote sensor allows the player to be controlled by an NEC protocol IR remote control. The remote controls all functions: Volume, Next Track, Stop and EQ selection plus Pause/Resume.
Step 2: Construction
See the two PDF files at the end of this section (one for each copper layer).
Print them on to toner transfer paper using a laser printer at 100% scale. The two transfer sheets need to be precisely aligned.(I got best results using special transfer paper (thin glossy yellow sheets) obtained from eBay or AliExpress).
( My printer had a low toner density issue which caused some “pitting” in the transfer . I had to repair that manually using a “Sharpie” pen).
The D-SUN regulator needs to be prepared by soldering pairs of 2.54mm header pins to the component side of the module input and output holes as shown in the photo. (this allows the module to be fitted upside-down on the pcb ).
Connect a DC supply (about 9-12 V) to the IN+ and IN- pins and measure the voltage on the OUT+ and OUT- pins. Adjust the small variable resistor to get the voltage as close to 5.00V as possible.
The resistor adjustment is very sensitive, if 5.00V is difficult to achieve, set it slightly below.
The TPA3110 Amp module can be fitted with header pins on the underside for soldering to the PCB.
The LEDs and IR sensor leads need to be carefully bent so they protrude at the front of the PCB but not foul the front panel. (Put a piece of insulating tape on the board under the IR sensor in case the leads ever get pushed down against the PCB).
The Rotary encoder should be kept perfectly upright – check as you solder each of the two mounting lugs.
Step 3: Software
Here is the HEX file firmware for the PIC18F14K50 microcontroller.
(It is exactly the same firmware as used in my original Jumbleum player)
Step 4: Preparing the Memory Card and MP3 Files
The player uses a Micro SD-card with a capacity up to 32GB.
Before first use, the memory card will need to be formatted using a PC.
If the card capacity is less than 4GB , PCs usually automatically use the FAT or FAT16 file system (which is fine). If the card is more than 4GB you may need to manually select FAT32 file system when formatting for it to work.
If you have a music collection too large to fit on your memory card, use a music manager program such as MediaMonkey to create a new playlist. Edit the new playlist and sort by “random” to mix-up all of your music collection. Then choose the “Send To” option and then “Folder Copy” and select to copy to the drive letter for your memory card. MediaMonkey will then copy a random selection of your music collection to the memory card until it is full.
Step 5: Initial Checks
Insert your Micro SD-card containing music files.
Connect the cable from the amp to your speaker. Then plug-in the power adaptor.
At power-on the RGB LEDs should glow blue.
The DFplayer has a red or blue led which should light when it starts playing.
The RGB LEDs should begin slowly changing colour.
Turn the knob to check it controls the volume correctly.
Press the button and the next tune should play.
Adjust the variable resistor to get the best volume range from your speaker. (I needed to turn the resistor fully clockwise as my speaker was not loud enough otherwise).
Step 6: Remote Control Setup
This player supports the NEC remote control protocol.
It is pre-programmed to work with the remote shown in the photo above.
I bought it from eBay (described as: HX1838 VS1838 Arduino Infrared IR Wireless Remote Control Sensor Module Kits).
It came complete with the IR sensor on a small PCB. It has the arrow buttons below the keypad as shown in the photo. (A similar type available marked “KEYES” with the arrow buttons above the keypad has different keycodes requiring you to program it as shown below).
If your remote control is not exactly the same as the photo above, it will need to be setup:
- Hold the Encoder button pressed and turn on the power. (The LED should flash light green)
- Release the button (LED stops flashing and stays light green).
- Press the remote button you want to use for NEXT Tune e.g. ” > ” The player should then start playing a tune and the LED goes Red.
- Press the remote button to use for VOLUME UP e.g. ” ^ ” The LED should go Yellow.
- Press the remote button to use for VOLUME DOWN e.g. ” v ” The LED should go Green
- Press the remote button to use for STOP e.g. “OK” The LED should go Sky Blue
- Press the remote button to use for PAUSE e.g. “#” The LED should go Violet
- Press the remote button to use for EQ e.g. “1” The LED should go White for 1.5 seconds Then the LED flashes Green
- Press the Encoder button until the LED stops flashing – to save the settings.
Step 7: Optional “User Friendly” Remote Control
The original remote control I got from eBay has small tactile “click” buttons and does not fit well in the hand.
I found a better one that is much easier to hold, with very large rubber buttons.
It is available on eBay and AliExpress, described as “Big Button Universal TV Remote Control for Seniors/Elderly”
This is actually a “learning” remote which requires the original remote to program it.
Programming the Universal learning remote
- Place it head-to-head with the original remote (about 2-5cm apart)
- Hold the red “Power” and ^ buttons pressed until the red led starts flashing. (learning mode enabled)
- Press the button you want to program (on the learning remote), until the led stays lit.
- Press and hold the corresponding original remote button for about 3 seconds – until the led starts flashing.
Repeat steps 3-4 for each button to learn.
NOTE. The learning remote exits “learning mode” if non of its buttons are pressed for 10 seconds.
The learning remote programming procedure is a bit unreliable – you may need to repeat the learning procedure for some buttons if they don’t operate the player correctly. (Try repositioning the two remotes slightly and don’t move the remotes while pressing buttons).
I set the “Power” button for “Stop”.
The + and – buttons for volume.
The ^ and v buttons both for “next tune”
The “mute” button for “Pause”
and the “F” button for “Equalisation” selection
Step 8: Problem Diagnosis
The player LEDs can help diagnose any problems with the SD-card or hardware:
- LEDs rapidly flash Blue – Either No SD-card or files found. If this happens at power-on – Check the SD-card is correctly formatted and mp3 files are present. If this happens while playing, it could be a problem reading a file due to a slow or incompatible SD-card. Try using a different SD-card.
- LEDs rapidly flash Red – timeout waiting for Dfplayer module to initialise. This can occur at power-on if the dfplayer module fails to initialise within 5 seconds. It could be caused by a slow or incompatible SD-card, a faulty Dfplayer module or a circuit fault. Try using a different sdcard. If still the same, remove the SD-card and power-on. The LED should now flash Green if the Dfplayer is working. If it still flashes Red, check all wiring or replace the Dfplayer module.
- LEDs rapidly flash Green – No SD-card found at power-on. Insert an SD-card.
Step 9: 3d Printed Case
I modified it to suit my PCB and added cut-outs and holes for the controls, power etc.
It is printed in Silver/Grey PLA for the base and top to match my speaker and White for the front and back panels.
The PCB can be fixed to the base with four M2 screws and nuts. (Drill the four standoffs in the case base).
The top and base panels clip together.
The encoder knob was also 3d printed using the “Customizable Knob! by charliearmorycom” on Thingiverse.com.
This was also an OpenSCAD file which I customised until I liked the appearance, and printed it in White PLA.
The encoder shaft I used has a “D” shape which required a small grub screw to hold the knob in place.
Please download the case STL files from my Instructables projects page.