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
Meanwhile, there're 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:
- ZeDMD: using two 64x32 panels driven by an ESP32 connected over USB
- ZeDMD HD: using four 64x64 or two 128x64 panels driven by an ESP32 connected over USB
- ZeDMD HALF: using one 128x64 panel driven by an ESP32 connected over USB
- ZeDMD WiFi: using two 64x32 panels driven by an ESP32 connected over WiFi
- ZeDMD HALF WiFi: using one 128x64 panel driven by an ESP32 connected over WiFi
- ZeDMD S3: using two 64x32 panels driven by an ESP32 S3 N16R8 connected over USB
- ZeDMD S3 HD: using four 64x64 or two 128x64 panels driven by an ESP32 S3 N16R8 connected over USB
- ZeDMD S3 HALF: using one 128x64 panel driven by an ESP32 S3 N16R8 connected over USB
- ZeDMD S3 WiFi: using two 64x32 panels driven by an ESP32 S3 N16R8 connected over WiFi
- ZeDMD S3 HD WiFi: using four 64x64 or two 128x64 panels driven by an ESP32 S3 N16R8 connected over WiFi
- ZeDMD S3 HALF WiFi: using one 128x64 panel driven by an ESP32 S3 N16R8 connected over WiFi
- ZeDMD S3 AMOLED: using a small OLED driven by a LilyGo AMOLED T-Display-S3 V2 connected via USB
- ZeDMD S3 AMOLED WiFi: using a small OLED driven by a LilyGo AMOLED T-Display-S3 V2 connected via WiFi
Here's are short demo of ZeDMD and ZeDMD HD in parallel:
There're different ways to flash the firmware on the ESP32.
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
pio run -t uploadfs -e 128x32
pio run -t upload -e 128x32
Download and install the ZeDMD_Updater and follow its instructions.
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.
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.
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
- ESP32-HUB75-MatrixPanel-DMA
- Bounce2
- miniz
- Tiny 4x6 Pixel Font
- ESPAsyncWebServer
- JPEGDEC
- TFT_eSPI
- RM67162 with fixes from Nikthefix
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:
- https://shop.arnoz.com/en/dmd/87-esp-dmd-shield.html
- https://benfactory.fr/produit/zedmd-shield/
- https://www.smallcab.net/shield-zedmd-p-2697.html
There're also ready-to-use devices:
- https://benfactory.fr/produit/zedmd/
- https://www.smallcab.net/pack-zedmd-p-2698.html
- https://virtuapin.net/index.php?main_page=product_info&cPath=6&products_id=283
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:
- https://github.com/mrcodetastic/ESP32-HUB75-MatrixPanel-DMA?tab=readme-ov-file#supported-panel-can-types
- https://github.com/mrcodetastic/ESP32-HUB75-MatrixPanel-DMA?tab=readme-ov-file#latch-blanking
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.
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.