Introduction
My previous project during the Corona pandemic, the Winddisplay with a Nextion 7" inch display, lasted precisely one season. It did not survive winter storage. At the beginning of the new sailing season the display was death as death can be. I had to fall back to the original on board network and had to replace som costly components. These did not last for more then 2 years.
Since the winter overhere seems to last and technology made a leap forward when it comes to cheap display and integrated ESP processors and also when it comes to frameworks for graphics on these integrated board, like LVG.
Today they come fully integrated and in a housing as one. Making it an interesting device for replacement of old displays and whatsoever. The even have a name; cheap yellow displays (CYD)
So I bought a 7" display for about € 37. Nextion displays are extremely expensive these days and do not have much benefits above these CYD displays.
Although I had a kind of similar display on my desk for about 2 years I hopefully ordered this bigger version.
The previous one, also from Guition, was a 480x480 display that I was not able to get it working. The included examples I could not get to work, due to a long list of compiler errors. And I had no motivation to go debugging some one else's code.
I was hopeful, but naive. The new display did not do better. The included examples, pre-installed on the display makes a great demo. Trying to get the examples working on this kit was a disappointment again.
But this time I was determined. More then 40 years of software development experience should be enough to get this thing working.
This is the story of my trip to developers hell and back.
The project
So this board is based on the latest ESP32-P4 and C6 chipsets and at the time I started this project late january 2026 there was no official support for in on the Platform.io framework. You had to reference to a distribution via an URL in your platformio.ini file. And the again the default support was for the development board with 1 MB flash storage and 380K ROM, while the chipset comes with 16MB flash and 500K of ROM. So here was the 1st challenge for me; how to overcome this limitation since, and I will get back to it later, my compiled file size was bigger than the 1MB so I culd not flash it to the ESP32.
I started with drawing some scenario's and UML diagrams for the working of this application:
Next LVGL was used in the examples and the framework was promising (again to me). But all the examples you have to download from a Chinese website ( what?) didn't work (examples are in English though). But this is a horror scenario from a cyber security perspective. I had expected that the examples where ready to run and learning how LVGL and this this works was easy piecy. Wrong, again!
Next I appeared that this chipset was so new that there was no support for in in the ArduiniGFX library. So even if the examples would have the right quality they would not have resulted in runnable code.
Last but not least I had over estimated my skills (or underestimated the complexity of the composite whole). My guess here is that this is true for a lot of (software) development teams traveling the same route.
So this is what I had to do to make a chance to get it to work:
- Find a working setup for this board, so I could see some graphics actually work. I found the works of Adruid59 who tested a similar board (among others for his hobby) He showed me how to setup the graphics and pointed me to a working library for the touchscreen from Bitbank (Larry Bank)
- Start reading the LVGL manuals and study the examples, see here. I understand that from the developers point of view they have done a great job. However it's usability for noobs on this matter is limited. You have to dig through lots of code examples without decent explanation for the basics. When you dive deeper documentation lacks clarity since it only references to the interfaces without explanation. So it means trail and error.
- pixelEDI who showed me how EEZ works for LVGL. It helped me to better understand the LVGL framework. In the end I don't use that framework, but it helped me forward.
- A deep dive into how to configure the the flash bank on the ESP32. I found it here and the actual setting here, from Espressif itself.
- Familiarize myself better with Git (if I had not made a hard copy of my code, Git would have destroyed all my painfully staking hard work with the blink of an eye (I know it is my ignorance; Git has become more then just pull, push and commits...)
And now I'm here writing about my experience during this project, 4 weeks later starting from scratch on this one.
What have I achieved so far?
Starting at the "get it working phase" I have:
- a compilable and running application with all the panels showing real-time data. Data is coming from a virtualised NMEA0183 generator from within the application demostrating that the calculation module is working
- persistent storage to save the overall mileage(log) and settings for the application. The log is saved every 10 minutes to NVR. With speed around 7 knots you might loose 1 nautical mile max if you shut off to early. I.m.o. that is acceptable
- brightness of the display can be controlled via a slider between 5% and 100%
Things to be done:
- implementation of the daylight, sunlight, dawn and night setting for optimal readability during these periods of time.
- processing life NME0183 data coming from a wired RS-485 connection
For the "getting it right" phase I have to:
- get my head around the fact that static(global) declared variables seem to loose there data when addressed from different panels or tiles. This has been fixed with a workaround, but could be better.
- improve the switching between panels. For now they are toggled on top of each other. Before you can see a panel(again) you have to hide the panel on top of it. While they should just toggle on or off.
- get the theme switching for day-, sunlight, dawn and night vision working
- comment the code where necessary for better understanding of the working, in stead of studying the code (see my criticism on LVGL)
Where did AI come in?
To be honest; not really. I let Claude do some code generation for a function to calculate the distance between 2 NMEA0183 strings with latitude and longitude information. And I asked the in-line chat a couple of times to help fix compiler errors. So that's it and it was a lot of trial and error.
To save you the same pitfalls, read the read.me from my Git repository. It will save you a lot of time, time you can spend on coding.













Comments