Arduino Nano ESP32 @ 720x720, up to 40 FPS (so far)
Wanna share something I think is pretty cool.
Recently I worked with a Raspberry Pi Zero 2 W and played some AAA games over the internet using my custom encoder/decoder pipeline. There is also some gameplay on YouTube if you are curious, with voiced explanation. The system streams from Windows or Linux with low latency to the device.
I was curious if I could lower the microcontroller requirements even more, slower wifi and less cpu, and do the same with an Arduino Nano ESP32. It works pretty well. This little ESP32 part fits the setup surprisingly nicely. I am basically close to the ceiling, afaik, of what it can do here: receiving the stream over wifi, calculating CRC, handling some control logic, and forwarding the encoded data to my decoder via SPI.
The ESP32 is not doing the heavy video decoding itself. The actual decoder is my small square board in the setup. It is optimized for this use case, decodes the stream, and then drives the parallel RGB display directly.
The codec is custom too. It is not just sending full frames all the time. It uses delta-frame logic, so if only something small changes, like a cursor, only a small part of the frame has to be sent. That is one of the reasons why this can work on such a small part.
The whole thing on the breadboard runs with very low power consumption, below 1.5 W during active streaming and full brightness. In this video I stream over the local network. I am pretty sure I can also get useful results over the internet, like with the Raspberry Pi, if I route correctly to my home PC.
The Arduino provides everything I need here: a clean enough clock for my decoder, I2C for the backlight driver and touch input, and SPI for data transmission. Touch input is converted and sent to the server as mouse input.
My home PC is just an older 2017-ish gaming PC with an Nvidia GTX 1050 Ti. The encoder is written with DirectX and OpenGL, which means it can run on many GPUs or iGPUs that support basic hardware acceleration. In turn, I can stream nearly every graphics program or game that also runs on my PC.
I have seen many cool display projects in this sub, so I am curious if anyone knows something comparable, especially in terms of resolution, frame rate, latency, or power consumption. If you have seen or built something similar, please let me know.
I am looking forward to building a small device around this, probably with a simple keyboard. I am not sure yet if I should aim more for gaming inputs, a QWERTY keyboard, or both.
Feedback is welcome. I would also be happy to answer questions if you have any.