Summary of Big Ball Maze Game using Arduino
This project is a large-scale (48” diameter) Ball Maze game controlled by an Arduino microcontroller. Players tilt a circular wooden board to move balls through a maze, using a wired accelerometer controller, an Android phone app, or body movements detected by sonar sensors. The board's tilt is adjusted by two gearmotors pulling cords attached beneath it. The maze walls are made from clear acrylic fitted into routed plywood slots, mounted on a gimbal stand built from plywood and MDF. The system includes sensors for position feedback and detailed motor and electronic controls.
Parts used in the Big Ball Maze Game:
- Arduino Uno or compatible microcontroller (Sparkfun DEV-11021)
- Arduino prototyping shield (Adafruit #51)
- Bluetooth Mate Gold module (Sparkfun WRL-09358)
- Two accelerometer modules – 2 or 3 axis (Sparkfun SEN-00849, Modern Device MD0500)
- Two Maxbotix XL-Maxsonar EZ0 ultrasonic rangefinders (Sparkfun SEN-09491)
- Two Dual VNH2SP30 motor drivers (Pololu #708)
- 12V 10Ah SLA battery (Universal S3BATT)
- 12V 4A 3-stage battery charger (Energizer 84028)
- RJ11 cables (3 x 6 conductor, 6ft, Startech RJ6FT)
- RJ11 jacks (6 x 6P6C, Jameco #124039)
- 16AWG DC power cable (3ft speaker wire)
- 560 ohm 1/4 watt resistor
- LED (any standard)
- Stripboard prototyping circuit board
- 22AWG jumper wires (various colors)
- Momentary SPST switch
- DPDT pushbutton ON-OFF switch
- Two 12V gear motors, 19:1 ratio, 500rpm, 5kg-cm torque (Pololu #1102)
- Two 60-tooth 32 pitch acetal hub gears (ServoCity #RHA32-36-60)
- Two 30-tooth 32 pitch acetal hub gears (ServoCity #RHA32-36-30)
- Two 6mm bore set screw hubs (ServoCity #3472H)
- Two 5/16” bore set screw hubs (ServoCity #3466H)
- 3/32” hex key (ServoCity #7122A16)
- Sixteen #5-40 3/8” panhead hub screws (ServoCity #90272A126)
- Twelve M3 x 10mm panhead motor screws (ServoCity #92005A120)
- Eight ½” long flat head brass wood screws
- Two shafts, 5/16” x 90mm
- Four 5/16” ID skateboard bearings
- Non-slip tape (300mm length)
- ¾” plywood sheet (1220mm x 1220mm)
- Clear acrylic strips (7 strips of 1¾” x 48”, 3 strips of 2¼” x 48”)
- Small ½” long panhead screws with washers (30 pieces)
- Screw rings (4 pieces)
- ¼” MDF sheet (610mm x 410mm)
- Four 5/16” x 108mm shafts
- Four 5/16” shaft pulleys, 1 15/16” OD (McMaster-Carr #3434T39)
- Eight 5/16” ID x 38mm aluminum tube bushings
- Four 5/16”-18 x 150mm threaded rods
- Eight 5/16”-18 lock nuts
- Eight 5/16” washers
- 3mm cord, 3700mm length (12 ft)
- Four wire hooks
- 1¼” x 10” PVC pipe
- 1½” PVC coupling
- 2” PVC coupling
- Four #10-32 x ¾” flathead screws
- Four #10-32 lock nuts
- Two #10 x ¾” flathead wood screws
- 57mm diameter Bocce Pallinos (balls)
This project was the result of an urge to contribute something to the Creative Games section of my kids’ elementary school fair. The kids loved it for it’s simple old-school game aesthetic mixed with Wii-style and Kinect-style video game control. It’s a spin-off project of an earlier Ball & Plate experiment mentioned here in the Instructables forums.
The machine is an over-sized (1200mm (48”) diameter) version of the traditionally hand-held game where the object is to tilt a circular disc to move one or more balls though to the center of a maze. The circular board is supported by a stand with a centrally mounted gimbal, and controlled by either a wired hand-held contoller, an Android phone, or by body movements.
An Arduino microcontroller is used to monitor the player’s actions and then adjust the tilt of the board to match. The wired controller uses an accelerometer module. The Android phone controller uses the in-built accelerometer and a custom app made with Processing to communicate via bluetooth with the Arduino. The body controller uses two sonar proximity sensors to detect how far the operator is from a central position to determine how much to tilt the board.
The board is tilted using two gearmotors pulling on strings attached to the underside of the board – one for front and back, and one for left and right. An accelerometer is attached to the underside of the board to provide the position feedback to the Arduino.
Step 1: The board
The outer maze wall is 57.15mm (2¼”) wide strips of 3.175mm (1/8”) thick clear acrylic. These are screwed at regular intervals around the edge of the board with wood screws and washers, and positioned so that the lower edge is flush with the underside of the board. The inner maze walls are 44.45mm (1¾”) wide strips of the same acrylic, so that once they are bedded into the 6.35mm (¼”) deep slots, they are the same height as the outer wall.
The inner two rings of walls have to be softened in an oven before they can be bent enough to fit the tighter radii of the slots. This can be a tricky operation. I placed the acrylic strips (one at a time) on a baking sheet and kept the oven at a low temperature and continually checked so that the acrylic didn’t get too soft. Make sure you’re wearing gloves when you get the acrylic out of the oven.
The walls need to be glued into their slots. Even if they are a snug fit, the banging of the ball eventually pops them out.


Step 2: The stand
Cut the main leg pieces out of a 1200mm x 1200mm (48” x 48”) sheet of 19mm (¾”) plywood using the attached design (legs.eps). If you have access to a CNC router, I’ve also attached the Vcarve file (legs.crv). Cut the rectangular pieces out of 6.35mm (¼”) MDF using the attached design (quarterInchBoard.eps, quarterInchBoard.crv).
Assemble each of the four pulley shafts by sliding the pulley onto the (108mm) 4¼” x (7.94mm) 5/16” shaft, and then the 38mm (1½”) long tubing onto each side of the pulley. Add a drop of light oil so the pulley spins nicely.
Assemble the parts according to the pictures.




Materials
Arduino microcontroller – Uno or compatible (Sparkfun DEV-11021)
Arduino prototyping shield – (Adafruit #51)
Bluetooth module – Bluetooth Mate Gold (Sparkfun WRL-09358)
Accelerometer modules (2) – 2 axis (or 3 axis) (Sparkfun SEN-00849 and Modern Device MD0500)
Ultrasonic Rangefinders (2) – Maxbotix XL-Maxsonar EZ0 (Sparkfun SEN-09491)
Motor drivers (2) – Dual VNH2SP30 (Pololu #708)
Battery – 12V 10Ah SLA (Universal S3BATT)
Battery charger – 12V 4A 3 stage (Energizer 84028)
RJ11 cables (3) – 6 conductor, 6 foot long (Startech RJ6FT)
RJ11 jacks (6) – 6 conductor (6P6C) (Jameco #124039)
DC power cable – 16AWG speaker wire, 3’ total
Resistor – 560ohm 1/4watt
LED – any old LED
Stripboard – prototyping circuit board
Jumper wire – 22AWG multiple colors
Switch – momentary SPST
Switch – DPDT pushbutton ON-OFF
Motor Housings
Gear motors (2) – 12volt, 19:1gear ratio, 500rpm, 5kg-cm (84oz-in) torque (Pololu #1102)
Gears 60 tooth (2) – 32 pitch acetal hub gears (ServoCity #RHA32-36-60)
Gears 30 tooth (2) – 32 pitch acetal hub gears (ServoCity #RHA32-36-30)
Set Screw Hubs (2) – 6mm bore (ServoCity #3472H)
Set Screw Hubs (2) – 5/16” bore (ServoCity #3466H)
Hex key – 3/32” (ServoCity #7122A16)
Hub screws (16) – #5-40 3/8” panhead (ServoCity #90272A126)
Screws – motors (12) – M3 x 10mm panhead (ServoCity #92005A120)
Screws (8) – flat head ½”long brass wood screws
Shafts (2) – 5/16” x 90mm
Bearings (4) – 5/16” ID skateboard bearings
Non-slip tape – 300mm length
The Board
Plywood – ¾” x 1220mm (48”) x 1220mm (48”)
Acrylic strips (7) – 1220mm (48”) x 1¾” clear
Acrylic strips (3) – 1220mm (48”) x 2¼” clear
Screws (30) – small ½” long panhead with washers
Screw rings (4)
The Stand
Plywood – ¾” x 1220mm (48”) x 1220mm (48”)
MDF – ¼” x 610mm (24”) x 410mm (16”)
Shafts (4) – 5/16” x 108mm
Pulleys (4) – 5/16” shaft, 1 15/16” OD (McMaster-Carr #3434T39)
Bushings (8) – 5/16” ID x 38mm (1½”) Aluminium tube
Threaded rod (4) – 5/16”-18 x 150mm (6”)
Lock nuts (8) – 5/16”-18
Washers (8) – 5/16”
Cord – 3mm (1/8”) cord, 3700mm (12’)
Wire hooks (4) – to attach to the ends of the cord
The Shaft and Gimbal
PVC pipe – 1¼” x 10”
PVC coupling – 1½”
PVC coupling – 2”
Screws (4) – #10-32 x ¾” flathead
Lock nuts (4) – #10-32
Screws (2) – #10 x ¾” flathead wood screws
The Balls
Balls – 57mm diam Bocce Pallinos (Epco)