Show HN: Interactive pinout for the Raspberry Pi Pico 2
150 points| gadgetoid | 7 months ago |pico2.pinout.xyz
Recently I've updated these with a new "Upside-down" view to complement the rear view, giving a pinout in the right orientation to match your project.
The Pico sites are all hand-coded single HTML pages with supporting CSS and minimal JS. They are set up to optionally install as a "Desktop" web app. They also degrade into a somewhat usable table in lieu of CSS and use vector graphics (for the board itself) to be viewable and printable at any size.
Finally, hidden behind "Advanced" is a pinout of the test pads and special function pins!
[1] - https://web.archive.org/web/20130505194305/pi.gadgetoid.com/... [2] - https://pico.pinout.xyz [3] - https://pico2.pinout.xyz
djaychela|7 months ago
Thanks for your pimoroni [1] work as well, I've used quite a few products and they're always easy to work with because of good software and examples.
[1] - https://shop.pimoroni.com/
gadgetoid|7 months ago
bajsejohannes|7 months ago
I keep a slightly modified version of it as a top comment in my main C file in every pico project. Super handy for quick reference and you can annotate it with the actual uses in your project.
gadgetoid|7 months ago
ASCII-only really cuts to the meat of the problem though.
eternityforest|7 months ago
I especially love the ability to flip and reverse things, since I try to avoid comparing any two objects in different orientations, to cut down on mistakes.
It would be really cool if the community had a more general purpose open standard interactive diagramming tool for this sort of thing.
I guess the easy way would be to mark up photographs with pin locations, which would map to pins in a table, allowing for multiple tables in a document.
I'm not sure how you'd capture the data in a way that could be rendered to something like a screen reader or a more abstract diagram though, without a lot of complexity and edge cases.
Would it be enough to just verbally describe the mapping between pin numbers and the physical layout, as in "Across then down, starting at upper left", or would you need a meta data scheme for that?
gadgetoid|7 months ago
There are a surprising number of pitfalls, since there's always some complexity most top-level diagrams don't reveal, but I feel is necessary to capture/avoid duplication of work- specifically, I mean documenting the pinout of the chip (RP2350, ATMEGA32U4, STM32H750, RP2 etc) and then translating that to a board layout.
I think the closest I've come is a prototype Pinout rewrite which started with chip [1] and board [2] JSON files.
Then, as you explore, there's the whole problem of presenting this information. I chose to capture information such as header type, orientation and pin-count but sometimes a header is too small (or there are too many headers) to document in-band so the kinda skeuomorphic presentation of the Pico pinouts doesn't work.
Perhaps that's where something like the minimap [3] from my "advanced" RP2350A pinout comes in.
Having a small representation of the board with the pin headers separate could work. It's been a while, IIRC a Fritzing [4] part involved creating a vector graphic of a part and naming the individual pin objects such that they could be mapped to a table of signals. I think SVG is compatible with this approach but... yeah, requiring people to create detailed board artwork (as good as it looks) is a stretch. The same could work for a good photo and just a table of offsets, as you suggest.
TLDR: This is a great idea and something I've wanted to do for ages. But I don't think I've got enough breadth of experience to do it alone.
1. https://github.com/pinout-xyz/pinout-2024/blob/main/chips/bc... 2. https://github.com/pinout-xyz/pinout-2024/blob/main/boards/r... 3. https://rp2350a.pinout.xyz
coffeecoders|7 months ago
[1] https://deepbluembedded.com/arduino-uno-pinout/
gadgetoid|7 months ago
Will be an interesting experiment!
adi_hn07|7 months ago
mrheosuper|7 months ago
gadgetoid|7 months ago
Pico never quite has a function where it’s needed.
jamesmunns|7 months ago
iamflimflam1|7 months ago
moffkalast|7 months ago
At least that's my main pain point when working with microcontrollers. They give you like 20 pins and you plan out all the functionality and then it turns out that one of those pins is like an EEPROM pin that needs to be low at boot or linked to something else internally or some shenanigans like that and the idea is actually completely impossible to implement (looking at you ESP32-CAM lmao). Or PWM channel conflicts that set some specific sets of pins to the same frequency and the like. It would be such a great workflow step to be able to verify if something would theoretically work given the known limitations at least.
Microcontrollers are like if a PC had 4 USB ports and if you used two of them the third and fourth just stopped working cause nobody intended all four to be used at the same time. Absolutely maddening.
Zanfa|7 months ago
varispeed|7 months ago
Bonus points if it could generate example initialisation code for the selected pins on the fly or maybe even an example snippet of code to get the peripheral going.
gadgetoid|7 months ago
And code gen is something I'm looking at with the RP2350A pinout [2] where the JSON export would allow someone to plug it into any tool they like. (KiCAD symbol gen, C/MicroPython init code, etc)
It's difficult to strike a balance between features/minimalism but I'm increasingly drawn to the idea of a full (STM32Cube-like if you're familiar with it) configurator for Pico/RP2 based boards.
1. https://pi.pinout.xyz 2. https://rp2350a.pinout.xyz
ksdme9|7 months ago
geerlingguy|7 months ago
lawik|7 months ago
bajsejohannes|7 months ago
gadgetoid|7 months ago
I have definitely struggled with making the Pinout spinoffs discoverable- the OG site had ten plus years to bed in.
transcriptase|7 months ago
gadgetoid|7 months ago
ssl232|7 months ago
polivier|7 months ago
NoSalt|7 months ago