October 4th, 2024

Guy does demoscene tricks to ESP32 powered display (2022)

The project evolved from a simple ESP32 message board to a complex system with animations and sound, utilizing coding techniques for optimization and highlighting scope creep in the learning process.

Read original articleLink Icon
Guy does demoscene tricks to ESP32 powered display (2022)

The article discusses a personal project involving the ESP32 microcontroller, which started as a simple message board for leaving notes. The author initially aimed to use an SSD1306 display and WiFi for remote message updates but later optimized the system by storing messages in EEPROM and implementing a web server for easier updates. As the project evolved, the author explored more complex features, including animations and sound, leading to the integration of a demoscene tracker and a desktop simulator for faster iteration. The project also involved upgrading to a color display and utilizing various coding techniques, such as RLE compression and delta encoding, to optimize memory usage. The author reflects on the challenges faced, including the learning curve associated with CAD for creating a laser-cut front panel. Ultimately, the project exemplifies the concept of scope creep, where the initial goal expanded into a multifaceted learning experience, resulting in a functional and aesthetically pleasing product.

- The project began as a simple message board using an ESP32 and evolved into a complex system with animations and sound.

- The author utilized various coding techniques, including RLE compression and delta encoding, to optimize memory usage.

- A desktop simulator was created to facilitate faster iteration and debugging during development.

- The project highlights the concept of scope creep, leading to a broader learning experience and a successful final product.

- The author learned valuable skills in areas such as I2C vs SPI communication, capacitive button debouncing, and palette cycling.

Link Icon 7 comments
By @majke - 6 months
ESP32 uses the Xtensa instruction set. As far as I understand this is a custom instruction set, which is surprisingly popular in low power applications.

Investigating this lead me to an interesting polish company called semihalf who were recently acquired by google.

https://www.youtube.com/watch?v=qLh1FOcGysY

Apparently they added some Xtensa support to clang. I guess that means xtensa is very important in the android context.

By @larodi - 6 months
This was already posted back in the day, but gained zero points, which seems unfair, given the tooling applied here. Playing with one TTGO with small display, this all in the article makes lotta sense, and perahsp to others too.
By @camtarn - 6 months
The demoscene trickery is not very significant and is only a tiny part of the article. Great project though, so still worth reading.
By @pengaru - 6 months
For those on *nux wishing to play with Rocket, I've found emoon's GL editor preferable over the Qt one bundled with the library.

https://github.com/emoon/rocket

By @dlevine - 6 months
I have been screwing around with ESP01s lately (based on the ESP8266, which is the predecessor to the ESP32). It’s amazing how much power you get in a <$5 microcontroller, plus WiFi.
By @anyfoo - 6 months
This is great. I shudder a bit over doing all that dev work from Windows, but they made it work very nicely.