Introduction: 'Time Machine' Mini Jukebox

PROBLEM: My workshop needed some serious sounds - bluetooth speaker and streaming service were no longer cutting it.

I needed to go back in time - back before One Direction - back even before Nickelback. I needed... a classic jukebox.

SOLUTION: 'Time Machine' Mini Jukebox (with Bubbles).

('mini' because of space issues, and 'with bubbles' because of... well just because).

Step 1: The Case

The only power tools I used for this project were a jigsaw, a drill and a Dremel with a router attachment. But a power saw than can cut accurate straight edges would have been a great help.

The case was made from 9mm and 12mm MDF. The MDF pieces were joined with 18x18mm pieces of wood, screws and white glue. See the PDF for dimensions (the scale is approximately half the size of a real Jukebox).

The curved top was constructed using four layers of thick (0.8mm) cardboard and lots of white glue. The bottom three layers were glued together and attached to the frame by tacks while the glue is still wet (pre-drill and attach at the top first, then as you bend the cardboard down the layers will slide against each other). The final layer was glued on top to hide the tacks. This formed quite a hard shell. The frame was made from 18x18mm (bottom), 10x40mm (top) and 10x10mm ribs screwed and glued (Liquid Nails) to the end boards.

The shelf placement and dimensions will depend on the monitor that you are using - I mounted mine on a slight downward angle and extended it 60mm in front of the case.

The curved top is mounted on the base by screwing it on via 12x12mm angle aluminium mounted at the top of the base. The cardboard layer does not butt onto the base, but extends down about 15mm into grooves which have been cut at the top of the side boards. The cardboard was then attached to the sides by tacks and wood filler was used to smooth the join.

The case was painted with 2 or 3 layers of primer and 3 layers of high-gloss black acrylic paint. On the bottom of the case I screwed on four rubber feet.

The back artwork (BACK_RESCALE.pdf) was laser printed and pasted onto thick cardboard. Magnets were glued onto the back of the case and steel strips (cut from a tin can) were taped onto the back of the cardboard. This held the artwork in place while also making it removable. A long strip of yellow card was used to line the top of the case. Magnets taped at either end of the cardboard were used to secure it to the steel monitor surround.


PARTS

12mm and 9mm MDF sheets

18mmx18mm wood for joining main sections and bottom of curved frame

12mm x12mm wood for curved frame

10mm x40mm wood for top of curved frame

Shelf (monitor mount): 9mm MDF

Cardboard (0.8mm) 4 pieces 240mm wide, about 690mm long

Wood Screws - 25mm and 15mm

Selleys Liquid Nails glue (fills gaps and sticks well to wood, MDF and PLA plastic)

White glue

Primer and black gloss paint

Aluminium angle 12mmx12mm (1.5mm thick)

Power tools: at least a jigsaw, drill and Dremmel with router attachment

Small magnets

Yellow cardboard

Wood filler

4x rubber feet

Step 2: Electronics

A cheap 14 inch monitor was modified to fit the case. The monitor's PCB was bent down at 90 degrees, and the monitor was mounted upside down. The display was rotated 180 degrees in the operating system.

The part of the metal chassis that the PC's motherboard screws onto was cut and mounted at the back of the jukebox case. This can be seen in the photos in the first section.

The photos here show the mounting of the other major parts - speakers, amplifier, hard disk, power board and power supplies. The amplifier was mounted upside down so that the volume control was more accessible. A four pin header was connected to the power switch and power LED of the PC, so that these connections can be extended to the front of the jukebox.

I was originally going to power the amplifier from the PC power supply - but it turns out that PC power supplies are too noisy for this - so I used a separate 12V power supply.

The buttons were mounted on a piece of 1mm aluminium. I laser printed the symbols (TRANSFER.pdf) onto the transfer paper and applied them to the buttons. I then sprayed them with clear acrylic spray for protection. A slight problem with these buttons is that the tops can rotate, but they do seem to stay in place most of the time.

The buttons were wired like a 4x4 matrix keypad ( http://playground.arduino.cc/Main/KeypadTutorial ). See Jukebox_Keypad_Wiring.pdf

The Arduino circuit controls the coloured 'neon' lights and also provides input to the PC from the keypad. There are also two mosfet outputs - one PWM to control the bubbler motor and one to control the static lights (on/off only).

I originally was going to have two sets of led strips per neon, but turned out that this was not necessary. So I did not need the third TLC5940, as only 7 of the RGB outputs were used.


PARTS

200W 12V Mini Hi-Fi Amplifier Booster Radio MP3 Stereo for Car Motorcycle Home ( http://www.ebay.com/itm/161787852428 )

5M White RGB 300 SMD Waterproof LED Flexible Strip Light IR Power 3528 5050 5630 ( http://www.ebay.com/itm/131653467807 )

Old Windows PC. I used a Pentium PC running windows XP, purchased for $25 from an auction site. But a Windows TV box might be a better option, as it would be quieter, lighter and more compact.

12V Power Supply (2 or 3 amps) for amplifier and lights.

3-way power board

2x Car Speakers

A4 colour laser Water Slide Decal Paper Craft Transfer - Transparent Background

Clear acrylic spray paint

PARTS - PCB

2x TLC5940
Arduino Pro Micro
2x IRLZ44 Mosfets
2x 390R resistors
2x 0.1uF capacitors
1x 47uF capacitor
2x 1K resistors
2x 20K resistors
2 way terminal blocks

4Pin RGB Extension Wire Connector Cable Cord For 3528/5050 LED Strip Light 22AWG
( http://www.ebay.com/itm/152018489865 )

XH2.54-4P Connector Kits 2.54mm Pin Header + 4P Terminal + Housing ( http://www.ebay.com/itm/152018489865 )

14x Push Button PushButton SPST Momentary N/O OFF-ON Switch 7mm Red ( http://www.ebay.com/sch/252232288735 ) (13 for panel and one used later on)

Step 3: 3D Printed Parts

All of the 'chrome' parts and also the pillars were 3D printed.

Some of the .stl parts were created and modified from an open source model by Marco Gregorio, found here: https://grabcad.com/library/classic-jukebox-1 The other parts I created myself using OpenSCAD. This was my first time using OpensSCAD, and the first project on my 3D printer, so for this reason you may find that some of the parts have not been designed in the most optimal way.

My parts naming convention: parts with a suffix _RHS (righ hand side), you will need to mirror and print again to create the left hand part. Parts with suffix _x2, for example, will need to be printed twice.

Some of the parts have small slots where 2mm, 3mm and 4mm bolts were inserted (pushed in with a hot soldering iron). Small mounting brackets were made from the aluminium as shown in the pictures.

Some of the parts (pillars and button mount) also need to be glued together with Liquid Nails glue.

The printed plastic parts were sanded and coated with a few coats of filler primer, then painted with chrome paint (VHT Plate Finish) - except for the pillars which were painted black after mounting.

NOTE: DO NOT try and coat the chrome finish with a clear acrylic spray to protect it - this DOES NOT WORK as it reduces the finish to a dull grey.


PARTS

PLA plastic filament

Selleys Liquid Nails glue

20x12mm aluminium anlge (1.5mm thick) for mounting brackets

1mm thick sheet aluminium for mounting brackets

3mm screws and bolts

4mm screws and bolts

Primer filler paint

Chrome paint (I used VHT Plate Finish)

2mm, 3mm and 4mm screws and bolts

Step 4: Front Door Facade

The 'front door' frame was made from 9mm MDF and 10x40mm wood. It consists of two sections separated by spacers. At the final assembly stage it was attached to the case with two hinges and a magnetic catch. See the PDF for dimensions.

Wooden moulding was attached to the frame with glue and small nails, as per the pictures. Before attaching the moulding, I used a router to form a groove (0.5 to 1mm wide and about 3 or 4mm deep) - this is where the neon plastic pieces slot into. The grooves were made only on the back piece of the frame.

Bending the moulding for the curved sections was quite a challenge. I made small cuts on the back with a hacksaw (called 'kerfing'), soaked it overnight in water, wrapped it in a wet cloth and microwaved it. Then I bent it on a aluminium bar with stops on each end to hold it in place, and left to dry. (Please see google for techniques on ''bending moulding'' if you are going to do this). But then I discovered an easier way:

I ran slightly short of moulding for the top of the frame and couldn't source any more - which was a problem. So I designed and 3D printed the extra piece (a 10mm length is included in the 3D print files - just scale the length to suit). I printed it as a straight length and used a heat gun to bend it around the curve. In hindsight I would have done all of the curved sections this way.

Each pillar was printed as four separate parts which were then glued together (Liquid Nails) with aluminium bracing on the back. They were mounted on the frame with wood screws and small brackets cut from aluminum.

After a couple of coats of primer, the outer parts were painted with black gloss paint, and the white sections, where the neon lights will be, were painted with white gloss.


PARTS

9mm MDF sheet

10x40mm wood for frame

12mm x 12mm wood for mounting the spacers (bottom)

10mm x10mm aluminium angle for mounting the spacers (top)

1mm aluminium sheet for pillar mounting brackets

3mm screws and bolts

6mm wood screws

Selleys Liquid Nails glue

Primer, white gloss and black gloss paint

Power tools: at least a jigsaw, drill and dremmel with router attachment

Step 5: Neon Lights

Forming the plastic 'neon' parts was tricky. I made various forms out of MDF, tubing, dowel and a pool noodle. These were then used to cast plaster of paris moulds. A heat gun was used to soften 0.5mm PET plastic and shape it into the moulds. The attached .stl files show the shape of the neon that I was aiming for.

The moulds for the smaller neons were made using 24mm tubing to round off the sharp corner formed by pieces of MDF. It is easier to use the clay for these instead of the plaster of paris. Just push the clay into the corner push with the the tubing to round it off.

The moulds were sprayed with filler-primer to seal the plaster (important to do because otherwise particles of plaster can come loose during the forming process).

After a bit of trial and error, I found that the best technique for forming the plastic was to heat it gently in sections, and stroke gently (MUST USE SOFT GLOVES) to stretch the plastic into place. Use clamps (not directly on the plastic) to hold the edges in place, and some soft material to 'shield' sections that have already been formed. This is important because the plastic will tend to revert to its original shaped when re-heated. NOTE: Do not overheat with the heat gun as the plastic will bubble and be ruined.

The finished plastic forms were sprayed on the back with Plasticote frosting, after applying 5mm tape to mask where the bubble tubes go. I used 5mm Kapton tape (because it was the correct width) for the straight sections, but had to cut some electrical insulation tape for the curved ones (Kapton tape does not stretch around the curve).

The RGB LED strips were mounted on pieces of aluminium bar and aluminum angle which are screwed to the back of the front door. I used a piece of heatshrink tubing where the cable joins the strip for strength, and also used small zip ties over the heatshrink to mount it to the aluminium. The straight sections of aluminum have 15 LED's mounted on one side for the large neons and 9 LED's mounted on the other side for the small neons.

Pieces of thick white card were cut to form 'reflectors'. These were taped to the back of the neon cavities in the very final stage of assembly.


PARTS

0.5mm PET plastic sheet (2x A2 sheets)

10mm wooden dowel

10mm aluminium tubing

Pool noodle (62mm diameter)

24mm diameter dowel or tubing

Wood - various

Heat gun

** SAFETY GLOVES **

Plaster of Paris

Air-dry modling clay

Plasticote glass frosting spray

RGB LED strips

4 way ribbon cable and headers

20x12mm aluminium angle (1.5mm thick) to mount straight and lower curved sections of LED lighting

20 x 1.6mm aluminium bar to mount upper curved sections of LED lighting

Step 6: Bubbles OO O O O OO O

The bubbler tubes were made from 8 mm outside diameter aquarium tubing held in place by 16 3D printed 'bubbler clips'. When you print these the tube should be quite a tight fit as they need to hold the tube with slight tension to keep it straight on the lower sections. The bubbler clips were held in place with 3mm screws as shown in the photos.

The tube was supplied coiled up and so tended to have a curvature. I used this to advantage on the upper curved sections. Gently warming the tube with a heat gun also helped remove any kinks. Surprisingly the tubes did not require any further support to keep their shape and position.

The two sections of tube cross over at the very top and are joined on one side with the valve, and the pump on the other side to form a continuous loop. A valve as such is probably not required here, but I had one and it served to join the pieces of tube.

I filled the tubes by disconnecting the pump input and attached a small section of tube dipped in water. Powered the pump until the tubes are half to three quarters full, then reattached the end of the tube to the pump input.

The pump was wrapped in thin sponge packing to reduce noise and vibration, and then both the pump and valve were enclosed in small plastic bags taped at the top, to prevent water from reaching the electrics if there were a leak,

Originally I was going to power the pump by PWM (it runs way too fast and noisy with a straight 12V), but this created too much noise (the motor began to 'sing') and interference (to the amp). So I ended up placing it in series with some 5W resistors (total of about 30 ohm). The firmware also 'pulses' the power to the motors to slow it down - this can also be adjusted in the Arduino sketch to get the bubbles at a good speed.


PARTS

Aquarium Fish Tank Round Water Air Diaphragm Pump 12VDC R385 ( http://www.ebay.com/itm/291692601410 )

One Way No Return Check Valve For Aquarium Fish Tank Air Line Pump ( http://www.ebay.com/itm/391386472573 )

Aprrox 5 meters of ID 6mm X OD 8mm Clear Hose Pipe-Flexible Plastic Water Tubing Washer Aquarium ( http://www.ebay.com/itm/181841526922 )

3mm screws and bolts

Step 7: Final Assembly

This was the fun part - watching it all come together. Please study the pictures, as they show better how it all fits together than my description.

FRONT LOGO PANEL

Eight 3mm red LEDs were mounted so that they lie between the slots of the front chrome panel. Each LED had a 680 ohm resistor in series. A small section (3 LEDs) of white led strip was used to light up the logo window. The logo was colour laser printed onto a clear label and applied to 0.5mm PET plastic folded into shape. Some soft translucent plastic was used as a diffuser. Some of the same plastic was cut into 5.5mm strips and inserted in the slots of the panel. Before attaching the panel to the front door, rolls of black insulation tape were applied to the back to prevent light leakage.

The red button on the coin slots is for display only. The red plastic top was cut off a working button and hot glued in place. The push button on the right hand side though is real, and is connected to the PC's power button. It has an LED ring which is also connected to the PC's power LED.

STATIC LIGHTING - RED SECTIONS

I used small sections (3 LEDS) of the RGB strips, but connected power only to the red leds. Each of the sections uses two of these strips (ie 6 LEDs), placed as per the pictures.

FRONT GRILL SECTION

A frame to hold the front grill was made out of 12x3mm aluminium bar, bent into shape. Bolted to it were three curved supports placed where the neon sections join. The ends of the support are attached to a piece of 10x40mm wood which is bolted to the front door. Around the support holes are drilled matching placement on the 3D printed parts which are bolted to it with 3mm screws. Some small 2mm threaded holes were also drilled and cut. These were designed to hold the plastic neon sections in place.

The laser printed star and a circle of 0.5mm PET plastic were fitted into the fancy lower section which is bolted and hot-glued to the main grill. The grill clips fit over the joins in the neon sections. These were a tight fit and didn't require any fastening.

All of the static lighting is connected in parallel with a terminal block to the LED mosfet output on the PCB.

OUTER NEON TUBES

The lower sections were fitted first, then the lowest chrome cover piece, then the 'red' section, then the middle chrome piece, then the curved neon, then the upper chrome piece. Then the top red section, then the two top chrome pieces. Sequence as per pictures.

GLASS

Some $2 shop picture frames were canabalised for glass, which was cut with a glass cutter for the main window and the two title strip panels. The main glass widow is held in place with the 3D printed glass clips. Do this before mounting the curved sections of LED strips.

BUTTON SECTION

The metal button panel was screwed to the chrome shell with 6 x 2mm screws, and the whole thing connected to the front door with long 3mm screws.

The title strips were created using templates from here ( http://www.cdadapter.com/tstrips.htm ). Note: the templates need to be resized so that 4 boxes are 6cm high. The laser printed title strips and glass were slotted in, and then the end pieces were bolted on with long 4mm screws.

FINALLY

Last of all, the cardboard reflectors were tapped over the back of the neon cavities, and the door attached to the hinges on the case.


PARTS

12x3mm aluminium bar for grill support

Cheap picture frames - for glass

Speaker Grill Cloth Stereo Fabric Speaker Radio Mesh ( http://www.ebay.com/itm/282093887867 )

Cheap clipboard (for wood to mount speaker cloth)

Dark couloured thin foam packing material

8x 3mm red LED's

8x 680 ohm resistors

16mm 12V Orange LED angel eye circle Metal Momentary Push Button Switch ( http://www.ebay.com/itm/131623927598 )

2mm, 3mm and 4mm screws and bolts

Terminal block

Black insulation tape

Step 8: Firmware and Software

PC SOFTWARE

There are a few Jukebox programs out there, but none did exactly what I wanted - so I had to DIY... again.

MINIJukebox_1.0_PROG.zip contains the Jukebox software (written in Freepascal - source code also included MINIJukebox_1.0_SOURCE.zip). Unzip MINIJukebox_1.0_PROG.zip into a directory somewhere, and create a folder called MUSIC on C drive. You will put your albums there, as shown below.

Copy of README.TXT:
---------------------------------------------------------------------------------------

MINI Jukebox is copyright 2016-2017 Allan Murray and is free for non-commercial use.

MINI Jukebox includes freeware third party components:
GAudio Sound Library (http://www.softpedia.com/get/Multimedia/Audio/Other-AUDIO-Tools/GAudio-Sound-Library.shtml)
FreeImage Image Library (http://freeimage.sourceforge.net/)
Digital-7 freeware font (http://www.1001fonts.com/digital-7-font.html)

Album directories should be placed in folder C:/MUSIC and should be named:
01 Billy Joel - Turnstiles
02 Eagles - Hell Freezes Over
03 Bruce Springsteen - Greatest Hits
etc.

Album directories should contain mp3 files named:
01 Say Goodbye To Hollywood.mp3
02 Summer, Highland Falls.mp3
03 All You Wanna Do Is Dance.mp3
etc
Album directories should also contain one square jpg file with album art.

Screen resolution should be 1024x768. The file skin5.bmp is a background image (1024x768) and can be changed

---------------------------------------------------------------------------------------

The software is very simple in operation:
Enter the album and track number to add a song to the playlist
Enter track number of 00 to add the whole album to the playlist
Enter 9999 to clear the playlist
If you enter 0000, random songs will play until you add another track
Press ESC to exit the program (not available on keypad)

Note that the software will also take input from a numeric keypad - so you can also use a wireless numeric keypad to control the Jukebox.

Make the Jukebox program autostart

On Windows XP you can do this by creating a shortcut to the program and put it in C:\Documents and Settings\User\Start Menu\Programs\Startup


ARDUINO FIRMWARE

Upload the music.ino sketch to the Arduino. Once uploaded check that the correct key presses are sent to your PC when you press the buttons (the Arduino acts as an HID keyboard). You may need to change the char keys[ROWS][COLS] = { } definition if you have wired your keypad differently. Note that the '<' button should send a 'A' and the '>' button should sent a 'S'.

The RGB driver works like this: The first RGB output is created with a hue value rotating around the outside of a colour wheel ( http://dba.med.sc.edu/price/irf/Adobe_tg/models/hs... ). The other outputs are offset (in degrees) from the first output and are defined in the array double offsets[nstrips] = {0,51,103,154,206,257,308}; I have the seven outputs evenly spaced around the colour wheel. But if you made all the values the same, for example, then you would get all of the neons displaying the same colour at the same time.


NOTES

This is version 1.0 of the software and firmware. In a later version the Windows software will be able to control the neon colours and bubbler via another USB connected to the FTDI header.