A one-chip desktop with VGA, touch panel and USB input

Oct 10, 2026 Last reply: 8 hours ago 4 Replies
Jump to replies (4)

When it is up and running, Recaster Pico puts a proper desktop on a VGA monitor: a blue background with folder icons, open windows and a Mandelbrot fractal program, all from a single RP2040 and its 264 KB of SRAM. A 3.2-inch touch panel serves as a second screen, a second RP2040 supplies keyboard and mouse input over a serial link, and the whole thing runs off a power bank.



The hardware itself is refreshingly honest: a perfboard carrying many small modules joined by jumper wires, with a DS1307 clock chip paired with an AT24C32 EEPROM over I2C. The clock and EEPROM get set up from a small text file, and the EEPROM shows up as a file under /dev, a neat touch. There is also a USB-A socket hanging off two GPIOs through Pico-PIO-USB, with USB host coming from the second Pico's micro-USB port.



The engineering details are where this shines. VGA is 640 by 480 at 60 Hz in 256-color RGB332, generated straight from PIO and DMA. One core builds each scanline right before it is needed and passes finished lines to a DMA channel, so the touch panel mirrors the desktop without drawing it a second time; a program can also grab that panel and paint it directly. Touch input can drag the pointer around and click with it, and the panel works with no monitor attached. Input arrives as CRC-protected packets woven into the 1 Mbaud console stream, which still behaves as a serial terminal, and the shell language drives GPIO, ADC, PWM, PIO and DMA with names matching the Pico SDK.



Not everything is finished: a speaker and an SD card sit on the board without support yet, and flash erases stall core 0 for roughly 45 ms per sector. Sound, SD support and touch-friendly controls are on the roadmap, with a video and uf2 files promised.


How does the small screen stay in step with the desktop? Is the panel redrawn from scratch every frame, or is there some kind of handoff between the two cores that keeps the mirror image from being composed twice?

Moving the UART interrupt onto core 1 and running it from SRAM seems like the sharpest fix in the whole build. Flash erases freeze core 0 for about 45 ms per sector, and at 1 Mbaud the 32-byte FIFO only buffers roughly 10 ms of mouse traffic, so leaving that interrupt in flash's path would risk losing pointer events. The cost is some core 1 time, which strikes me as a fair trade.

Given that the touch panel only shows a quarter of the VGA desktop, I would push the touch-friendly controls right up the priority list. Buttons, sliders and lists sized for that small screen would make the panel genuinely usable on its own, especially in the no-monitor setup the maker already has working.

The maker has covered this: core 1 builds each VGA scanline right before it is needed, then hands finished lines to a DMA channel, so the LCD mirrors the desktop without composing anything a second time. A program can also take over the small screen and draw on it directly instead of mirroring.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required