Big Ball Maze Game using Arduino

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.
Arduino Big Ball Maze Game

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

Cut the circular board out of a 1200mm x 1200mm (48” x 48”) sheet of 19mm (¾”) plywood using the attached design (disk.eps). The 3.175mm (1/8”) wide circular slots are cut 6.35mm (¼”) deep to locate the acrylic walls of the maze. I made it at TechShop using the ShopBot and the attached Vcarve file (disk.crv). You could do it manually using a hand-held router and a piece of string.

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.
Setup Arduino Big Ball Maze Game
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.

disk.crv695 KB

Step 2: The stand

I’ve attached the 123D project file I used to design the stand (BigBallMaze.123d)

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.

Major Components in Project


Control Electronics
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)

Leave a Comment

= 5 + 4

(Spamcheck Enabled)

Read previous post:
Frontdoor light switch based on local sunset/sunrise

Pi-files: Frontdoor light switch based on local sunset/sunrise I have a couple of front door LED lights which I would...

Scroll to top