Skip to content
A project ofgwark.dev

Contribute

Each pinout is one JSON file. The site builds from those files.

Sending a change

No clone needed. GitHub forks the repo and opens the file in its web editor.

Add a pinoutEdit the cross-referenceBrowse the repoContributing guide

Every board page also links to its own file at the bottom.

Cite a source for every pin: a datasheet page or a vendor diagram. Untraceable data does not go in.

Adding a pinout

Add data/boards/<slug>.json. The board page, search, legend and cheat sheet all come from it.

{
  "slug": "my-board",
  "name": "My Board v1",
  "shortName": "MyBoard",
  "vendor": "Acme",
  "category": "mcu-board",
  "summary": "One or two sentences on what it is and what makes it awkward.",
  "logic": "3.3 V",
  "package": "2x20 2.54 mm",
  "layout": {
    "kind": "board",
    "numbering": "ccw",
    "rows": 20,
    "sideLabels": ["Pins 1-20", "Pins 21-40"]
  },
  "keywords": ["nicknames", "part numbers"],
  "notes": ["Gotchas, one per entry."],
  "docs": [{ "label": "Datasheet", "url": "https://…" }],
  "pins": [ /* … */ ]
}

layout.numbering places the pins for you:

  • zigzag: 2×N headers, odd pins left, even right. Raspberry Pi.
  • ccw: the DIP convention, pin 1 top-left, down the left and back up the right. DIP chips, Pico.
  • explicit: each pin sets its own side and row. Skip a row number to leave a gap, as on the Arduino Uno headers.

The pin object

{
  "number": 12,
  "name": "GPIO18",
  "primary": "gpio",
  "aliases": ["BCM 18", "PCM_CLK"],
  "tags": ["pwm", "clock"],
  "functions": ["PWM0", "PCM/I2S CLK", "SPI1 CE0"],
  "note": "The pin WS2812 libraries use, because it reaches PWM0 via DMA."
}

primary is the pin's electrical role and sets its color. tags are the buses it can be muxed onto.

primary (pick one)

  • power55 V
  • power33.3 V
  • vccVCC
  • vinVIN
  • gndGND
  • gpioGPIO
  • ctrlControl
  • ncNC

tags (any number)

  • i2cI²C
  • spiSPI
  • uartUART
  • pwmPWM
  • analogADC
  • dacDAC
  • touchTouch
  • clockClock

Use note for gotchas: strapping pins, on-board pull-ups, current limits, analog-only pins.

Adding a cross-reference

Append to data/crossref/parts.json. Every equivalent needs a notes string explaining the difference.

{
  "part": "IRF540N",
  "confidence": "not-drop-in",
  "notes": "Looks like the same part and is constantly substituted
            for it, but it is NOT logic level: Rds(on) is specified
            at Vgs = 10 V and it barely turns on from a 5 V pin."
}

Confidence levels:

  • drop-in: same pinout and behavior, no code change.
  • caveats: works, but a voltage, library flag, register or rating changes.
  • not-drop-in: same job, different hardware.

Set pinout to a board slug to link the two pages. Current slugs: 24lc256, sn74hc00, sn74hc04, sn74hc08, sn74hc138, sn74hc14, sn74hc165, sn74hc245, sn74hc32, sn74hc4067, sn74hc595, sn74hc74, sn74hc86, adafruit-feather, ads1115, arduino-mega-2560, arduino-nano-v3, arduino-uno-r3, arduino-uno-r4-minima, at89s52, atmega328p-pdip, attiny85, beaglebone-black-p8, beaglebone-black-p9, bme280, cd4017, cd4051, ch32v003, dht22, ds1307, ds18b20, esp-01, esp32-devkit-v1, esp32-cam, esp32-s3-devkitc-1, hc-sr04, hx711, icl7660, ina219, l293d, lm324, lm339, lm358, lm393, max485, max6675, max7219, mcp23017, milk-v-duo, mos-6502, mos-6522, mos-6551, ne555, frdm-k64f, pca9685, pcf8574, pic16f877a, pro-micro-32u4, radxa-rock-5b, raspberry-pi-26-pin, raspberry-pi-40-pin, raspberry-pi-pico, raspberry-pi-pico-2, xiao-esp32c3, stm32f103-blue-pill, stm32f411-black-pill, teensy-4-0, teensy-4-1, tp4056, uln2003, wemos-d1-mini, ws2812b, zilog-z80.

Validation

npm run validate runs before every build and fails it if:

  • a slug does not match its filename, or is not unique
  • a primary or tag is not a known signal key
  • pin numbers have gaps, or two pins share a grid slot
  • a ccw or zigzag layout does not have rows x 2 pins
  • a doc link is not https
  • a cross-reference pinout names a board that does not exist
  • an equivalent has no notes

Accuracy

Data comes from manufacturer datasheets and vendor diagrams. Clones and revisions differ, so check your silkscreen before powering up.

Wanted

Boards people ask for that are not here yet:

  • BBC micro:bit edge connector, 25 strips including the five rings
  • Raspberry Pi Compute Module 4, both 100-pin connectors
  • Orange Pi 5 and Radxa ROCK 5
  • Seeed XIAO family, one footprint across SAMD21, RP2040, ESP32-C3 and nRF52840
  • Teensy 4.0 and 4.1
  • Arduino Mega 2560, and the Uno R4 which shares the R3 headers
  • ESP32-C3 and S3 SuperMini, and the 38-pin ESP32-DevKitC
  • OrangeCrab and other ECP5 FPGA boards in the Feather footprint
  • MAX7219, HC-SR04, PCA9685, DS3231 and other common breakouts
  • 6522 VIA and 6551 ACIA, to go with the 6502