Inspired by ASCAS (Techbuilder)'s instructable on building a life size BB-8, our team wanted to build a Bluetooth controlled transparent BB-8 (using an Arduino Uno) that could also react to music for our electronics project. We wanted it to be transparent so that other people could see how it worked. While the full version is still in progress, we have successfully built the BB-8 to the point that it moves via Bluetooth. The current Instructable will therefore present a variation of building a life-size BB-8, with steps regarding music to be added in the future. Please be patient with us as we continue working on the BB-8. At the very least, you will have a moving BB-8 to play with while you wait!
Special shout-out to the Pomona College Physics Department for their amazing support, especially Janice, David, Glen and Tony!
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Figure Out How BB-8 Works
We started by getting a general feel for the project. We first researched information on www.howbb8works.com. We also explored Disney's own patent on its "Magnetic spherical balancing robot drive." We realized BB-8's motion mechanism was based on this spherical balancing approach, and began to base our design and sketch on this principle. Here is the link to the patent:
We also watched several videos on the Sphero BB-8, a popular toy that operates on the same principles we were trying to understand:
Another useful source was ASCAS's approach:
We realized BB-8 operates much like a hamster wheel—that is, the motor mechanism inside the sphere stays stationary relative to the sphere while the sphere moves.
Step 2: Materials
At first, we considered 3-D printing the BB-8 parts. We quickly realized this approach would be too expensive, and decided to get resourceful with our materials. We ended up buying the necessary parts separately. We purchased a transparent, polycarbonate sphere for our body so you can see the internal mechanism during operation. Note that you can use anything spherical for the body as long as it's sturdy (e.g. a globe).
1.) 20''-24"" diameter transparent sphere (We bought 2 polycarbonate hemispheres from California Quality Plastics)
2.) Arduino Uno
3.) Pololu Dual VNH5019 Motor Shield
4.) 2 Pololu (19:1) 37D Metal Gearbox Motors
5.) HC05 or HC06 Bluetooth Module
6.) 8 rolling deodorants (to serve as makeshift ball bearings)
7.) Lots of spare wood (to make disks and poles)
8.) 2 wheels (W-30-EO-3/8)
9.) Neodymium magnets
10.) Heavy brass cylinders (for counterweights)
1.) 12'' diameter hollow styrofoam hemisphere
2.) 12'' diameter styrofoam disk
3.) Rubber band ball casing (to serve as the main eye)
4.) 2 antennas
5.) Spray paint
1.) Hot glue, super glue, Velcro strips
2.) Two AA battery holders
3. MAX 4466 Mic amp
Step 3: Cut the Platform
We used Adobe Illustrator to design a platform that would serve as our main body of the inner mechanism. As you can see, it has 2 rectangular cutouts on each side to mount the wheels. We then used a laser cutter (Trotec engraver) to cut out the design. Note that if you don't have access to a laser cutter, a jigsaw will work just fine.
Step 4: Make Ball Bearings!
We emptied the contents of the deodorants and cut them so that we could use them as ball bearings on both the head and main internal platform.
Step 5: Fit the Wheels and the Motors
We extended and thickened the axles on each motor so the wheels would fit snugly on the axles and maintain strong traction.
Step 6: Assemble!
Using a roll of metal strip with holes, we fashioned a clamp to mount the wheels, which then we screwed down using a drill. We attached the motor shield on top of the Arduino and used Velcro to attach the whole module to the center of the wooden board. We hot-glued the two AA battery compartments and deodorant rollers to the wooden board as shown in the pictures.
Step 7: Make Two Poles to Hold the Upper Platform
We used two pieces of long scrap wood of equal length and fashioned them to the wooden platform. These pieces reach close to the top of the sphere, but don't quite touch it (to maintain a proper magnetic connection to keep the head on the body...more on this in Step 17). We screwed them in and hot glued them to the base for good measure.
Step 8: Build the Magnetic Platform
In order for BB-8's head to stay on via magnetic connection, we built a smaller round wooden platform (made of MDF board) and attached it to the top of the 2 wooden posts. We then hot-glued neodymium magnets to this MDF board in a triangular formation. If you look closely, the magnets are atop smaller wooden blocks, which were necessary in our build to bring the magnets as close to the top of the sphere as we could without them scraping the inner surface.
Step 9: Connect the Wires!
First, connect the two battery holders in parallel by putting the red wires of both into Vin of the motor shield and the black wires into Ground. Next, connect the wires of the left motor to M1A and M1B, then the wires of the right motor to M2A and M2B. Power the Arduino using a 9V battery (which you can ideally attach via Velcro strips).
Step 10: Connect the Bluetooth Module to the Arduino
We placed the Bluetooth module next to the Arduino using Velcro strips. We soldered wires to each branch of the Bluetooth module and connected the wires of the Bluetooth as follows:
-RX to TX of Arduino.
-TX to RX of Arduino.
-Vin to 5V of Arduino.
-Ground to GND of Arduino.
Step 11: Arduino Codes for Motor Control
For the Bluetooth motor control code, we used the code provided in
with a little bit of modification...we reversed the speed gauge such that speed increases as you move the guage from left to right instead of from right to left (in other words, we corrected the code that accidentally flipped the direction of the speed controls for the motors). To work this code, we used a free Android app called Bluetooth RC Controller. Simply download the app, connect to HC05/HC06, and you'll be able to use it! (*credits to ASCAS for the motion code).
To completely operate the BB-8, we also used a library for the motor shield, which can be found at:
To install the motor shield, just download the package from the link above, decompress it and move it to the folder titled "libraries" inside the Arduino folder.
Step 12: Arduino Code for Music Response
This aspect of our project is still in development. Our goal is to integrate a low-pass filter code using a microphone to make the BB-8 responsive to music (specifically lower frequencies like bass). We will return to this in a bit.
We designed a low-pass filter using this free website:
The resulting code differs on the microphone you will likely use because you need to calibrate the code multiple times to get the correct input signal with which to render the filter code. We've included our sample filter code here for reference.
To use this website, first set the limits of the frequencies you want to pass and block and set your input frequency to an arbitrary value (such as 2000Hz). We chose to let through only the bass signals. Once you get that filter, run the code using your microphone and read the input signals, then remake the filter using that value as the input signal. You should end up with the right filter!
Step 13: Upload the Arduino Package!
Unplug the wires of the Bluetooth module and upload the Arduino file into the Arduino. We're good to go!
Step 14: Add Counterweights
Depending on how unstable the inner mechanism is inside the sphere, consider using counterweights to increase the overall weight and keep the center of mass below the equator to maximize the hamster ball effect. We added three, spaced-out weights to prevent concentrated stress on any part of the wood.
Step 15: Put Dowels Along the Perimeter of the Sphere for Fastening Mechanism
As shown, we drilled 36 corresponding holes along the edge of each of the two hemispheres every 30 degrees to insert dowels. These dowels make it easy to fasten and unfasten the polycarbonate hemispheres.
Tip: If you'd like to paint the inside of these hemispheres, use specialized Lexan spray paint and paint from the INSIDE of the sphere.
Step 16: Try It Out!
Put everything inside and try it out. This is where a lot of debugging takes place, so make sure it rolls to your satisfaction before you proceed further.
Step 17: Build the Head
Once you're satisfied with the body mechanism, make sure it rolls properly, and check that the internal mechanism has a low enough center of mass, you can start building the head! For the main eye, we used a plastic hemisphere that held a rubber band ball. For the smaller eye, we actually used another one of the deodorant ball bearings and simply spray-painted it black.
We used Styrofoam to keep the head light and sturdy in the event that it falls off (which it definitely will the first several tries!).
As you can see, on the underside of the head we placed 3 magnets in a triangular formation that corresponds with the magnetic arrangement atop the MDF board on the top of the internal mechanism inside the sphere. This magnetic connection is what keeps BB-8's head on top of the sphere even as the sphere moves. Note that you may have to test a variety of magnetic arrangements depending on your magnet strength before you find the right balance.
The 3 deodorant roller balls act as ball bearings to decrease the friction of the head as the body moves below the head.
Also note that we used duct tape to keep the sphere together in addition to the 36 dowels. The dowels alone were not enough to keep the hemispheres together, so we found that duct taping the perimeter keeps everything together nicely and doesn't inhibit the motion!