From Microcontroller to Mini TV: Greening’s ESP32 Breakthrough

From Microcontroller to Mini TV: Greening’s ESP32 Breakthrough

In an attempt to unleash the potential of the ESP32 microcontroller developer and tinkerer, Chris Greening has built an ESP32 Mini TV and explained how he did it in a detailed video.

In recent years, ESP32 has become very popular among the maker community simply due to its superior performance, low price, and not to mention its innate ability to support wifi and Bluetooth. So Youtuber Taylor Galbraith AKA atomic14 used that power to build this ESP32 Mini TV and explained how he did it.

In his video, he explains before even building the server, he needs to figure out how fast an ESP32 can display an image onto the display. To do so, he hard-coded an uncompressed image so he could verify the frame rate; in his test, the ESP was able to update the screen every 17ms which translates to 59FPS.

Now all that the ESP needs to do is download the images over Wi-Fi and display them. However, there is an issue with this method an uncompressed image size is 132KB, and if we add in the download time with the display time the frame rate drops to 15FPS. So, to fix this issue he he used the JPEGDEC library to compress the image. Next, he used the DMA to display the image, giving him a decent refresh time of 36ms which translates to around 30FPS.

For sound, he pulled the audio data from the server and used the 8–bit PCM over the I2S bus to get the sound out from the ESP32. The problem with this approach was that the audio could get out of the sink if there was a delay in streaming the audio or the compressed images from the server.


According to Galbraith, the solution to this problem was pretty obvious – he could use the output audio stream to calculate elapsed time. “Every time the I2S peripheral pushes data out we know how much time has passed so we can use this to keep the images in sync”. With this, he developed himself a fully function video streaming system.

Now, one thing every TV should have is a Remote Controller; Greening solves this issue by adding an IR Receiver to the ESP32 with the help of the Arduino-IRremote library.

At the end of the project, everything worked as expected; now you can turn on/off the TV with the remote you can also change the volume, and as a finishing touch, he also added a channel change animation. Overall, it was a great project, and if you want to try out the i project yourself, everything is freely available in his GitHub repo.

Please follow and like us:
Pin Share
About Debashis Das

Tech Content Creator | Hardware Design Engineer | IoT Enthusiast | Digital Storyteller | Video Creator | From crafting digital dialogues at Semicon Media to orchestrating online engagement at, my journey is about making tech talk interesting and accessible. In the quiet corners of the day, I advocate for easier tech education, one tutorial at a time. Let's connect and keep the digital dialogue going!

view all posts by das
Notify of

Inline Feedbacks
View all comments
Get new posts by email:
Get new posts by email:

Join 97,426 other subscribers