Maker.io main logo

Retro Analog VU Meter on Round displays (ESP32 and GC9A01)

32

2026-03-23 | By Mirko Pavleski

License: General Public License Audio ESP32

Recently, in one of my previous videos, I presented you with a Retro VU Meter project on round displays with ESP32 microcontrollers and the Adafruit GFX library. In that case, the VU meters are drawn using the library functions, but the code is still relatively complex, and you can see the result in that video.

vnbv

In this project, I will also show you a way to make a retro VU meter, but now using LVGL, which is a free and open-source library that enables you to create graphical user interfaces for any MCUs from any vendor on any platform, and also Squarelinestudio UI Editor to design and develop beautiful UIs for your embedded devices quickly and easily. The result of using these two tools is immediately visible; the VU meters are extremely realistic, and at the same time, the code is much simpler and more flexible.

The hardware part is identical to that of the previously mentioned project and consists of only a few cheap components:

- Two ESP32 microcontroller boards, one for each channel separately. Here I should mention that I could have made the project with one MCU, but considering the price, I decided to use two, which makes the production simpler and has more advantages.

- then two round displays, 1.28 inches, 240x240, with GC9A01 driver chip

- several resistors

- two diodes and capacitors for processing the input signal

- And two LEDs for the Peak Meter function

jk

The diodes, together with the capacitors at the input, make up a so-called envelope follower circuit that brings a signal suitable for further processing to the input of the MCU. The peak meter LEDs are connected via appropriate current-limiting resistors, and the displays are connected via the SPI interface.

As for the code, it generally consists of two parts: UI files generated with SquareLine Studio and the basic .ino code that uses the LVGL library to "manage" these files.

789

To briefly mention it, I am using Arduino IDE version 1.8.16, ESP32 Core ver. 2.0.14, and LVGL library ver. 8.3.11. The name of the folder containing the code files should be the same as the name of the .ino file inside the code. Now we simply run the .ino file, compile, and upload the code. We make the basic settings directly in this file.

mn

Code has the part where you can change the value at which the peak LEDs are turned on, then the duration of the activated LED, the way the arrow reacts, and finally the sensitivity of the inputs. The code is identical for both channels. By the way, I should mention that we can also adjust the input sensitivity in a simple way with a stereo potentiometer.

Now let's see how the device reacts in real conditions. Immediately after switching it on, the VU meter is active, and the arrows move, following the intensity of the incoming audio signal. If this signal crosses the previously defined limit, the peak LEDs light up. As I mentioned earlier, the speed and the way the arrows move can be changed in the code.

 bvhg

And finally, a short conclusion. This project is a modern twist on the classic analog VU meter, using a powerful ESP32 microcontroller and a circular TFT display to achieve an authentic retro look with modern precision. Using the LVGL library and SquareLine Studio, I created a visualization that is not only functional but also aesthetically enriches any audio system.

 nm

Mfr Part # ESP32-DEVKITC-32E
ESP32-WROOM-32E 4MB FLASH
Espressif Systems
¥1,637
View More Details
Add all DigiKey Parts to Cart
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.