The Making of Fireball HD Pinball

      22 Comments on The Making of Fireball HD Pinball



This post is a narrative overview of the build process for our Fireball HD Pinball – it is a good story of what I’d call an “accidental project” that has led to lots of learning, many nights of puzzlement as we moved from one problem to the next, lots of fun as we’ve shown it to others, and occasionally a game of pinball. This story will make it all sound so simple, but the reality was much, much more difficult. Huge thanks to those who helped along the way, especially my friends at FamiLAB – if you are interested in making things, and live in Florida (or visit!), please stop by to say hi and make things with us!

Enjoy, and please – ask questions!


It all started when… I saw a Fireball Home edition playfield on eBay locally – I purchased it ($135!) with the intent of lighting the lamps with an Arduino, framing it, and hanging it on the wall of my office. My boys saw it and asked “can you make it play?” – Now this was either an innocent question – or a challenge by my sons. Not one to let a challenge go unanswered, I started thinking about the problem – how hard could it be?

We’d need to:

  • Read switches
  • Turn on & off Lamps (LEDs)
  • Activate solenoids
  • Keep score

I’d built complex projects with Arduino before, and I’d been looking for a Raspberry Pi GPIO project. I’d purchased some when they first launched, but STILL hadn’t done GPIO work. We’d just finished teaching our first Intro to Raspberry Pi classes at FamiLAB, so I was really excited to try it.

My first plan was to find schematics – and they were available online (love this about pinball machines!). Once I’d studied the schematics, I realized that lighting the lamps and reading the switches would be a challenge – as they were in the same matrix – and running at high voltages! This means that I need a microcontroller that constantly is cycling through the lamps and switches >30fps so that the eye doesn’t detect flicker, but that leaves the lamps on enough that they are bright, and I needed to protect the microcontroller from the high voltages coming back from the switches. I decided that I didn’t want to dedicate my Pi CPU to cycling through lamps, so I prototyped it using an Arduino and this mess…


Prototype Lamp & Switch matrix

Here, I’m using an npn transistor array (ULN2803A) to source 6 “rows” of the matrix using PNP transistors (TIP42) with 24v. There is a corresponding npn transistor array which sinks 4 “columns” of the matrix.

This worked, and led to some fun lighting tests 🙂


Next we focused on the solenoid activation. We prototyped a small circuit, then replicated it. The “final” board…

Solenoid Driver

This board takes a +5v signal and actuates the solenoid using an PNP transistor (PN2222 – I hadn’t thought about using the arrays at this point…) and a P-channel mosfet (more of the FQP27P06). The 24v for the solenoids (and the Lamp / Switch matrix) comes from an unbranded Chinese  24v 15A power  supply ordered from Amazon.

Originally I was controlling these using the Pi and some MCP23017 i2c I/O expanders, but after realizing I needed good timing control, I once again decided to connect these to an Arduino, have it do the precise timing (and safeguard that a solenoid is not left on!) and then leave the Raspberry Pi for higher level duties.

Here’s our big test of the solenoid driver…(while I was still using the Pi to actuate them…)

Unfortunately, I hadn’t yet had the realization that with a Pi, you can stop your code, but leave a pin high (on Arduino, you stop it by unplugging it!) – and I overheated a Mosfet and melted a solenoid.

With lights lit, switches read, and solenoids actuating, it was time to integrate all this and create something playable.

With some guidance (and a long FamiLAB forum thread), I decided to use Python and Pygame. I’ve never written a line of Python, but it was a good time to learn. I learned using the Adafruit WebIDE (LOVE IT!), and started with basic GPIO examples, then moved to i2c, building as I went.

The basic system design has the Pi as an i2c master with the following functions:

  • reading switches from the lamp / switch Arduino when that slave pulls an interrupt pin hi (read by Pi GPIO after a level shifter)
  • sending commands to the lamp / switch Arduino to turn on / off specific lights
  • sending commands to the solenoid driver to fire specific solenoids
  • Gameplay tracking – players, balls, scores, bonus
  • Background music
  • Game event sounds

You can see that integrating it all made quite the wiring mess – this is a good shot of my project space – it stayed like this for months…

Fireball - wiring mess

Along the way we purchased another machine with a cabinet ($200!), built a new head, and installed a 24″ 1080p LCD. Here it is in an early playable state – it was an exciting moment!

At that point, we loved playing it – but we couldn’t move it due to the breadboard mess (and a cat that likes to occasionally steal breadboard jumper wires!), so we started moving the electronics into a less fragile state.

Doesn’t she LOOK guilty?!

Moxie - looking guilty


I’d been wanting to learn CadSoft Eagle and create real PCBs, but I hadn’t made the time, so for now, we made a protoboard version of the lamp & switch driver.

Lamp and Switch proto

Here’s a good pic of the back of that board so you can see the construction. I’m sure there are better ways, but this I started doing these at some point, I can get the boards at Radio Shack locally and it works for me…

Lamp and Switch - proto back

This board is connected to an Arduino Uno via a custom shield built with the seeedstudio arduino protoshield (from Radio Shack) – which btw, can be a great source for emergency project parts needs given that it contains a protoboard, lots of header, some small buttons, a potentiometer, etc.

This is a work-in-progress shot while I was building it – all my planning, I still reversed the wiring and rebuilt that shield a few times (doh!)

Lamp Switch Shield

With the breadboard gone, we moved all the electronics into the cabinet and took it to a “Maker Saturday” event at Orlando Science Center (we do this each month in advance of Orlando Mini Maker Faire, which I help produce…)

It was a mess…

Electronics in Fireball Cab

…but it worked! These Chinese students are enjoying their FIRST game of pinball!

Fireball at Maker Saturday

I was amazed – the pin worked far better than I expected, we had fun and the boys & I were energized for the next round of improvements – getting those electronics safely mounted!

Since my goal for the machine is to get others interested in learning Raspberry Pi, Arduino, and electronics, I wanted everything to be visible at an event. I had lots of complex ideas, but after talking to the boys, we decided to keep it simple for now – we just mounted everything right on the back of the head!

Electronics mounting - head

We knew this wasn’t permanent, so lots of zip ties and adhesive pads. I later built custom cables to get right of the jumper wires…and there is still more cleanup coming.

This video shows all the electronics and  explains the function of each item…

The white board to the left of the Raspberry Pi is an Adafruit PermaProto board which has the level shifter, the GPIO breakout, and two (currently unused) MCP23017.

After getting everything mounted, we went back to improve the game graphics – I’m using omxplayer and the pyomxplayer wrapper to call the videos from python. The videos play into a specific rect on the screen, and we have the capability of running multiple videos simultaneously which lets us still write text to the screen with pygame, but also have fancy video effects.

Currently we are reworking the in-game graphics – we’ve animated the player and ball numbers, and are working on some larger animations for the game “modes”.

Fireball - in game graphics

We had debug info on the screen for a long time, and recently we added a web4robots i2c LCD to the game (it is mounted on the apron right by the player) – I’ll likely switch this out later for a VFD to have a more classic pinball look…but I had this one, it fit and was easy to work with.

We went from this:

On screen fireball debug

to this:

i2c LCD in apron


Feeling good about the project, we took it to a Raspberry Pi event at FamiLAB – Gordon Hollingworth, Director of Engineering for Raspberry Pi visited, and in this video, you can hear his thoughts on Fireball HD….

[iframe src=”″]

Between Gordon’s comments and the reactions from others (especially kids!), we left feeling that our hard work was worthwhile!

Fireball Fun!


Fireball Fun 2

As much as we’ve completed our original goal of “make it playable” – we still aren’t finished.

I’m battling electrical noise – big projects with multiple voltages are tricky, and I’m learning a LOT about grounding…

Fireball Grounding

And coming soon:

  • Event tournaments with play tracking and prizes
  • NFC login by phone, card, or hand implant (yes, we know people with them!) for regular players using the Adafruit NFC shield
  • Website with player profiles, high scores, tournament rankings, etc.
  • Adafruit Thermal receipt printer with QR codes so a new player can scan to register and claim their score
  • Adafruit Accelerometer (i2c device) to act as a very fancy tilt sensor
  • Adafruit Current sensor (i2c device) to ensure solenoids are not overheating
  • Fuses – I need lots of fuses 🙂
  • Lots of cosmetic work – painting the head, mounting the speakers, creating a custom bezel for the monitor
  • Custom Artwork by Punkin Studios – a local artist that I met last year at Orlando Mini Maker Faire. I’ve asked him to start by recreating original Fireball backglass art without the scoring boxes. Here’s the preliminary inked version…

Prelim ink

A HUGE thank you to everyone that has helped along the way, especially to my wife, Candy, for letting this big messy project live in the house for all these months and for listening to it make loud noises at all hours of the night as I’ve been troubleshooting.

If you live in Florida, please visit Orlando Mini Maker Faire on October 5th, 2013 to see Fireball HD!

Thanks for reading all this, please ask questions or leave a comment!




22 thoughts on “The Making of Fireball HD Pinball

  1. Pingback: Fireball Pinball HD | Raspberry World

  2. Pingback: Fireball Pinball HD @Raspberry_Pi #piday #raspberrypi « adafruit industries blog

  3. Eric Gunnerson

    Flippers have two coils. There is a big coil that makes the flipper move, and then there is a small coil that is used to hold the flipper up if the button is held. Old pinballs used end-of-stroke switches to do this; newer ones (1990+ is new) did it in software.

    You might be able to get away with PWM on the coil instead of using the separate winding.

    1. iancole Post author

      Eric, we used the original coils and they do have end of stroke switches. We’ve discussed software activation of the flippers, but haven’t gotten to that idea yet. I suspect we will convert the switches over to 5 volt and build driver circuits like the ones we’ve built for the other coils. I’ll look into how they did it in the newer models – thanks for the tip.

  4. Pingback: Building an entire pinball machine from just the playfield

  5. Pingback: rndm(mod) » Building an entire pinball machine from just the playfield

  6. Pingback: Building an entire pinball machine from just the playfield - RaspberryPiBoards

  7. Pingback: Building an entire pinball machine from just the playfield — Blog of MPRosa

  8. Pingback: Building an entire pinball machine from just the playfield | Daily IT News on IT BlogIT Blog

  9. Pingback: Building an entire pinball machine from just the playfield | Orange Claymore Red Slime

    1. iancole Post author

      I’ve seen your DMD extender in the past (on the website) and can’t wait to see what you do with the personal DMD 🙂

  10. Pingback: ตู้ Pinball อีกครั้ง | Raspberry Pi Thailand

  11. Robert Winans

    I am looking into restoring an old EM pinball table called Super Orbit. I have not done anything with the Arduino and was wondering if you could offer some advice on getting started. At the moment the pinball table will light up, and randomly will make its “launch” sound. That’s about all it will do. I have repaired switches, and I have even built my own MAME cabinet by hacking an old keyboard. I haven’t ever tackled anything this big before. Again, any help would be greatly appreciated.

  12. Dick Skaggs

    hereThanks for the kind reply. Really impressive project you have t. I see a lot of hard work.
    I look forward stopping in at the lab, as I live just several blocks away.

    Until then-



  13. Pingback: House of Engineering Funk – 2013 Miami Mini Maker Faire

  14. John


    Great project well done!

    If i was just going to do the sound, how might i do that? What would i need?

    I have an old Electro Mechanical pinball machine and just simply wanted to look at pimping it up a boit, so that it would play different sound affects, and have a background music – a few other features.

    What might i need to achieve this please?

    There wil lbe no Outputs, other than may be ythe odd LED top let yo know if it reqasy to go.

    Did yo have much trouble with latency between an input operating and a sound affecet call?

    Howe many sound effects could be played siu,mltaneuosly, wit the background music going?

    By the way, i don’t yet own a Pi, so would be starting from scratch.



  15. Pingback: Making on Vacation with littleBits | MAKE

  16. Courtney Wilson

    Hi Ian! What a strange coincidence. A couple of years back I started on a custom pinball machine project of my own. After months of looking for an old machine I could gut without any guilt I found a Bally Fireball! I had gotten the lights and switches working but I choose to use an off the shelf power driver board for the solenoids which I could never get working consistently. So the project got put on hold. I’m back on it and suddenly I see this blog! I am curious how well your solenoid driver board works and if you have even published its schematics? I have been working on a simple transistor based approach like you have but I keep blowing them up.

  17. Kourtney Jensen

    I’m building a pinball machine and need a high voltage solenoid to complete the internal hardware. I wasn’t sure what type is needed with the instructions that I have been following but I want to get a larger solenoid to give me the best charge in the machine. Hopefully, I’m doing this all right because I’m a first timer at building anything to this extent!


Leave a Reply

Your email address will not be published. Required fields are marked *