RP2040 is limited by how fast it can run, so you’ll probably find that PicoVision (£34.50) can’t manage the full resolution of your display. PicoVision does go up to 1280×720, however, it does this by pushing both RP2040 and the HDMI protocol beyond their defined limits, so this won’t work on all PicoVisions or all displays. 720×480 is a more reliable target. As well as a limited resolution, there’s also a limited set of colours available. There’s a set of images and GIFs on the PicoVision page which give a realistic idea of what’s available (they match with our experience using the board).
PicoVision combines two microcontrollers – one RP2040 does the hard work of throwing data down the HDMI connection, leaving a second RP2040 (in the form of a Pico W) free to do whatever processing you want. These two interact using a pair of PSRAM buffers. The Pico W writes to one while the HDMI-RP2040 sends the other to the display.
Alongside the two microcontrollers and an HDMI port, there are three user buttons, a microSD card port, a STEMMA QT / Qwiic connector, and an I2S DAC for audio output. There is also the USB port which can (when being used with C++) be used in USB Host mode. You can attach a USB keyboard. In theory, most USB hardware can be connected, but in practice, it entirely depends on what information you can get about the hardware and how much effort you’re willing to put into writing a driver for it.
The double RP2040 architecture means that you have one Pico W that you can use as you would any other Pico W. You have almost all the resources available for your program, with the exception of the GPIO pins, most of which are in use. You can program this with either MicroPython or C++. In MicroPython, PicoVision is controlled by the display module in a similar way to other Pimoroni products – this lets you build up your output from shapes, sprites, and text.
There’s a good set of examples to show you how to use this. It’s a bit rudimentary, but it’s easy to use and works well.
This does all pose the question of what you would want an HDMI-enabled microcontroller for. Pimoroni obviously has something in mind as, alongside this board, they’ve announced a competition to create the best demoscene-style demo. In Pimoroni’s words, this means: ’Demos are often characterised by their impressive graphical effects, compelling soundtracks, and the intricate interplay between visuals and audio, all typically constrained within specific hardware or file size limits. This constraint-driven creativity pushes sceners to extract every ounce of potential from a given platform’.
As well as giving geeks a chance to display their skills, PicoVision is a good option for anything that wants both a microcontroller and a medium-to-large display. You might mostly think of HDMI as being for monitors and TVs, but there’s a wide range of HDMI displays from about 5 inches up, and they often come with mounting hardware for embedding in projects.
We can’t ignore that – at this price point – there are other things that can generate HDMI output and do a lot of other things at the same time, such as a Raspberry Pi Zero. PicoVision offers a very different set of things. Raspberry Pi Zeros offer a full Linux environment, which is either great or terrible depending on your use case. It’s great if you need the power that this offers. However, if you don’t need the power (you just want to put some images on a screen), it’s a pretty terrible option because it comes with a huge amount of things that can go wrong, need updating, and generally require attention. By removing all that, PicoVision has the potential to be more understandable, more reliable, and also more robust.
We suspect that a pretty large part of the market for PicoVision will be people who enjoy the simplicity of microcontroller programming and want to push it to its limits, for this is, by a significant margin, the easiest microcontroller board we’ve ever used for working with larger displays (beyond the SPI displays that go up to about 4 inches). If this is what you want to do, whether for practical reasons or just to see what performance you can squeeze out of the processor in the style of the demoscene, then this is by far the best option.