Skip to content

OPP EM Combo boards

This section is maintained by the hardware maker

This section of the MPF website is about a specific company's pinball controller hardware, and they are responsible for maintaining the content here.

Of course feel free to edit, add, and/or correct things if you want, but if something seems weird, reach out to the hardware maker, not the MPF maintainers. ;)

image

image

The aim of this project is to provide cheap hardware to control EM pinball machines:

  • O16I16: 16 soldenoid / incandescent outputs and 16 inputs combo card
  • O32: 32 outputs soldenoid / incandescent combo card

Firmware is currently a fork of open-pinball-project at version 2.4.0.0, hosted at gitlab.

A single BluePill MCU may control up to 32 GPIO lines, logically divided in 4 wings of 8 lines each.

A wing is usually specialized (switch inputs, solenoids, lamps, ...) according to the hardware attached.

This version focuses on the blue pill plus which has the advantage of having a blue LED on PB2 which is not used by card headers. It also features an USBC-C connector.

The size of the board is about 150 x 125 mm.

Several boards are required to drive an EM machine. According to the complexity and your personal taste, 3-4 to drive the play field, 2-3 to drive the light box.

image

image

Configuration

A typical configuration will use the card serial number to identify the boeard, not the port name which may change after host reboot. In this example, coil c_player1_reel10 has number 0-0-0 meaning:

0-?-?: driven by card id #0

?-0-?: always 0 (1 usb port only drives one MCU)

?-?-0: first output (that is wing 0, pin 0)

Coil c_player1_reel100 is driven by the same card, second output (that is wing 0, pin 1)

#config_version=6

hardware:
  platform: opp
  driverboards: gen2

opp:
    ports: /dev/ttyACM0, /dev/ttyACM1,/dev/ttyACM2, /dev/ttyACM3, /dev/ttyACM4, /dev/ttyACM5, /dev/ttyACM6

coils:
  # Board LB_1_16O16, id #0
  c_player1_reel10:
    number: 0-0-0
    default_pulse_ms: 7
  c_player1_reel100:
    number: 0-0-1
    default_pulse_ms: 7

To set the card serial number and configure the wings, one will have to read the interface manual and use a PC with gen2test.py utility.

In the above example one would do:

./gen2test.py --serial 0
./gen2test.py --config opp16o16icfg.py
./gen2test.py --save

My project

With those boards, I digitized a 1975 Gottlieb Fast Draw, which was presented to the Pontacq Pinball Show on June 1rst-2nd, 2024, South of France, where it ran 375 plays without any software problem.

image


Something missing or wrong? You can fix it!

This website is edited by people like you! Is something wrong or missing? Is something out of date, or can you explain it better?

Please help us! You can fix it yourself and be an official "open source" contributor!

It's easy! See our Beginner's guide to editing the docs.

Page navigation via the keyboard: < >

You can navigate this site via the keyboard. There are two modes:

General navigation, when search is not focused:

  • F , S , / : open search dialog
  • P , , : go to previous page
  • N , . : go to next page

While using the search function:

  • Down , Up : select next / previous result
  • Esc , Tab : close search
  • Enter : go to highlighted page in the results