PicoVision Beta-testers Quick-start Guide #3
Gadgetoid
announced in
Announcements
Replies: 2 comments 12 replies
-
Is there a pinout somewhere? |
Beta Was this translation helpful? Give feedback.
2 replies
-
I should really clean up and split this from all the other changes, but... 32blit-sdk port: https://github.com/Daft-Freak/32blit-beta/tree/picovision-and-everything-else Possibly working artefacts here: https://github.com/Daft-Freak/32blit-beta/actions/runs/5568692843 (with hires == 320x240, EDIT: PicoVision only branch: https://github.com/Daft-Freak/32blit-beta/tree/picovision |
Beta Was this translation helpful? Give feedback.
10 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hey! If you're reading this, chances are you've just unboxed a brand new PicoVision. Welcome to the 1980s- except have HDMI, WiFi and Bluetooth and USB and MicroPython.
PicoVision is a wireless HDMI stick for putting pico-powered, network-connected graphics onto your TV or HDMI monitor.
It works by combining a Pico W (which we call the "CPU") with a separate RP2040 (which we call the "GPU") for handling the HDMI output. They communicate via a pair of physical buffers- PSRAM chips- which are swapped via a hardware mux. The idea is that the CPU prepares a frame, writes it to the buffer, requests a swap and gets back the other, empty buffer.
The GPU code is embedded into your Pico W program code and hot-loaded onto the RP2040 at runtime, so everything is mutable and - should you wish to push the envelope - you don't have to rely on our interpretation of how things work.
Much of PicoVision was made possible by @MichaelBell whose enthusiasm pushed the project forward, and whose code makes this balmy setup possible.
C++
To write C++ programs for PicoVision you'll need Michael's
dv_stick
branch, which you can find here: https://github.com/MichaelBell/pimoroni-pico/tree/dv_stickThis includes -
If you're familiar with PicoGraphics you should be able to start pushing pixels within minutes, but there are some small caveats:
MicroPython
We have a MicroPython firmware up and running on PicoVision that lets you use PicoGraphics - plus all the usual MicroPython niceties - to push pixels in a more forgiving environment.
The pace of development is fast, so you should be familiar with grabbing artifact builds from GitHub.
You can find firmware for various commits and pull-requests by going to Actions here: https://github.com/pimoroni/picovision/actions
And click a "MicroPython Firmware" build. Now you'll see a list of Artifacts at the bottom, you'll normally want the ~2MB build so you don't nuke your filesystem, eg:
pimoroni-picovision-069f0e0d6436de698498f6640b0cd162d4fb3ac1-micropython.uf2
from https://github.com/pimoroni/picovision/actions/runs/5525452531MicroPython is chopping and changing as we figure out what shape the Pico Vision API should take- give us a shout for example code.
GPU "Firmware"
The GPU firmware is available here - https://github.com/MichaelBell/pico-stick
This is where grabbing a frame from the PSRAM buffer and outputting it to HDMI - using @Wren6991's PicoDVI - happens.
The GPU is controlled via an i2c interface, allowing for sprite positions and scanline scrolling to be updated without a buffer swap.
Discussion
Feel free to use these forums, GitHub issues or PRs to discuss the various aspects of Pico Vision.
We also have a channel on the Pimoroni discord for more casual discussion - https://discord.gg/knKhkwtE5
Beta Was this translation helpful? Give feedback.
All reactions