ESP-HMI Editor – Nextion-style visual HMI editor for ESP32 LCDs | Looking for testers & feedback

Hello everyone,
I have been working on a web-based HMI editor for ESP32 LCDs and would like feedback from people who already use LVGL on ESP32 displays.
Try it here:

The project is still under construction. I am looking for testers who can try it on real hardware, report what breaks, and suggest what would make it useful next to LVGL / SquareLine-style workflows.
What is ESP-HMI Editor?
The idea is a Nextion-style visual HMI environment, but the UI runs on an ESP32 + LCD instead of a separate Nextion controller.
The editor currently provides:
Visual page designer
Nextion-style widgets and attributes
Multiple pages
Buttons, text, numbers, gauges and other UI elements
GPIO / sensor binding
Arduino setup() / loop() integration
Arduino sketch export
Font generator from TTF/OTF
Image resizing tools
GMOV / animation generator
LCD simulator / instruction terminal
ESP32 device configuration
Custom LCD resolution and driver configuration
Touch configuration
Host MCU UART support
ESP32-CAM snapshot support
GitHub project storage
Example of the generated Arduino API:
hmiSetInt(“nTemp.val”, temperature);
hmiSetInt(“vaRun.val”, 1);
hmiSetInt(“tmPoll.en”, 1);
Goal: Design → Configure → Compile → Export → Upload without writing every screen by hand.
This is not an LVGL editor yet. Many of you already use LVGL + SquareLine / EEZ Studio on the same ESP32 panels. I am posting here because you have the hardware I cannot buy myself, and because I want honest input on whether an LVGL export / LVGL widget mapping would be worth adding.
Hardware tested so far
I do not own every ESP32 LCD / HMI board.
So far I have mainly tested:
SPI-based LCDs
Elecrow CrowPanel 7-inch
The editor has options for different resolutions, LCD drivers, touch drivers and GPIOs, but I cannot guarantee every combination works.
Please try it if you have:
ILI9341 / ILI9488 / ST7789 / ST7796 / GC9A01 / other SPI TFTs
RGB / 8080 / MIPI ESP32-S3 panels
Different touch controllers (XPT2046, GT911, FT5x06, CST816, etc.)
Elecrow CrowPanel variants
Waveshare / Guition / Sunton / Makerfabs / M5Stack displays
Custom ESP32 + LCD boards you already run LVGL on
A simple test is enough:
Create a page
Add a few widgets
Export the Arduino project
Upload to the ESP32
Test LCD + touch
Report what works and what does not
What I need from testers
Please post:
ESP32 board:
Example: ESP32-S3-N16R8
LCD:
Example: 3.5" ILI9488 SPI / CrowPanel 7"
Resolution:
Example: 480 × 320
Touch controller:
Example: XPT2046 / GT911
LVGL version / driver you normally use (optional):
Example: LVGL 8.3 + TFT_eSPI, or LVGL 9 + esp_lcd
Problem:
What happened.
Error / serial output:
If available.
Screenshots or photos are welcome.
Known status
This is not finished.
Expect bugs: unsupported drivers, wrong pins, bad rotation, touch inversion, RAM issues on ESP32 without PSRAM, incomplete widgets, simulator vs hardware differences.
A useful report looks like:
ILI9488 + ESP32-S3 works, but touch coordinates are rotated
ST7789: generated sketch uploads, screen stays black
CrowPanel 7" works in simulator, upload fails
Failed tests are as useful as successful ones.
Feedback I want from the LVGL community
Is a Nextion-style editor useful if you already use LVGL?
Would LVGL C export (v8 and/or v9) be valuable?
Widget mapping: which Nextion-style objects should map to which lv_* widgets?
Preferred output: raw LVGL C, SquareLine-compatible project, or ESP-IDF component?
Display drivers you need first
Touch calibration / rotation issues on your boards
Font / image pipeline that would match how you already work with LVGL
Anything that would make this a complement to LVGL instead of a competing workflow
Feature ideas I am already collecting: new widgets, more LCD/touch drivers, more ESP32 boards, animation, HMI scripting, sensor bindings, better Arduino/ESP-IDF integration.
Current goal
Make ESP32 HMI work feel closer to a dedicated editor:
Design → Configure → Compile → Export → Upload
It is still early. I would rather test with many LVGL users’ panels now than wait until I own every board.
Editor: ESP-HMI Editor
Please reply with:
What LCD / ESP32 combination you tested
Whether it worked
What broke
Whether LVGL export is something you would actually use
Bug reports and criticism are welcome.
Thanks.

Hi @Soutak1984 ,

I really like this editor for ESP32 devices.

I suggest exporting the C code for LVGL v9.4, v9.5, or v9.6, as the API can be used for LVGL Editor projects.

Regarding the preferred output format, I recommend using LVGL C code; this allows you to use it across different platforms (Arduino, ESP-IDF, Zephyr, NuttX, etc.). However, if you aim to create a “plug-and-play” ecosystem, an ESP-IDF component would be a great alternative.

Hi @halyssonJr,
Thanks — this is useful feedback.
Yes, LVGL C export is something I want to add. The current editor already has the visual UI model (pages, widgets, colors, text, values). The existing export path is a CrowPanel / LovyanGFX firmware pack with HMI runtime. That will stay as it is.
The new option will be a separate function: Export LVGL UI C only. It will generate portable LVGL v9 C for the screens and widgets, not the HMI protocol, sensors, or board HAL. You should be able to drop the files into an existing LVGL project on Arduino, ESP-IDF, Zephyr, or NuttX and call ui_init() after your display is already set up.
First target: LVGL v9.5, with v9.4 / v9.6 as soon as the generator is stable. An ESP-IDF component can come after the C export works.
I expect to have a first version of this within the next week. I’ll post an update here when there is something to test.
Thanks again.

Hi @halyssonJr ( Profile - halyssonJr - LVGL Forum ),

The LVGL C export you asked for is now in the editor.

File → Export LVGL UI C downloads a ZIP of portable UI sources (ui.h, screens, event stubs). It does not replace the existing HMI / Arduino firmware ZIP (Nextion protocol, sensors, GPIO stay as they are).

What you get:
• Screens and widgets as LVGL objects, for 9.4 / 9.5 / 9.6 (dropdown in the editor; default 9.5)
• ui_init() after you already call lv_init() and create a display
• ui_load_() to change screens
• Event stubs in ui_events so you can add your own logic
• Same ZIP also includes an Arduino test sketch for the LCD selected in the editor (LovyanGFX + the exported UI) so you can upload and check the layout on the panel

On Arduino ESP32, Library Manager lvgl 8.3.11 is the reliable choice. LVGL 9.x Arduino packages often fail with assembler unknown opcode typedef (ARM .S blend files). ESP-IDF is fine with LVGL 9.5.

If you use Arduino, copy the sketch lv_conf.h to Arduino/libraries/lv_conf.h (next to the lvgl folder) so the extra Montserrat sizes and meter widget are built.

Please try a real export + upload and tell me what still looks wrong vs the designer (fonts, gauges, scroll text, colours, etc.). Bug reports with board + LVGL version help a lot.

Editor: ESP-HMI Editor ( ESP-HMI Editor 2.06 )

Thanks.