9 ms·
Show HN: PicoVGA Library – VGA/TV Display on Raspberry Pi Pico
- no_time 4y agoToo bad the rp2040 doesn't have an external RAM interface. Would make for an excellent single chip, instant booting computer experience.
- mordae 4y agoIt would be cool, especially with a larger package with more pins.
- alexisread 4y agoHave a look at the BL808 chip, on the sipeed M1s board. (https://www.aliexpress.com/item/1005004970779483.html https://www.aliexpress.com/item/1005004970779483.html) I've never seen an MCU with access to 64mb RAM - makes for a great target chip for a simple computer. (https://btashton.github.io/bl808-notes/soc/memory_layout.html https://btashton.github.io/bl808-notes/soc/memory_layout.htm...) There are 5 processors on the chip, which you can optionally use as required: NPU (neural processing unit https://github.com/sipeed/TinyMaix/blob/main/benchmark.md https://github.com/sipeed/TinyMaix/blob/main/benchmark.md) H264 video codec RV64 application processor capable of running linux RV32 radio processor for the 3 radio protocols it supports - wifi/BT/zigbee RV32E low power core to manage the chip The radio and application cores should run fast enough to be able to bitbang digital video signals, there is 32K VRAM which I guess might be used for the bundled touchscreen display.
- lnsru 4y agoThere are countless chips for more dollars with external RAM. RAM IP costs literally dollars, costs silicon area, increases package price, makes pcb design more difficult and would probably canibalize Raspberry Pi Zero sales.
- guenthert 4y agoYou mean with parallel address and data bus? That would be a whole lot of pins and quite a large effort to implement, not to speak of getting the timing right, when going beyond a clock rate of 10MHz or so. In the MCU world (quad) SPI RAM is favored, if external RAM is needed. That can be done with the RP2040 (well, you'd have to move the content yourself, there is no hardware support to transparently access external RAM, like in some other MCUs). But what exactly do you have in mind with the 'instant booting computer experience'? The RP2040 has 264KiB of RAM already (more than the address space of a PDP-11), so surely that qualifies as 'computer'. That should be enough to even emulate a 8 bit Home Computer (well, it has been done for 6502 and Z80 CPUs and whole CP/M machines and ZX Spectrum). Not that I get this obsession with 'instant on'. My chromebook is ready for me the moment (well, within a blink of an eye) I open the lid. My desktop needs a minute or so, but I reboot it only when there's a kernel update ...
- westurner 4y agoTV/VGA + Serial Console on an RP2040 would be cool. - rs232 - UART - USB-TTL w/ configurable (3.3v/5v) voltage levels - (optional) VGA output - (optional) WiFi/Bluetooth (RP2040W Pi Pico W) The OpenWRT hardware/port.serial wiki page explains how to open a serial console with screen and a tty /dev; and about 3.3V/5V bricking a router and/or the cable: https://openwrt.org/docs/techref/hardware/port.serial#use_your_old_pda_as_a_console https://openwrt.org/docs/techref/hardware/port.serial#use_yo... PiKVM may have console support but with a Pi 3/4+, not a $4/$6 RP2040 /W with or without low-level WiFi+Bluetooth "Raspberry Pi Pico Serial Communication Example (MicroPython)" https://electrocredible.com/raspberry-pi-pico-serial-uart-micropython/ https://electrocredible.com/raspberry-pi-pico-serial-uart-mi... > The RP2040 microcontroller in Raspberry Pi Pico has two UART peripherals, UART0 and UART1. The UART in RP2040 has the following features: [pinout]
- westurner 4y ago> - RS232 RS232: https://en.wikipedia.org/wiki/RS-232 https://en.wikipedia.org/wiki/RS-232 Serial Port: https://en.wikipedia.org/wiki/Serial_port https://en.wikipedia.org/wiki/Serial_port > - UART UART: Universal Asynchronous Receiver Transmitter: https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter https://en.wikipedia.org/wiki/Universal_asynchronous_receive... > - USB-TTL w/ configurable (3.3v/5v) voltage levels USB-to-serial adapter: https://en.wikipedia.org/wiki/USB-to-serial_adapter https://en.wikipedia.org/wiki/USB-to-serial_adapter > Most commonly the USB data signals are converted to either RS-232, RS-485, RS-422, or TTL-level UART serial data. - SunFounder Thales Pi Pico Kit > Components > Slide Switch, Resistor, : https://docs.sunfounder.com/projects/thales-kit/en/latest/components/slide_switch.html https://docs.sunfounder.com/projects/thales-kit/en/latest/co... Kepler has the 2040W: https://docs.sunfounder.com/projects/kepler-kit/en/latest/ https://docs.sunfounder.com/projects/kepler-kit/en/latest/ /? how to limit voltage to 3.3v: https://www.google.com/search?q=how+to+limit+voltage+to+3.3v https://www.google.com/search?q=how+to+limit+voltage+to+3.3v - Zener diode > Voltage shifter: https://en.wikipedia.org/wiki/Zener_diode#Voltage_shifter https://en.wikipedia.org/wiki/Zener_diode#Voltage_shifter - Voltage regulator > DC voltage stabilizer: https://en.wikipedia.org/wiki/Voltage_regulator#DC_voltage_stabilizers https://en.wikipedia.org/wiki/Voltage_regulator#DC_voltage_s... - TIL electronics.stackexchange has CircuitLab built-in: https://electronics.stackexchange.com/questions/241537/3-3v-adc-protection https://electronics.stackexchange.com/questions/241537/3-3v-... . Autodesk TinkerCAD is a neat, free, web-based circuit simulator, too; though it supports Arduino and bbc:micro but not (yet?) Pi Pico like Wokwi. There is at least one RP2040 JS simulator: Wokwi appears to support {MicroPython, CircuitPython,} on {Pi Pico} and also Rust on ESP32: Wokwi > New Pi Pico project: https://wokwi.com/projects/new/pi-pico https://wokwi.com/projects/new/pi-pico Wokwi > New Pi Pico + MicroPython project: https://wokwi.com/projects/new/micropython-pi-pico https://wokwi.com/projects/new/micropython-pi-pico wokwi/rp2040js : https://github.com/wokwi/rp2040js https://github.com/wokwi/rp2040js https://www.hackster.io/Hack-star-Arduino/raspberry-pi-pico-online-simulator-2023-be0a69?f=1 https://www.hackster.io/Hack-star-Arduino/raspberry-pi-pico-... > - (optional) WiFi/Bluetooth (RP2040W Pi Pico W) /? "pi pico" bluetooth 5.2 [BLE] https://www.google.com/search?q=%22pi+pico%22+bluetooth+5.2 https://www.google.com/search?q=%22pi+pico%22+bluetooth+5.2 : - From https://www.cnx-software.com/2023/02/11/raspberry-pi-pico-w-bluetooth-le-support/ https://www.cnx-software.com/2023/02/11/raspberry-pi-pico-w-... : >> The Raspberry Pi Pico W board was launched with a WiFi 4 and Bluetooth 5.2 module based on the Infineon CYW43439 wireless chip in June 2022 bluekitchen/btstack is the basis for the Bluetooth support i Pi Pico SDK 1.5.0+: https://github.com/bluekitchen/btstack https://github.com/bluekitchen/btstack > MicroPython awesome-micropython: https://github.com/mcauser/awesome-micropython https://github.com/mcauser/awesome-micropython https://github.com/pfalcon/awesome-micropython https://github.com/pfalcon/awesome-micropython : - There is a web-based MicroPython REPL, and it only works over HTTP due to WebSockets WSS, so it's best to clone that file locally: http://micropython.org/webrepl/ http://micropython.org/webrepl/ https://github.com/micropython/webrepl/ https://github.com/micropython/webrepl/ awesome-circuitpython: https://github.com/adafruit/awesome-circuitpython https://github.com/adafruit/awesome-circuitpython - microsoft/vscode-python-devicesimulator lacks maintainers and Pi Pico Support: https://github.com/microsoft/vscode-python-devicesimulator/wiki/Deprecation-of-the-extension https://github.com/microsoft/vscode-python-devicesimulator/w... https://vscode.dev/ https://vscode.dev/ is the official hosted copy of VSCode as WASM in a browser tab. YMMV with which extensions work after compilation to WASM and without WASI (node/fs,) in a browser tab. From "MicroPython officially becomes part of the Arduino ecosystem" (2022) https://news.ycombinator.com/item?id=33699666 https://news.ycombinator.com/item?id=33699666 : > [in addition to the Arduino IDE support for Pi Pico now] For VSCode, there are a number of extensions for CircuitPython and MicroPython: > joedevivo.vscode-circuitpython: https://marketplace.visualstudio.com/items?itemName=joedevivo.vscode-circuitpython https://marketplace.visualstudio.com/items?itemName=joedeviv... > Pymakr https://github.com/pycom/pymakr-vsc/blob/next/GET_STARTED.md https://github.com/pycom/pymakr-vsc/blob/next/GET_STARTED.md > Pico-Go: https://github.com/cpwood/Pico-Go https://github.com/cpwood/Pico-Go https://scratch.mit.edu/ https://scratch.mit.edu/ has bbc:microbit (and LEGO Boost) extensions when you click plus at the lower left; but not (yet?) Pi Pico support: https://github.com/LLK https://github.com/LLK https://github.com/LLK/scratch-gui/commit/421d673e714a367ff227efcdcff0e7344f3a107d https://github.com/LLK/scratch-gui/commit/421d673e714a367ff2... https://github.com/microbit-more/mbit-more-v2 https://github.com/microbit-more/mbit-more-v2
- traverseda 4y agoWhy is it always analogue output with these kinds of devices? It seems to me like it should be easier to do some form of digital out, but you never see small micro-controllers implementing any kind of digital video output. Is it just because current video standards are bloated and terrible (HDCP, really complicated spec, etc) or is there some more fundamental reason why analog out is so much easier?
- mbilker 4y agoApparently, there is a digital video output project for the RP2040 already out there [0]! As for why digital video is more rare, it is because the common digital video formats are higher bandwidth and require higher signal integrity. [0] https://github.com/Wren6991/PicoDVI https://github.com/Wren6991/PicoDVI
- molticrystal 4y agoI looked at how USB was bit-banged on an arduino and I'm sure some of the problems involved are common with this. One constraint is VGA is at minimum around 25mhz and HDMI is at minimum 165mhz and a pico is around 133mhz. It also takes clock cycles to update the data and run algorithms. Some of the algorithms can often be mitigated to the silicon that controls some of the pins as they can have small bit of programmable logic for this purpose or can be re-purposed, but usually not all the pins or all of the algorithms. There are tricks and such that might be able to get it working in certain lower resolutions and color modes, perhaps like overclocking or taking advantage of some harmonic, or clever use of some existing feature, but the more tricks you do to get things faster,often introduce issues with stability that you have to mitigate or solve. This barely touches physical constraints like cord length, signal integrity, voltages and current, overheating, etc that may or may not be applicable.
- komadori 4y agoA TMDS symbol is 10 bits long so a pixel clock of 25Mhz needs a DVI bitrate of 250Mhz. You can generate DVI with an overclocked RP2040[1], but even then you have to halve the horizontal resolution because the general TMDS encoding algorithm is expensive to perform in software. You could, however, replace the VGA resistor DAC with a dedicated DVI encoder IC like the TFP401. [1] https://github.com/Wren6991/PicoDVI https://github.com/Wren6991/PicoDVI
- andrewstuart 4y agoDoesn’t have a license.
- rocky1138 4y agoFrom the README.md file: > License terms > The PicoVGA library source code and the PicoVGA library sample programs are freely available for further use and modifications. This does not apply to certain graphics and sounds (such as the sounds in Pac-Man) and scene definitions in Sokoban, as these are subject to third party copyrights and may be subject to different distribution terms. Not a very well-defined one, at least.
- nickloewen 4y agoThis looks great. I have been hoping to make a Pico into a little 8-bit-micro style computer, but there’s lots to learn first! I bought Pimoroni’s VGA demo board (https://shop.pimoroni.com/products/pimoroni-pico-vga-demo-base https://shop.pimoroni.com/products/pimoroni-pico-vga-demo-ba...), which provides a readymade version of the VGA implementation “Hardware Design with RP2040.” There are a few emulators that I think should work with that: - PICOVIC: https://github.com/jfoucher/picovic https://github.com/jfoucher/picovic - b-em: https://github.com/kilograham/b-em https://github.com/kilograham/b-em - pico-zxspectrum: https://github.com/fruit-bat/pico-zxspectrum https://github.com/fruit-bat/pico-zxspectrum I haven’t got any to run yet, but I haven’t tried very hard either. (There’s also the Picomite, which looks great, but unfortunately uses a different VGA implementation: https://geoffg.net/picomite.html https://geoffg.net/picomite.html)