150 pointsby gadgetoid12 days ago15 comments
  • djaychela8 days ago
    That's really good as all the pinouts give all the extras on which can be overwhelming. Being able to just see the PWM capable outputs for instance is much nicer. And they look fantastic.

    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/

    • gadgetoid8 days ago
      Thank you. You’re welcome on both counts!
  • bajsejohannes8 days ago
    Another version that's useful is this ASCII version: https://gabmus.org/posts/raspberry_pi_pico_pinout_in_your_te...

    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.

    • gadgetoid8 days ago
      I did something like this called “picopins” (pip install picopins) which gave a CLI ASCII-like pinout with search.

      ASCII-only really cuts to the meat of the problem though.

  • eternityforest7 days ago
    This is really cool!

    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?

    • gadgetoid6 days ago
      I've thought about this on and off for years, trying to find a way to boil the stuff I've learned making Pinouts into some kind of tool.

      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

      • eternityforest4 days ago
        It seems like the "Photo and offsets" approach is pretty commonly used, and I can't personally say I have any complaints, even though the CLI enjoyers might disagree.

        Maybe it could be paired with a basic image generator for common layouts?

        Or maybe it could just have a set of selectable hardcoded layout engines, since "counterclockwise from upper left" and "across then down" cover a lot of things.

        "Base64 of an images plus and offsets table" could just be a layout type, and people could submit PRs for anything else.

        Maybe it could be something like: Your pin(or callout) Tables

        Your Sections, which could have an image and some text

        Your Images, that would either be literal pictures or rendering instructions that reference a table

        So you could have a complete cheat sheet for any device on one page.

  • coffeecoders8 days ago
    This is great, I wish we had something similar for ESP and even Arduino. I have been following this [1] for the later.

    [1] https://deepbluembedded.com/arduino-uno-pinout/

    • gadgetoid8 days ago
      In typical fashion I got nerd-sniped into making an ESP32 C5 DevKit-1 pinout. I've disappeared down a hole of making the perfect SVG for the board art.

      Will be an interesting experiment!

      • coffeecoders8 days ago
        I had something similar a few years ago. I ended up creating a json for the pinout and using jinja2 to spit out svg. It didn't turn out great.
  • adi_hn077 days ago
    This is a super cool way to visualize Raspberry Pi pinouts! Do launch it on https://www.superlaun.ch for more traffic and exposure for the site.
  • mrheosuper8 days ago
    I wish many manufactures would begin adding Pin mux inside MCU, like espressif. So most of the time you don't care which pin has which function, and make designing pcb for it much less painful.
    • gadgetoid8 days ago
      PIO kinda sorta does this but yeah the Pico could definitely benefit from a more flexible pin mux, since bringing up PIO peripherals is messy.

      Pico never quite has a function where it’s needed.

    • jamesmunns7 days ago
      Nordic's nRF family is the major other vendor I've seen doing this, almost all peripheral can be on any pin. It's definitely a big help for designing boards.
    • iamflimflam18 days ago
      Definitely - the ESP32S3 is an absolute joy to work with and layout.
      • franga20007 days ago
        How do you go about designing a PCB with this in mind though? At least in KiCad, the requirement to make nets first and layout last makes it so I basically have to do a draft layout in my head, connect the pins in the circuit diagram and then do the final layout.

        Do you have a better workflow for this?

        I'd love to have something that I can just feed a list of tags for each pin and have it pick the pins and make the layout in the fewest layers and/or with fewest vias possible (the latter would be amazing for making perfboard prototypes). Something like MCU_PIN1={uart1_tx,gpio_out,gpio_in,gpio_in_pullup...}, J2_PIN1={uart1_tx}, ... and then it just...figures it out and gives me pin table that I can use in the code (like a bunch of #defines).

        • iamflimflam14 days ago
          I will tend to do make the schematic. I’ll use labels for most connections from the mcu to any peripherals.

          On the PCB, the most critical thing to my mind, is component placement. I’ll do that before any wiring up and then use that to determine the most sensible GPIO pins to use.

          For the routing I’ll modify the pins used to make it easier/simpler.

          It’s definitely an iterative process with a lot of back and forth between schematic and PCB.

          The nice thing with the flexibility of the GPIOs is that I don’t need to do much upfront design. I’ll just label pins up in the schematic and if needed tear it up and redo.

          The real trick in the schematic is not “wiring” all the connections up. Just use labels that are easy to move around.

  • moffkalast8 days ago
    That's pretty nice, a lot like pinout.xyz as others mention. Something that would really set it apart would be to be able to select pins and functionality and have other pins greyed out that can't be used in parallel.

    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.

    • Zanfa8 days ago
      For inspiration, STM32Cube is otherwise PoS software, but it has a pretty decent utility for exactly this for most of their STM32 MCU lineup. Why they didn’t just make it a website is beyond me, but it is what it is.
      • gadgetoid8 days ago
        I recently started building something like this for the RP2350A chip [1], deeply inspired by both STM32Cube and also by avoiding recreating the horror of STM32Cube.

        I’m currently failing to not build STM32Cube for Pico though, the idea keeps gnawing away at me. There are some idiosyncrasies that my micro site doesn’t quite capture. Though perhaps it could.

        1. https://news.ycombinator.com/item?id=44520091

  • varispeed8 days ago
    A suggestion. It would be nice if I click on e.g. "SPI0" it should highlight all pins related to SPI0.

    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.

    • gadgetoid8 days ago
      Agreed. Click-to-select-related-pins is something I've been experimenting with on a cut-down Raspberry Pi Pinout [1]

      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

  • ksdme98 days ago
    This looks awesome, thanks! The best thing about this imo is that I can remember the url instead of having to dig through pages to find the official pinout pdf.
    • geerlingguy8 days ago
      And the nice thing is it's usually at the top of search results since it's been a high quality, simple resource for years (maybe even a decade at this point?). Definitely the canonical reference (outside of the official docs, which aren't quite as user friendly).
  • lawik8 days ago
    pinout.xyz is a treasure when working with Pis in general.
  • bajsejohannes8 days ago
    Thanks! I've been using pinout.xyz quite a few times; maybe you should link from there to the pico versions so it's easier to discover?
    • gadgetoid8 days ago
      Agreed. Thanks!

      I have definitely struggled with making the Pinout spinoffs discoverable- the OG site had ten plus years to bed in.

  • transcriptase8 days ago
    This is amazing, thank you! If anyone knows of something similar for any of the more popular Esp32 boards I would love to know about it!
    • gadgetoid8 days ago
      Thanks... urge to build a version for ESP32-C5-DevKitC-1 rising...
      • gadgetoid8 days ago
        Nerd snipe successful.

        (very beta website)

        https://esp32c5.pinout.xyz

        • transcriptase8 days ago
          Incredible! Funny enough of all the dozen different Esp32 boards I’ve collected that’s the one I don’t have. If I ever have the time I may try to do some legwork for you for the c3 and c3-supermini if that would be helpful
          • gadgetoid8 days ago
            Once I get the hand of the ESP’s idiosyncratic signal names (I don’t have much experience with them) I should be able to crank them out. But help would be appreciated, thanks - even a canonical list of the pins and functions would be super useful. I get the sense I’m missing something referencing only their pinout diagram.
  • ssl2328 days ago
    Thank you. I found this years ago and look it up every time I’m working on a Raspberry Pi project. Keep up the good work!
  • polivier8 days ago
    I've used your pinouts a ton in the past for my small Raspberry Pi projects, good job and thank you!
  • NoSalt8 days ago
    This is AWESOME ... thank you!