Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update README.md #78

Merged
merged 17 commits into from
Jan 27, 2025
74 changes: 53 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# ZeDMD

![logo](https://github.com/user-attachments/assets/8d735f40-168b-419d-9521-418919c19aeb)
## About
PastorL69 marked this conversation as resolved.
Show resolved Hide resolved
PastorL69 marked this conversation as resolved.
Show resolved Hide resolved

ZeDMD is a "real" DMD for pinball emulations and other use cases.
ZeDMD is a "real" DMD designed for pinball emulations and other use cases. Originally developed by David "Zedrummer" Lafarge, the concept laid the foundation for what ZeDMD has become today. Markus Kalkbrenner, the current maintainer of ZeDMD, was inspired by the original idea and took the initiative to further develop and enhance it into the robust and versatile solution it is now.

It is or will be supported by:
ZeDMD is or will be supported by:
* [DMDExtensions](https://github.com/freezy/dmd-extensions)
* [VPX Standalone](https://github.com/vpinball/vpinball/tree/standalone)
* [PPUC](https://github.com/PPUC/ppuc)
Expand All @@ -13,7 +12,7 @@ It is or will be supported by:

A full tutorial of its installation is available in [English](https://www.pincabpassion.net/t14796-tuto-zedmd-installation-english) and in [French](https://www.pincabpassion.net/t14798-tuto-installation-du-zedmd)

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:
Meanwhile, there are different "flavours" of the ZeDMD firmware. Because it pushes the cheap ESP32 to its limits, we can not provide a unified firmware, so you have to pick the appropriate one:
* ZeDMD 128x32: using two 64x32 panels driven by an ESP32 connected over USB or WiFi
* ZeDMD HD 256x64: using four 64x64 or two 128x64 panels driven by an ESP32 connected over USB or WiFi
* ZeDMD 128x64: using one 128x64 panel driven by an ESP32 connected over USB or WiFi, showing 128x32 content with an offset, suitable for mini cabinets
Expand All @@ -23,35 +22,33 @@ Meanwhile, there're different "flavours" of the ZeDMD firmware. Because it pushe
* ZeDMD S3 AMOLED: using a small OLED driven by a LilyGo AMOLED T-Display-S3 V2 connected via USB CDC
* 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:
Here is a short demo of ZeDMD and ZeDMD HD in parallel:

[![Watch the video](https://img.youtube.com/vi/B6D00oB4Co8/default.jpg)](https://youtu.be/B6D00oB4Co8)

## Flashing the firmware

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

### esptool

Download the appropriate zip file from the [latest release](https://github.com/PPUC/ZeDMD/releases/latest)'s assets section and extract it.

Install [esptool](https://github.com/espressif/esptool) and run
```shell
esptool --chip esp32 write_flash 0x0 ZeDMD.bin
```
Install [esptool](https://github.com/espressif/esptool)

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`:
For a Windows machine this could be:
```shell
esptool --chip esp32 --port /dev/ttyUSB0 write_flash 0x0 ZeDMD.bin
esptool.exe --chip esp32 --port COM3 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`:
On a unix-like system:
```shell
esptool --chip esp32s3 write_flash 0x0 ZeDMD.bin
esptool --chip esp32 --port /dev/ttyUSB0 write_flash 0x0 ZeDMD.bin
```

The ESP32-S3 N16R8 is now fully supported too. To flash this device, simply modify the command seen above by appending `s3` to `esp32`, resulting in `esp32s3`.

### platformio ("from source")

```shell
Expand All @@ -63,13 +60,45 @@ pio run -t upload -e 128x32

Download and install the [ZeDMD_Updater](https://github.com/zesinger/ZeDMD_Updater) and follow its instructions.

## First start
## ZeDMD pinout diagram
ZeDMD utilizes HUB75 to display full-color content on your panels. To achieve this, the panels must be connected to specific GPIOs on your ESP32.
| ESP32 Dev Board | ESP32-S3-N16R8 | HUB75 pins |
| ------------- | ------------- | ---------- |
| GPIO 25 | GPIO 4 | R1 |
| GPIO 27 | GPIO 6 | B1 |
| GPIO 14 | GPIO 7 | R2 |
| GPIO 13 | GPIO 16 | B2 |
| GPIO 23 | GPIO 18 | A |
| GPIO 5 | GPIO 3 | C |
| GPIO 16 | GPIO 41 | CLK |
| GPIO 15 | GPIO 2 | OE |
| GPIO 26 | GPIO 5 | G1 |
| GPIO 12 | GPIO 15 | G2 |
| GPIO 22 | GPIO 1 | E |
| GPIO 19 | GPIO 8 | B |
| GPIO 17 | GPIO 42 | D |
| GPIO 4 | GPIO 40 | LAT |

To navigate the menu and adjust settings, you'll need to configure a few buttons. However, only two buttons are essential to modify values and exit the menu. These two buttons are `Menu Left` and `Value +`.
| ESP32 Dev Board | ESP32-S3-N16R8 | Menu Button |
| ------------- | ------------- | ------------|
| GPIO 0 | GPIO 48 | Menu Left |
| NOT USED | GPIO 47 | Menu Right |
| GPIO 18 | GPIO 0 | Value + |
| NOT USED | GPIO 45 | Value - |

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 brightness button on older ZeDMD or the forward button on newer ZeDMD to enter the settings menu.
To set the correct RGB order, rotate the colors until `red` in the left top corner is red, `green` is green and `blue` is shown in blue.
## First start

Using the brightness butten you can adjust the brightness.
After flashing the firmware the ZeDMD logo will appear. Due to the variety of panels available on the market, you’ll need to adjust the RGB values. On ZeDMD versions prior to v5.0.0, this can be done by pressing the RGB button. From v5.0.0 onwards, you can adjust the RGB values by navigating to the `RGB Order:` option at the top of the settings menu.
Then, adjust the RGB order by rotating the colors until the following alignment is achieved:
PastorL69 marked this conversation as resolved.
Show resolved Hide resolved
* The top-left corner displays `red` as red.
* `Green` appears as green.
* `Blue` is shown as blue.

Versions prior to V5.0.0 let you adjust the brightness using the brightness button.
From v5.0.0 onwards, this is done by navigating to the `Brightness:` option in the settings menu.
> [!IMPORTANT]
> From version 5.0.0 onwards: once you’ve finished changing values, you must navigate to the 'Exit' button. This step is required to enable the ZeDMD to enter handshake mode.

## ZeDMD-WiFi

Expand Down Expand Up @@ -137,6 +166,9 @@ Yes, you can, as long as you respect the legal notices above. You could also do

This is a known issue. ZeDMD S3 works perfectly well with Linux and macOS. But if you're using Windows you should use the WiFi mode.
PastorL69 marked this conversation as resolved.
Show resolved Hide resolved

### I have installed all of the latest files, but I still get crashes on a Windows machine
A few users have reported that VPX and ZeDMD consistently crash if the latest Visual C++ Redistributable Runtime packages are not installed. To resolve this issue, ensure you have the most up-to-date runtime packages installed. If the latest version doesn’t resolve the issue, it may be necessary to install all available versions of the Visual C++ Redistributable Runtime packages.

### ZeDMD S3 crashed, how can I help fixing the issue
PastorL69 marked this conversation as resolved.
Show resolved Hide resolved

If you discover a crash, there's a good chance that a coredump has been written to flash. If you flashed the device using `pio`, you can extract and interpret the coredump:
Expand Down
Binary file added images-docs/ZeDMD logo.jpg
PastorL69 marked this conversation as resolved.
Show resolved Hide resolved
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading