PPUC / ZeDMD

A real DMD for virtual pinball machines and PPUC driven real pinball machines
GNU General Public License v2.0
23 stars 3 forks source link
dmd pinball

ZeDMD

About

ZeDMD is a "real" DMD for pinball emulations and other use cases.

It is or will be supported by:

A full tutorial of its installation is available in English and in French

There're four different "flavours" of the ZeDMD firmware. Because it pushes the cheap ESP32 to its limits, we can't provide a unified firmware, so you have to pick the appropriate one:

We also offer experimental builds for the newer ESP32 S3 boards. We advise to use the WiFi versions of these builds for now as the serial support of the S3 is not functional at the moment.

There is also a version specific for the Lilygo S3 Amoled development board. The build has been tested on the V2.0 non touch without pins. There is no specific pinout, flash the WiFi version and connect.

Here's a short demo of ZeDMD and ZeDMD HD in parallel:

Watch the video

Flashing the firmware

There're different ways to flash the firmware on the ESP32.

esptool

Download the appropriate zip file from the latest release's assets section and extract it.

Install esptool and run

esptool --chip esp32 write_flash 0x0 ZeDMD.bin

On Windows you should use esptool.exe instead of esptool. If you have different devices attached via USB or if the ESP32 is not detected you could specifiy the concrete port. On unix-like systems it might be something like --port /dev/ttyUSB0, for Windows something like --port COM3:

esptool --chip esp32 --port /dev/ttyUSB0 write_flash 0x0 ZeDMD.bin

There're experimental builds for the ESP32-S3 N16R8. To flash such a device, you need to set a different chip:

esptool --chip esp32s3 write_flash 0x0 ZeDMD.bin

platformio ("from source")

pio run -t uploadfs -e 128x32
pio run -t upload -e 128x32

ZeDMD Updater (Windows only)

Download and install the ZeDMD_Updater and follow its instructions.

First start

After flashing the firmware you'll see the ZeDMD logo. But due to the different panels available on the market, you need to adjust the colors. While the logo is visible you can press the RGB button to rotate the colors until red in the left top corner is red, green is green and blue is shown in blue.

Using the brightness butten you can adjust the brightness.

ZeDMD-WiFi

After flashing the ZeDMD-WiFi firmware, connect your mobile device or laptop to the "ZeDMD-WiFi" network using the password zedmd1234.

After connecting to the ZeDMD-WiFI network, open your web browser and navigate to http://ZeDMD-WiFi.local (IP: 192.168.4.1) to access the configuration settings.

IMPORTANT LEGAL NOTICES:

ZeDMD's firmware is open source and licensed as GPLv2 or later and can be ditributed under these terms.

For manufacturers or resellers of any shield, frame, ready-to-use devices or whatever linked to the ZeDMD, our only request is that the device is called as "ZeDMD something" or powered by ZeDMD. "ZeDMD" should be what you see first when you look at the device. Also, a link to this project must be provided with the device.

ZeDMD uses

FAQ

"Where can I buy a ZeDMD?"

The intention of ZeDMD is to provide a cheap DIY DMD solution. The maintainers of this project don't run any shop to sell ready-to-use hardware!

Nevertheless, there're are some shops we're aware of who designed their own shields to build a ZeDMD. And as this might ease the task to use a ZeDMD for some users, we're fine to add some links here:

There're also ready-to-use devices:

"The LED pannels aren't working", ghosting, wrong pixels, missing lines

The ZeDMD firmware supports a wide range of LED panels with different driver chips ... in theory. In general, some driver chips require adjustments in the configuration, timings and the clock phase. That can't be done with ZeDMD updater, but within the source code of the firmware. Here os some background information:

These are the available config options: https://github.com/mrcodetastic/ESP32-HUB75-MatrixPanel-DMA/blob/54ef6071663325e7b8f3a9e1e0db89b0b0b7398d/src/ESP32-HUB75-MatrixPanel-I2S-DMA.h#L235-L309

The pre-built firmware uses the default config which is suitable for the most common LED panels. Obviously we can't provide a menu on the device to adjust these settings as you won't see them ;-)

But we consider to add support for these driver settings to libzedmd and the ini file of dmdserver so that these values could be adjusted and sent to ZeDMD before the panels get initialized.

We could also offer firmeware builds for specific panels. But that would require that somone sends such panels to us to find out the correct config.

If you find out what config adjustment gets a specific panel to work, you should open an issue here and provide that information so that we could include it in the README and probably add a specific automated build for the bext releases.

"I'm running a shop, can I assemble and sell ZeDMDs?"

Yes, you can, as long as you respect the legal notices above. You could also do your own hardware design. But it would be nice if you sent us a ready to-use device for testing because people might ask here or on discord about problems with a specific variation of ZeDMD.