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.

Tools needed:

  • Laser cutter
  • 3D printer
  • Milling machine
  • Drill
  • Soldering iron + fume extractor
  • Pliers
  • 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.

Boogie Box

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.

General guide

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.

Get creative!

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 :)

Comments

author
The_Maker134 made it!(author)2016-03-10

What r the demensions for the wood platforms, why u no list them or make a pdf? I can't afford to use or rent a lazer cutter. :/

author
ZackK5 made it!(author)2016-03-01

how to buy it.
i want to buy it for my son.

author
hertzgamma made it!(author)2016-03-02

Hi Zack, please drop me a personal message about this :)

author
ZackK5 made it!(author)2016-03-06

I already send

author
milenandreuzo made it!(author)2016-03-01

here's a silly question:

i only now realised that, if you use magnets on the dancer's feet, aren't they already being drawn to the bolts on the eletromagnets?

author
hertzgamma made it!(author)2016-03-02

Hi, Yes, the magnets stick to the bolt ends but when you apply current the force is much stronger so the dancer's legs move.

author
milenandreuzo made it!(author)2016-02-15

I didn't get the part where you wire the electromagnets: you put 20cm of wire around the nail, then more 18 layers of wire around the 3d printed part?

author
milenandreuzo made it!(author)2016-02-15

Oh, wait! Sorry hahah you used the nail only to hold the 3d printed part in place, right? The electromagnet is made by winding the wire around the reels. Do you know how many cm goes into those 18 layers?

author
hertzgamma made it!(author)2016-02-16

That's right - the nail holds the 3D printed part. You grab the nail on the drill chuck and then turn the 3D printed part. And about the length of wire used - no idea really. I think for the whole project the 0.5 kg farnell reel was just enough (order code from Farnell 1230975).

author
milenandreuzo made it!(author)2016-02-16

Do you think it's possible for me to use the l239d for the h-bridge? I'm having trouble to find the ic you used around here..

author
hertzgamma made it!(author)2016-02-17

Hi, yes I think it should work just fine :)

author
milenandreuzo made it!(author)2016-02-17

Even with the output current being 600mA per channel? http://pdf.datasheetcatalog.com/datasheet/texasins...

That's just really the only one I've found for sale around here. The L239 has an output current of 1A but I can't find it.

author
The_Maker134 made it!(author)2016-02-16

Huh, I'd guess a lot, a meter or more (I live in america so I'm stuck with the stupid us continental form of measurement :P ; I really don't know).

author
The_Maker134 made it!(author)2016-02-11

I can't find the same capacitors you used, I think I found it here*, but it doesn't look like yours. Thank you for all your help, this is a really cool project!

*http://www.newark.com/panasonic-electronic-components/eee-1har47sr/aluminum-electrolytic-capacitor/dp/96K9434?ost=0.47+uF&selectedCategoryId=&categoryId=800000005279

author
milenandreuzo made it!(author)2016-02-15

I think he wrote .47uF on the materials list but actually used 68uF, see step 9

author
The_Maker134 made it!(author)2016-02-16

oh thanks! got it all ordered!

author
The_Maker134 made it!(author)2016-02-08

Could I use a breadboard instead of a circut board? I don't really have much cash. Thanks!

author
hertzgamma made it!(author)2016-02-09

Sure, you can! Be warned though that coils might draw up to an ampere or two so it may overheat because of bad breadboard connections.

author
The_Maker134 made it!(author)2016-02-04

I have a Raspberry Pi Zero, not an Arduino, will the program still work? Is there a way I can edit the format?

author
hertzgamma made it!(author)2016-02-06

I haven't had a go with it but I imagine if you tweak the code it would work. Let me know if you have more specific questions once you start going. Make sure there are enough digital/analogue I/O pins to be able to power up all the coils. 1 per coil is what you need if you don't use some external driver IC. :)

author
AbeV made it!(author)2015-08-15

would there be enough pins leftover on the uno to add and Arduino touch pad or joystick to control the dancer?

author
hertzgamma made it!(author)2015-08-17

Hi AbeV. The Uno does not have spare pins, but a Mega will!

author
timpep made it!(author)2015-07-21

Hi great job, I tried to download the file for the origami wood top and mid but it just comes up as garbled text the other one worked fine. Thanks Tim

author
Raitis made it!(author)2015-06-28

Congrats!

Ever since seeing the original one where folks used origami figures to do this I thought that this would both make a killer 'ible and be an otherwise fun thing to make. :)

author
lgooms made it!(author)2015-06-24

Congrats!

author
hertzgamma made it!(author)2015-06-24

Thank you! :)

author
zaphodd42 made it!(author)2015-06-10

I would love to put an LED color organ in the side or dance floor. (Sorry if you already mentioned that!) Great Job!!!

author
hertzgamma made it!(author)2015-06-11

Sounds interesting but I have no idea what a LED color organ is. What is it?

author
zaphodd42 made it!(author)2015-06-11

A circuit listens to music and makes LEDs respond to it. Usually by dividing the music into high-tones, mid-tones and low-tones. Kind of like a VU Meter. Heres how to make one:

https://www.youtube.com/watch?v=ubQC839Pvqk

author
hertzgamma made it!(author)2015-06-20

Thanks for sharing! That will go in v2 of the Boogie Box!

author
eLab made it!(author)2015-06-14

That's quite an ingenious project! Very cool!

author
hertzgamma made it!(author)2015-06-14

Thanks!

author
More+Cowbell made it!(author)2015-06-10

awesome.

author
FredO2 made it!(author)2015-06-06

I love it! I might make one for my sisters birthday. So cool.

author
hertzgamma made it!(author)2015-06-06

Thanks FredO2, I'll be happy to help if you have questions along the way!

author
TheFrankTurk made it!(author)2015-06-03

This is a ridiculous question, but I have read this instructable twice and I don't understand how your control system synchronizes the dancing to the beat of the music playing. Can you explain that part -- and imagine I'm extremely stupid. :-)

author
hertzgamma made it!(author)2015-06-04

Hi TheFtankTurk,


Thanks for the question (there are no ridiculous questns)!

To ur question: Please take a look at step 28 where I explain the programming bit. Basically the Arduino is in the heart of making the dancers move. I have written functions that move a magnet from a position forwars/sideways/backward and by mixing those functions and some delays between them I can create a choreography to my own taste. I could revise this step if it seems unclear.
author
TheFrankTurk made it!(author)2015-06-04

Thanks for that - I did see step 28. What I understand there is that you are programming movements based on the program's timing, not an external cue. What I am looking for is a way to make the program "listen" to a mic and advance to the next dance move based on the music it "hears". Your video is obviously timed to the music you played in the video. I'm curious as to whether you are a clever editor or if your program is detecting beats in the music to make the puppets dance?

author
hertzgamma made it!(author)2015-06-05

Yes, you are totally correct. The movements are timed by the Arduino and it does not "listen" to the music but just executes my commands. These features will be targeted in v.2 of the Boogie Box as while programming it I saw that it will be more entertaining to automate the dancers. I also plan to integrate RGB LEDs maybe individual per every coil because it will be more interesting to watch. For this I need to replace the Arduino Uno with a Mega or Due as currently there are no free I/Os to use.

author
TheFrankTurk made it!(author)2015-06-05

That's a path I'm tracking because I am working on a dancing Baby Groot puppet/statue. I thought you might have solved the holy grail of that project here. :-)

I'll race you to the finish line for that. (-:

author
Tarun+Upadhyaya made it!(author)2015-06-04

Awesome!! Loved the way you made your video too :)

author
hertzgamma made it!(author)2015-06-04

Thank you Tarn! The video was very time consuming...

author
gdsmit1 made it!(author)2015-06-04

Cool project.

About how much wire is on each of those coils?

author
hertzgamma made it!(author)2015-06-04

Thanks gdsmit1,

The answer to this question is not precise, but I'll try: 1/2 kg of the 0.224mm enamelled copper wire (this is one spool as you'd buy it from Farnell for example) is used for the whole project. That's 20 windings. Because the winding was by eye I tried to maintain 18 layers of copper throughout all winnings.

author
dkkim made it!(author)2015-06-03

Very clever and even more quirky and artistic! Nice job!

author
hertzgamma made it!(author)2015-06-03

Thank you!

author
barancanaydin made it!(author)2015-06-03

Awesome.

author
hertzgamma made it!(author)2015-06-03

Thanks!

author
CHER1 made it!(author)2015-06-02

this is so cute and fun

I wish i could have one

like!

author
hertzgamma made it!(author)2015-06-03

Thanks Cher, I might consider making some for sale one day haha

About This Instructable

45,569views

449favorites

License:

Bio: I am a University of Edinburgh electronics engineering student.
More by hertzgamma:Aerial Photography Super Affordable KiteBOOGIE BOX: The Electromagnetic Dance Floor3D Printed Molds Casting Tutorial: Complex Shapes
Add instructable to: