Alternative to PanelDue. Embedded UI for Duet & RepRap based 3D printers. Running on the ESP32. Optimized for 3.5" displays. WiFi or UART connectivity.
Loading README and project media…
A simple user interface for Duet/RepRap based 3D printers. Optimized for 3.5" touch panels controlled via SPI & I²C using an ESP32.
Supports wireless connection or wired via UART/PanelDue port.
An open source alternative to the PanelDue.

Since RepPanel boots in ~1 second you can start setting up your printer in no time and with no additional hardware. No need to get the laptop and log in to DuetWebControl. No need to get mad over using WebControl in your smartphones browser.
A full replacement for the DuetWebControl interface.
The RepPanel project is based on the LVGL port for the ESP32. In theory this means all displays and touch controllers supported by the lv_port_esp32 project are also supported by RepPanel.
Tested Hardware
Beware: There are numerous version of the ER-TFT035-6. You must choose the one with the SPI interface. Do not get the arduino shield version (no SPI config). The version with the screen breakout board is sufficient.
Other display modules with a resolution of 480x320 should also work as long as they are supported by lv_port_esp32
As of now RepPanel is optimized for 3.5" displays with a resolution of 480x320 pixels. The display is connected via SPI.
Tested Firmware
Use ready made images or compile yourself.
Follow instructions on offical Espressif site.
ESP-IDF v4.0 is officially supported.
git clone --recurse-submodules https://github.com/seeul8er/RepPanel_ESP32
LVGL v7 is not supported. Last tested release of lv_port_esp32 is commit c1f43bfb090df293059ab52baabbdbdd8df00712
Update lv_conf.h
Copy file content of main/lv_conf_back.h over to externals/lv_port_esp32/components/lvgl/lv_conf.h.
Or simply add:
LV_USE_USER_DATA 1#define LV_USE_THEME_REP_PANEL_DARK 1LV_INDEV_DEF_DRAG_THROW 85 to decrease DMA usage and increase stabilityCONFIG_LVGL_FONT_ROBOTO16 & CONFIG_LVGL_FONT_ROBOTO22 must be activated#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(reppanel_font_roboto_bold_16) \
LV_FONT_DECLARE(reppanel_font_roboto_bold_18) \
LV_FONT_DECLARE(reppanel_font_roboto_bold_24) \
LV_FONT_DECLARE(reppanel_font_roboto_regular_26) \
LV_FONT_DECLARE(reppanel_font_roboto_light_26) \
LV_FONT_DECLARE(reppanel_font_roboto_thin_numeric_160) \
LV_FONT_DECLARE(reppanel_font_roboto_regular_percent_40)
From its root run:
idf.py menuconfig
See LVGL port for the ESP32 for further and more detailed instructions.
idf.py build
idf.py -p (YOUR PORT) flash
See LVGL port for the ESP32 for further and more detailed instructions.
Ready made images are only available for selected hardware combinations! Please compile the project by yourself in case you use different hardware or want a different pin connection layout
Check out releases for compiled binaries.
Beware: The available development boards have different pin configurations. Some have GND & 3.3V at the bottom. Others at the top.
Pin configuration of ready made images:
| **Pin Number ESP32 ** | Pin Number ER-TFTM035-6 | Function | Description |
|---|---|---|---|
| VCC 3.3V | 2 | Power supply | Match TFT voltage with ESP32 pin |
| GND | 1 | GND | Ground |
| GPIO 13 | 27 | MOSI | Data line to TFT |
| GPIO 14 | 24 | SCL | SPI CLK for TFT |
| GPIO 15 | 23 | Slave Select | SPI |
| GPIO 22 | 30 | SCL | I²C - touch |
| GPIO 21 | 31 | SDA | I²C - touch |
| GPIO 4 | 21 | Reset | TFT related |
| GPIO 2 | 25 | Data | TFT related |
| GPIO 27 | 29 | Backlight | Turn on/off TFT backlight |
| GPIO 17 | - | UART TX | Connect to RX PanelDue port |
| GPIO 16 | - | UART RX | Connect to TX PanelDue port |

Check out the simulator project. Simulates the RepPanel GUI on Desktop computers for more efficient testing and implementation.