ESP32 Meets TFT – A Classic WinXP Recreation

I have been relatively casual in writing articles for my public account and video channel, merely to document the innovative moments during parent-child interactions. Unexpectedly, a small gadget from last Saturday became a hit on the video channel.Since everyone is quite interested in this, I would like to give back to the community by open-sourcing the code:

https://github.com/cursorlab/fakewinxp

The README contains detailed documentation, and theoretically, everyone can follow along and play with it themselves.

====== 🤔 Thought 🤔 Divider ======

Here are some interesting comments and my own thoughts:

[It’s just an image/It’s just a video script/It’s just playing a video]

ESP32 Meets TFT - A Classic WinXP RecreationThe ESP32 TFT_eSPI only supports RGB565 format images and does not directly support video playback; each frame must be converted to RGB565 for playback.

ESP32 Meets TFT - A Classic WinXP RecreationThe sound in the video was added later, but it can be played using the MAX98357A (I2S) module. Interested individuals can expand on this.

[ESP32 cannot run WinXP, but it can be used as a display]

ESP32 Meets TFT - A Classic WinXP RecreationUpon seeing this comment, an innovative idea popped into my mind: could we use the ESP32 + TFT to create an extended screen for a WinXP computer via standard VGA?

However, upon further reflection, there are several challenges:

ESP32 Meets TFT - A Classic WinXP RecreationAs I recall, the minimum resolution supported by the WinXP official website is 640×480. To support a 240×240 screen, a custom driver may be required.

ESP32 Meets TFT - A Classic WinXP RecreationVGA is a pure analog signal, and the pixel clock for standard VGA 640×480@60Hz is approximately 25.175 MHz, while the maximum sampling rate of the ESP32 ADC is only a few MSPS (million samples per second), which is completely insufficient.

ESP32 Meets TFT - A Classic WinXP RecreationIf we do not use VGA but instead a custom protocol (digital signal) + network transmission, the ESP32 Wi-Fi module does not support uncompressed pixel bandwidth. Once compression is used, even at 240×240, the ESP32 CPU is insufficient to support decoding. We can only reduce color depth and refresh rate, which might be worth a try.

This idea, if I have time later, I plan to attempt.

Alright, although there are other interesting ideas, this article is for those who understand; those who do not should not read it. Let’s wrap it up early.~(Interested friends can leave comments for discussion)

Leave a Comment