Introduction: BOOGIE BOX: the Electromagnetic Dance Floor
The BOOGIE BOX is an interactive reprogrammable thing that can make almost anything dance and is fun to play with! You can build your own dancers and choreograph them to dance to your favourite tunes. You can create anything! Just add the magnetic feet and the possibilities are limitless.
Fancy building one? Stick around and read this instructables to the end! I have made sure all steps are well documented and easy to follow and reproduce!
Step 1: Electromagnetism Explained
Wonder how it works?
The basic principle that makes the Bogie Box an interactive dance floor is the grid of coils underneath its surface. There are 4 rows of 5 coils all individually actuated by an Arduino. It runs on 12V DC so it is a safe machine to play with.
Watch this video where I test the system while it is being built:
Principle of Electromagnetism
A coil that we run current through turns into a magnet. Now, if we wind a lot of wire on an iron core and put current through it, the magnet will be stronger because the iron core is a good conductor for the magnetic flux.
If we now put a permanent magnet next to the coil we will notice that the two magnets interact with each other. Based on this simple principle of electromagnetics I have built the Boogie Box by arranging lots of electromagnets in a grid. Then all we need is a permanent magnet which we can make move in any direction alongside the grid.
Step 2: Tools, Materials and Construction Costs
This project took me exactly five days from start to finish. I imagine now when all the techniques are available to your disposal, you will be able to finish it a lot quicker. Don't forget to share with me your results in the comments.
- Laser cutter
- 3D printer
- Milling machine
- Soldering iron + fume extractor
- Crafting knife
- Hot glue
Materials for the circuitry:
- Arduino UNO
- Prototyping board or a machine to fabricate your own PCB design
- 5 x LV8548MC H-Bridge
- 5 x 0.47 uF capacitor
- Connector pins
- 0.5 kg 0.224 mm enamelled copper wire (order code from Farnell 1230975)
- LED strip
- ON//OFF switch
Materials for the case:
- 5mm plywood 20 x 40 cm sheet - inside frame
- 3mm acrylic 50 x 50 cm sheet - outside enclosure
- 20 x M6 by 60mm bolts and nuts
- 4 x M5 by 80mm bolts and nuts
- Acrylic glue and brushes
How much would it cost you to make a BOOGIE BOX?
I'd say the answer of this question depends mainly on the machines and tools that you already have at home or have easy access to like friends or labs etc. If you can use a laser cutter for cheap you will save yourself a lot of money, same for 3D printing or fabricating a PCB. The list below is arranged from most expensive stuff to least expensive and if you can tick some of the things from the top part the project is actually quite cost effective to build.
- PCB manufacturing £75 or $114 (for MOQ two)
- Laser cutting £40 or $60
- 3D printing £20 or $30
- Copper wire £18 or $28 (Farnell 1230975)
- Arduino Uno £15 or $23
- 50mm x 50mm acrylic sheet £7 or $11
- 5 x LV8548MC H-Bridge £6 or £9
- 20 x 40 cm plywood sheet £5 or $7
- 20 x M6 by 60mm bolts and nuts £4 or $6
- Acrylic glue and paintbrush £3 or $5
- 4 x M5 by 80mm bolts and nuts £2 or $3
- LED strip £2 or $3
- Neodymium magnets £1 or $2
- Board header pins £0.6 or $1 (Farnell 1022263)
- 5 x 68 uF capacitor < £0.5 or $1 (Farnell 1870616)
Enough on this, lets get our hands on making the BOOGIE BOX now!
Step 3: Laser Cutting and Base Assembly
Laser cut the files out of 5 mm plywood. This will be the middle and top pieces of the boogie box. I have used square holes because my bolts are coach type.
Now fit the bolts through and tighten the nuts on the other side.
Step 4: 3D Printing the Reels
We are going to need 20 3D printed reels.
There is nothing specific about those. The inside hole is made to fit the bolt through. There is space at the bottom side to fit the nut. The size of the flanges is set to 16 mm diameter because the bolts are 18 mm apart from each other.
Step 5: Winding the Coils
I made myself a rig to wind the coils efficiently. A nail with tape to tightly hold the 3D printed part is tightened in the chuck of the drill. Then 20 cm of loose copper wire is wound around the nail which then goes onto the 3D printed part. The windings are made as tight as possible by keeping good tension on the wire.
The winding has 18 layers of copper and it's made by eye. Keep the layers flat!
I won't say this is the best way to do it, but here is a proof - anyone can do it at home and it works!
Step 6: Mounting the Coils
Now that the coils are all wound (phew that took two days ... and the help of my lovely girlfriend) slide them onto the bolts. Here I squeezed hot glue on the lower part of the bolt and the nut to secure the winding.
Feed the wires through the tiny holes in the plywood.
NOTE: Keep track of which end of the wire is the starting of the winding and which one is its end! This is very important because we want all the windings to be connected in the same way - one end is ground and the other is the power signal, but the polarity must be consistent.
I used the start of the winding as a ground terminal and its end is the power. All ground terminals are connected together.
Step 7: PCB Designing and Schematic
Why do we design a PCB for this project?
We want to be able to have full control of all coils. So we will use a microcontroller (MCU). The MCU has to have 20 outputs for all the coils that we have. My MCU of choice was the common Arduino Uno because it is small, cheap, easily programmable and has exactly 20 outputs!
Now that we have a microcontroller we want to drive the coils with it. But coils consume 1A each, so we have to have something to supply high currents at more than 10V DC between the coils and the MCU. My IC of choice was the LV8548MC motor driver. I have attached the PDF.
The driver is very simple - 10 pins, Vcc, GND and 4 inputs/outputs. Any signal on the imput greater than 1.8 V sets the corresponding output to high, which means Vcc.
The schematic and layout I designed on Target 3001. Basically I placed 5 ICs each with its power capacitor and connected the Arduino pins to all the ICs. The power supply comes from the Vin pin on the Arduino. The outputs are placed as pads where the wires can later be soldered.
See the attached Gerber files to manufacture your own PCB.
Step 8: PCB Fabricating
I utilised facilities provided by FabLab at the University of Edinburgh. Check them out here! There I had access to fabricate the PCB and all laser cut parts.
You could look for companies that offer to produce PCBs and send them the Gerber files I gave in the previous step!
The other option is to use a prototyping board, although SMD components won't be easy to handle I am afraid.
Step 9: PCB Populating and Soldering
The two main components of the PCB are the motor drivers and its power supply capacitor:
- LV8548MC - Farnell code 2217011
- 68 uF capacitor - Farnell code 1870616
Add the pins that allow you to plug the shield into the Arduino Uno.
Solder carefully - the ICs are TINY. Find a soldering iron with a thin tip and good temperature. I also used my portable fumaFan to stop the soldering fumes coming to my face.
Step 10: Connecting Coils to the PCB
I soldered the coils to the PCB column by column to every IC. This inevitably made the programming part easier. The blue cable you see is my common ground.
To avoid making a mess later, solder a column with windings at once to an individual IC and tidy the cables.
Step 11: Securing the Connections
I decided to apply masking tape and hot glue to make sure the ends of the enamelled wire that don't have the insulation do not shorten to each other or the PCB.
The glue also provides much required strength and robustness of the final wiring.
Step 12: Structure Spacers
The final part that I need to 3D print are the spacers that hold the structure layers apart. There are two heights of spacers - 28 mm and 30 mm and we need four of each. Those have a M5 hole in the middle. The bolts required to keep everything together are 80 mm long M5 size.
Step 13: Structure Assembling
Slide the bolts through the base wood piece.
Put the shorter spacers and then place the Arduino on the base. The wooden piece with the coils assembly goes next.
At this point arrange the wiring nicely between the Arduino and the bolts. There are about 5mm between the shield PCB that we fabricated and the plate on top.
Step 14: LEDs for the Boogie Box Dance Floor
To make the Boogie Box more interactive, I'm adding LEDs. The o-ring wooden piece is made just for that.
I used four pieces of LED strip. The long ones have 6 LEDs each and the short ones have only 3 each. I had to cut the end dots of the strips to make it all fit. Here you can choose whatever colour you feel like. Green, purple, blue or full RGB LEDs.
Step 15: LEDs Structure Soldering, Wiring and Assembly
I have soldered the strips back together to form one loop. The ends are glued using hot glue because no one trusts that sticky tape.
Use the rest of the spacers to lift the LEDs assembly up as a third layer.
Now, the power cable goes down to the Arduino shield through the holes in the structure.
Step 16: Structure Tightening
Using the last 4 nuts the structure layers are secured in place. I found tricky tightening all nuts around the cables and had to resolder some connections.
Now, everything has to be held together quite nicely - no flopping parts (except the Arduino) and dangling pieces of wood.
Step 17: Power to the LEDs
I soldered the LEDs directly to the power supply. This is pin Vin on the Arduino.
There will be no sophisticated control over the LEDs for now, but maybe in the next version of the Boogie Box.
Step 18: LEDs ON/OFF Switch
Solder a simple On/Off switch in line with the LEDs' positive power cable.
Use a 5mm switch diameter if you want it to fit in the enclosure hole.
Step 19: Adding Power Supply Extension
Finally, solder two wires to the Arduino power plug. These will provide the Arduino with power from an external plug.
The red wire is soldered to the positive input pin which is in the middle.
The black wire goes to the negative terminal.
Step 20: Enclosure Laser Cutting
The Boogie Box has to have a beautiful box, so laser cut the files provided and you will have an awesome enclosure!
The dimensions of my files are set for 3mm thick acrylic.
Step 21: Power Plug and LEDs Switch
The power plug and the LEDs switch are both fit through the acrylic and tightened.
The power cord that I just soldered to the Arduino is soldered to the plug.
Step 22: Enclosure Assembly
The first step to put the Boogie Box enclosure together is to stick all the pieces together with tape. I have used a lot of it to make sure every component is perfectly aligned with all edges. The only piece left out is the one with the power plug.
Take your time, this is a crucial step to make sure the enclosure will be glued strongly.
Step 23: Glueing the Enclosure
Once satisfied with the fit, I removed the acrylic from the Boogie Box.
To glue the pieces small drops of the acrylic glue is placed along the inside of the corners. The capillary effect "forces" the glue to flow between the edges and spreads on the inside. You need only 4-5 drops of glue along each edge.
Step 24: Arduino Programming Port Alignment
After the enclosure is glued, the Arduino has to be secured in place so that we have access to it at any time without disassembling the Boogie Box.
Align the Arduino with the hole for the programming port and apply hot glue to fix it to the wood.
Step 25: Putting the Boogie Box Together
The last step to complete is to put the whole box together. I used tiny wood screws to make sure the enclosure is firmly attached to the wooden pieces. The front face does not have screws, but it is glued to the side pieces.
Step 26: LEDs Light Diffuser
I was not completely satisfied with the LEDs and designed a light diffuser. It is made out of the same 3mm acrylic but I left one of the white protective tapes in place. The diffuser sits on the screws that hold the structure together.
Here you could use different colour acrylic to make things more interesting. I'd love to try something like bright blue or green next time.
Step 27: Boogie Box Out of Black Acrylic
I designed another box made out of black acrylic. The laser cutting and assembly techniques are identical with the only difference that the dance floor is made out of a white acrylic piece within a black border.
The light coming from beneath the dance floor is magnificent!
We have only two things left: to program the Boogie Box and to create the dancers! We'll first program the Boogie Box.
Step 28: Programming
I have written an Arduino code that has instructions allowing easy control of a one or two-legged dancer.
The code runs through the following routine:
- Initializes all pins as outputs
- Ties every pin to a new value to form adressing matrix with rows a, b, c and d and columns 1, 2, 3, 4 and 5
- Now in order to move a leg from position a1 to position a2 all we have to do is write the command on(a2), off(a1)
Programming your own dance
The code lets you to easily programme a dance routine. I have written the following functions that you can put in the main loop:
- set_left(); sets the left leg to position b2 (use only at the start)
- set_right(); sets the right leg to position b4 (use only at the start)
- L_forward(); moves left leg forward (use on rows a,b,c only)
- R_forward(); moves right leg forward (use on rows a,b,c only)
- L_back(); moves left leg forward
- R_back(); moves right leg forward
- L_side(); moves left leg to the outside
- R_side(); moves right leg to the outside
- L_cent(); moves left leg to centre
- R_cent(); moves right leg to centre
A handy test() function will activate all electromagnets sequentially generating a zig-zag pattern.
Step 29: Creating the Dancers
It's quick and easy to make fun dancers with either origami paper for an elegant crane or pompoms and cardboard for a wee monster. Use hot glue to stick everything together and don't forget the googly eyes!
You will also need wire and permanent neodymium magnets to make the feet.
Step 30: Boogie Box Complete
The Boogie Box is now complete! Get ready to move your dancers!
I'll be very happy if you share your dance moves, thoughts and suggestions on how the Boogie Box can become even more awesome!
Follow me on Twitter @Maketechnics
Please hit that VOTE button to support me in the competitions :)