First post and a short question about building a lvgl/micropython/esp32 firmware on linux


my setup is as follows:
GENTOO Linux, no IDE but vim (I am commandline affine)
Micropython cloned from git, ready to be compiled into a working firmware
Lvgl cloned from github, neither changed nor compiled
TTGO T-Energy (no display) (ESP32 WROVER B with 8MB PSIRAM)
Display still to be bought: TFT, touchscreen 480x320

I want to create a firmware, which should represent a lvgl-enable micropython, which is able to
“speak” to the display.

I am (currently :wink: not asking for "how can I acchieve this) - I am only want to know, whether
this is setup sane/valid to prevent to run into a complete wrong direction … ?

Thanks a lot for any help!

Hi @mcc!

You can use whichever IDE/OS you want for development.
I’m using Linux (Mint), but any other would do.

The shortest/simplest way it to clone lv_micropython, and follow the instructions on the README.
lv_micropython is Micropython fork with LVGL. When you build it, LVGL is built with it and exposed as a Micropython module.
LVGL and lv_micropython_bindings are provided as git submodules of lv_micropython, so make sure you update submodules.

I’m using ESP32 WROVER with a custom board.
ESP32 is supported and works very well for small screens with a touch panel.

Which one?
ILI9341 and ILI9488 are supported.
xpt2046 and raw (ADC) touch panels are supported.
You can try some other displays/touch controllers if you want, but take into account that you would need to write your own drivers. If you do, consider contributing them to LVGL.

Also, if you are planning on 480x320 serial (SPI) controller, take into account that even with 40MHz it might be a little bit slow for full screen animations. With 32bit color that’s 600KiB frame data for every frame, less than 10 FPS on 40MHz. if animation with 32bit 480x320 resolution is important, I recommend considering parallel port and possibly something more powerful than the ESP32.

I’m using ILI9341 (240x320 16bit color) and it works well with full screen animation, with decent frame rate.

The basic building blocks you need are:

  • Micropython
  • LVGL
  • lv_micropython_bindings
  • Display driver

For convenience all of these are already provided in lv_micropython (with drivers for selected controllers)

Let us know if you need any help!

Hi Amirgon,

thanks for your reply. Good to know, that a smaller display will work better (refresh rate) - I don’t want
to play animations, I only need a gui. The “most animated thing” will be a scrolling list of text there.
I will keep an eye on the controllers. On YouTube Ralph Bacon has posted a video recently, which
shows a disply which should fit, I think.

As already mentioned in the other thread to which you replied, I want to build my own version of lv_micropython for reasons I mentioned in that thread.