The first two posts introduced this project and the things we tried to make the first prototype machines work. We eventually ended up using an Arduino Mega and some supporting electronics to control our first prototype machines. We are currently working on a more powerful and flexible electronics system for controlling pinball machines, and maybe even other devices.
As this post's title gives away, we are working on a new electronics system that we call PinBus. One of this system's key features is that it will be based on a databus. That's why its name is PinBus, a combination of pinball and databus.
Traditionally, pinball machines had all their electronics mounted in the backbox. The electronics were mounted on multiple, sometimes large, PCBs. All drivers and chips were placed on these boards. From these boards, a large wire harness connects the electronics to all the devices under and on the playfield.
So, what does it mean that this system will be based on a databus? A databus allows for splitting up the traditionally large PCBs into much smaller boards. Boards can now be made small enough to be mounted under the playfield, eliminating most of the wire harness as the playfield devices can now be connected to the electronics through a bunch of short wires.
Using a databus has become more and more popular in the world of pinball. In 2013, Multimorphic, Inc. introduced their P3-ROC system. The system was developed to be used in homebrew pinball machines, but today there are commercial machines made based on the P3ROC system. In 2015, Stern Pinball Inc. introduced their SPIKE system. Another system based on a databus has been developed by Fast Pinball, also aimed at homebrew pinball machines. The Williams remakes made by Chicago Gaming Company also use some form of databus.
Right now, the only thing we really know for sure is that PinBus will be based on a databus. There are a lot of details we have to work out. We have a lot of ideas, which you will read in the rest of this post. You will read more details about available options and the decisions we made in later posts.
The databus is the easiest one. But first, let me explain what a databus is. A databus, or bus for short, actually refers to a type of network topology. In a bus network, each device or board you connect to it is called a node. Nodes are all connected to the same cable, the bus.
There are multiple databusses to choose from. We are currently leaning towards using a RS-485 based bus. One important benefit of this type of bus is that it can be used with virtually any microncontroller having an UART interface.
Alternatives to the RS-485 bus are the CAN and I2C busses. The CAN bus was developed for use in vehicles, but can nowadays be found anywhere. I2C was developd to attach peripheral ICs to microcontrollers.
There are three places in a pinball machine that need to have at least one node board. The first place is the backbox. The backbox will contain the main node, responsible for running the game code. This node may be either self supporting or it may server as a bridge to a regular PC. This enables the use of a LCD monitor as display.
Then there will be a node in the cabinet of the machine, just behind the coin door. This board will be used to connect buttons on the cabinet itself. This board will also feature a accelerometer to detect movements of the cabinet that may trigger a tilt.
The most important place for node boards is the playfield. These boards will come in multiple variations. There will be one specialized board that can be mounted under the apron. This board will have connections dedicated to driving flipper and ball-trough solenoids. In addition to this board there will be three generic playfield nodes, which differ in the number of high-voltage drivers.
Each node will have its own microcontroller. It needs this microcontroller to be able to interpret the commands received from the databus. Having a microcontroller in each node enables a fast "reflex" for high speed elements like slingshots and pop bumpers.
We have not yet decided on which microcontroller we want to use. We will probably end up using some different microcontrollers, depending on the requirements for each of the different node boards. What we do know is that we will used micronctrollers from the STM32 family. These are ARM Cortex-M based microcontrollers, ranging from very small 20-pin devices to devices featuring loads of peripherals.
We are currently working on a simplified version of this system. We will base this first prototype PinBus on Arduinos and separate high-voltage and LED drivers. We will later integrate all these things into one board. More information on this prototype system in the next post!