Raspberry Pico as an RGB Scanner to HDMI Converter
The device presents a simplistic approach of using a single generic purpose microcontroller to capture in real time RGB (CSYNC / HVSYNC) signals and to display it in an HDMI output without requiring FPGA chipsets of Single Boards computers with an HDMI diplay. This system relies on the use of the PIO capabilities of the RP2040, to do dedicated processing of IO signals enabled with IRQ and DMA capabilites of the processor.
One processor is mostly dedicating to generate HDMI TMDS signals and the other to capture trigger captures and render on screen information among other functionalities. PIO + DMA are used to dedicate the capture without requiring CPU intervention and to send the TMDS frames to the HDMI diplay.
The project full under the terms of the MIT license
You are encouraged to build, develop and share, if you want to collaborate share PRs and github issues.
This solution (HW / FW /SW) is provided as is without any express or implied warranties.
While every effort has been taken to ensure the solution will work as is, the authors & contributors assume no responsibility for errors or omissions, or for damages resulting from the use of the solution of the information contained herein. There is no guarantee as to the suitability of said source code, executable scripts, circuits and other information, for any purpose whatsoever other than as a self-training aid. I.E. If it blows your equipments, trashes your hard disc, wipes your backup, burns your building down or just plain don't work, IT ISN'T MY FAULT I will not be held responsible for any damages or costs which might occur as a result of the usage of the beforementioned solution, USE IT AT YOUR OWN RISK
You can allways collaborate to buy me coffees to focus on new cool features, this is my paypal. paypalme mlorenzati
You can build yourself the PCB out of the gerber in HW section, if you wan you can buy it in pbcway pico-rgb2hdmi
- Download the pico-sdk, pico-extras, and pico-playground repositories
- Define PICO_SDK_PATH in your ~/.bashrc•
- Download the pico-sdk repository
Install sha3sum to hash the binary
brew install md5sha1sum
sha1sum <file>
echo -n "<device_salt><device_uid>" | sha1sum -b
Tools were developed for sake of simplicity, focus is on firmware. It is required to install python3, pip and the following packages
pip install pyserial numpy pillow pyinstaller
python3 csv2png.py image.csv
This generates as output image.png
./packtiles -s -f r1 char_c64_lineal.png font_c64.h
./packtiles -sdf rgab5515 -m images/commodore.png cbm.h
python .\rgb2hdmiGui.py
pyinstaller -w -F rgb2hdmiGui.py
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
Go to the specific folder and
make -j4
Install the extensions as explained in the Pico Getting started manual
Or just download VScode and add the following extension
code --install-extension marus25.cortex-debug
code --install-extension ms-vscode.cmake-tools
code --install-extension ms-vscode.cpptools
Install open ocd as explained in the Pico Getting started manual section Installing OpenOCD
#Using Pico probe On the same document check Appendix A: Using Picoprobe
Open deploy and run
openocd -f interface/picoprobe.cfg -f target/rp2040.cfg -c "program <specific elf file> verify reset exit"
picotool save -a pico_rgb2hdmi_xyz.uf2