Skip to the content
PCBKitNew board
2 layers20 × 24 mmAd5254bo, the printed circuit board in 3D

8-channel EMS/TENS intensity-modulation module: servo-driven attenuator controlled by a game controller. Research prototype, not a medical device.

Size
20 × 24 mm
Copper layers
2
Thickness
1.6 mm
Parts
4
Nets
16
Pads
38
Tracks, vias
33, 6
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
2 Oct 2026
Updated
2 Oct 2026

Overview

Ad5254bo is an open-source printed circuit board by grantjohnson13, from the grantjohnson13/remote-control-human repository on GitHub. It is a 2-layer board of 20 × 24 mm with 4 parts on 16 nets, routed with 33 tracks and 6 vias.

Its parts include 2 connectors, 1 capacitor and 1 IC.

README

old-plan/hardware/ad5254-breakout/README.md

AD5254 Quad-Digipot Breadboard Breakout

A custom breakout board that does what you were trying to build by hand (an AD5254 on a TSSOP adapter) — but designed to be factory-assembled by PCBWay so you never solder the fine-pitch chip, and shaped to plug into a breadboard like a fat DIP.

One board = 4 channels (the AD5254 is a quad digipot). Two boards (addresses 0x2C and 0x2D) = the full 8 channels on one I²C bus.

This is a logic-level, low-voltage board (3.3 V I²C). It carries no stim voltage — the wiper outputs run over to the daughtercards. So it's a simple, low-stakes first custom PCB.

STATUS: Gerbers generated & DRC-clean (2026-08-02)

Board laid out in KiCad 10 from generate.py, 0 DRC violations, 0 unconnected, rendered and visually verified. Ready to upload for a quote:

  • ad5254-breakout-gerbers.zip — Gerbers + drill (drop into PCBWay/JLCPCB).
  • ad5254bo.kicad_pcb — editable board. render-top.png / render-bottom.png.
  • generate.py — the script that builds it (re-run to tweak).

What's on the board

  • U1 — AD5254BRUZ100 (TSSOP-20), factory-soldered.
  • C1 — 0.1 µF (0603): VDD decoupling, close to the chip.
  • WP tied to VDD on-board (writes always enabled — avoids the write-protect gotcha).
  • AD0, AD1 tied to GND on-board → I²C address 0x2C.
  • Ground pours top + bottom, stitched.
  • 2× 1×8 headers, 0.1" pitch, rows 0.6" apart so the board straddles a breadboard's center trench.
  • I²C pull-ups: NOT on-board — by design. Pull-ups belong once on the shared bus, not per board (two of these boards on one bus would double them up). Add one 4.7 kΩ SDA→3V3 and one SCL→3V3 on the breadboard, as you already do.

Final board size: 20 × 24 mm, 2-layer.

Second board / address 0x2D

Both AD0 and AD1 are tied to GND (→ 0x2C). For the 0x2D board, edit generate.py (set pin 4 / AD0 to VDD instead of GND) and re-run — or add the solder-jumper option. Two boards (0x2C + 0x2D) give the full 8 channels.

Header pinout (16 pins broken out)

As actually built (verified against generate.py 2026-08-02). Pin 1 is the end marked by the square pad / silk triangle; the table runs pin 1 → pin 8.

J1 / Row A (pin 1→8)J2 / Row B (pin 1→8)
W0 (wiper 0)VDD
B0W3 (wiper 3)
A0B3
W1 (wiper 1)A3
B1SCL
A1W2 (wiper 2)
SDAB2
GNDA2

For basic use you need VDD (J2.1), GND (J1.8), SDA (J1.7), SCL (J2.5), and the four wipers W0 (J1.1), W1 (J1.4), W2 (J2.6), W3 (J2.2).

Each channel exposes its wiper W, plus the A and B terminals, so it drops straight into the openEMSstim daughtercard network (which uses A + W as a rheostat). For simple use you only need VDD, GND, SDA, SCL, and the four W pins.

Board parameters (for a PCBWay quote)

  • Size: ~23 mm × 18 mm (0.9" × 0.7")
  • Layers: 2
  • Thickness: 1.6 mm FR4
  • Copper: 1 oz
  • Min trace/space: 6/6 mil (well within standard, cheapest tier)
  • Surface finish: HASL (cheapest) or ENIG
  • Quantity: 5 (typical minimum) — you need 2, so you'll have spares

Plug those into PCBWay's instant quote for the bare-board price; add the BOM (bom.csv) + assembly for the assembled price. See "Getting a quote."

Address

To make the second board answer at 0x2D instead of 0x2C, the only change is AD0 → VDD instead of GND. Two clean ways:

  • Order two board variants (trivial netlist change), or
  • Add two solder-jumper pads (AD0/AD1 selectable GND vs VDD) so one board design covers both — recommended; costs nothing and keeps one design.

Getting a quote / to fab-ready files

  1. Ballpark now: put the board parameters above into PCBWay's instant-quote calculator (bare board), and their assembly calculator with bom.csv for the assembled adder. That's your cost, today.
  2. To actually order, PCBWay needs Gerbers + placement. That's a ~15-minute layout of this simple board in KiCad (free) from the netlist.txt here — I can walk you through it step by step, or PCBWay's own assembly/design service can lay it out from this spec. Either way the design is fully defined here; only the layout/export step remains.

Still required after assembly

A pre-assembled board removes the soldering, not the checks: probe it on the breadboard, run the firmware I²C scan (S command) to confirm it answers at its address, and read a wiper back (d) — same bring-up we did on the bench.

Parts

4
QtyValueFootprintReferences
1100nFC_0603_1608MetricC1
1AD5254TSSOP-20_4.4x6.5mm_P0.65mmU1
1RowAPinHeader_1x08_P2.54mm_VerticalJ1
1RowBPinHeader_1x08_P2.54mm_VerticalJ2

Questions

How big is the Ad5254bo PCB?

It measures 20 × 24 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ad5254bo use?

4 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Ad5254bo KiCad files?

From the grantjohnson13/remote-control-human repository on GitHub, at the commit this page was made from: the board is old-plan/hardware/ad5254-breakout/ad5254bo.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ad5254bo design in my own project?

Its repository states no licence, so its author keeps all rights: ask grantjohnson13 before reusing the design.

Similar boards

  • 2 layers18.5 × 26 mm24g2usb rp2350zero, the printed circuit board in 3D

    24g2usb rp2350zero

    joypad-ai/joypad-os

    Universal controller firmware for building adapters, dongles, and custom controllers.

    4 parts1.7kApache-2.0
  • 2 layers116 × 33 mm966595-1 and 963356-1, the printed circuit board in 3D

    966595-1 and 963356-1

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    4 parts1.2k
  • 2 layers19 × 18 mmDaughter board, the printed circuit board in 3D

    Daughter board

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    4 parts915
  • 2 layers24.8 × 24.8 mmNrf24 breakout, the printed circuit board in 3D

    Nrf24 breakout

    tardate/LittleArduinoProjects

    a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

    4 parts803MIT
  • 2 layers26 × 20 mmCap chain, the printed circuit board in 3D

    Cap chain

    drandyhaas/KiCadRoutingTools

    A set of Python/Rust tools to aid routing in KiCad

    4 parts744MIT
  • 2 layers34.7 × 20 mmXG Station Power MSI, the printed circuit board in 3D

    XG Station Power MSI

    osy/XG_Mobile_Station

    Open source eGPU dock for ROG Ally and ROG Flow

    4 parts712CC-BY-4.0
  • 2 layers20.3 × 24.5 mmJack power input, the printed circuit board in 3D

    Jack power input

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    4 parts546MIT