Skip to the content
PCBKitNew board
4 layers20.5 × 50.8 mmPicoPD Pro, the printed circuit board in 3D

Repo for PicoPD Pro hardware/software and documentation

Size
20.5 × 50.8 mm
Copper layers
4
Thickness
1.6 mm
Parts
63
Nets
86
Pads
305
Tracks, vias
556, 94
Pours
13
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
7 Dec 2024
Updated
27 Jul 2025

Overview

PicoPD Pro is an open-source printed circuit board by CentyLab, from the CentyLab/PicoPD_Pro repository on GitHub. It is a 4-layer board of 20.5 × 50.8 mm with 63 parts on 86 nets, routed with 556 tracks and 94 vias.

It is built around the RP2040, AON7262E and BSS138. Its parts include 23 capacitors, 21 resistors, 9 ICs, 2 diodes and 2 transistors. It belongs with the RP2040 boards of this library.

Main components

3

README

README.md

PicoPD Pro

Pico PD Pro is a development board for USB Power Delivery development with Raspberry Pi Pico footprint. The board can help you negotiate voltage from USB PD 3.1 with PPS (programable power supply) and AVS (Adjustable Voltage Supply) up to 5A of current at 30V max. The board feature input current/voltage/temperture reading as well as power switch to cut of the current to external devices. The 30V voltage limit is the max input voltage of the AP33772S IC.

Quick links

AP33772S Cpp Library

AP33772S CircuitPython Library -> Big thanks to @hansendc

PicoPD Pro Pinout

Setup for AP33772S objects

Basic AP33772S functions

Important note

Arduino IDE setup

VSCode PlatformIO setup

Enable Serial print for debugging

PicoPD Pro Pinout

pinout

Setup for AP33772S objects

To use AP33772 IC with the library, first you need to create a usbpd object. Then set up your I2C pins and start collecting the power profiles from your charger. Ensure your delay after Wire.begin() is more than 500ms for stable PDOs request. Enable pin 23 to allow VBUS pass-through.

text
AP33772S usbpd; // Automatically wire to Wire0

void setup()
{
  Wire.setSDA(0); // Set the correct SDA0 pin
  Wire.setSCL(1); // Set the correct SCL0 pin
  Wire.begin();
  Serial.begin(115200);
  delay(1000); 		// Delay is needed for the IC to obtain PDOs
  usbpd.begin(); 	// Start pulling the PDOs from power supply

  pinMode(25, OUTPUT); // Built in LED

  usbpd.printPDO(); //Print out PDO to Serial port
  usbpd.setOutput(0); // Turn off output switch
}

Basic AP33772S functions

Common functions are:

text
displayProfiles(); //Print out PDOs in Serial
mapPPSAVSInfo();
setFixPDO(int pdoIndex, int max_current);
setPPSPDO(int pdoIndex, int target_voltage, int max_current);
setAVSPDO(int pdoIndex, int target_voltage, int max_current);
setOutput(uint8_t flag);

readVoltage();      //Return voltage in mV
readCurrent();      //Return current in mA      
readTemp();         //Return temperature in C                          

Important note

Calling usbpd.displayProfiles() without Serial.begin() can soft-brick your PicoPD. Causing the IC to be non-recognizable by your computer. You will have to use PicoProbe to reflash the chip. Check out @Patronics PicoProbePCB if you would like to make a stable fixture for firmware debugging.

If you want to use PicoPD Pro as an AP33772S evalulation board with your own micro-controller, flash the board with AP33772S_Eval.uf2 using the drag and drop method. This firmware will config GP0 and GP1 as INPUT to prevent I2C interferance with your own add on micro-controller like ESP32 or STM32.

Enable Serial Debug

To enable Serial debug, there are 2 main methods:

Using USB-C Power/Data splitter (easiest): Use a USB-C Splitter that separates the USB 2.0 signal into another USB-C port. You only need USB 2.0 FullSpeed (12Mbps) for the job, but never hurts to get extra speed if needed later.

Using UART communication: Make sure you are not using GP0 and GP1 as they are reserved for I2C0 channel for AP33772 IC. Check out Youtube tutorial: Talk to Your Pico Over Serial

Arduino IDE setup

Open Arduino IDE, select File -> Preference Preference

Copy this line below and place in "Aditional Boards Manager URLs" -> OK. This will allow you to pull the Earlephilhower Pico core that work with the AP33772 library.

text
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

boardmanagerURL

From Board Manager, search for "Pico" and install the "Raspberry Pi Pico/RP2040" core by Earlephilhower

boardmanager

Now from Tool -> Board -> Raspberry Pi Pico/RP2040 -> Raspberry Pi Pico

boardmanager

Now download the latest AP33772 library as a Zip file

text
https://github.com/CentyLab/AP33772S-Cpp

ap33772lib

Import the AP33772S library into your Arduino IDE. Sketch -> Include library -> Add .ZIP Library ...

importlib

Now you start using the Example code in File -> Examples -> AP33772-Cpp-main. The example is ready to compile and flash on to your PicoPD. importlib

Now you can plug in your USB-C cable with Power Delivery 2.0/3.0/3.1. If you also like to have serial print out, check out Enable Serial print for debugging.

VSCode PlatformIO setup

After VSCode installation, you will need to install PlatformIO extension.

installplatform

Now create a new PlatformIO project

  • Name:WhatEverYouWantToCallit
  • Board: Pico (RasberryPi)
  • Framework: Arduino (default)

Click "Finish"

newproject

boardandframework

In your new project, copy this and replace everything in platformio.ini. This is how you ask PlatformIO to compile using Earlephilhower Pico core, and enable upload via USB.

text
[env:pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
board_build.core = earlephilhower

;; If directly upload from PC
upload_protocol = picotool

Now download the latest AP33772 library as a Zip file. Unzip and place the folder in lib

text
https://github.com/CentyLab/AP33772S-Cpp

ap33772lib

Your lib folder should look like this

libstructur

To try out example code, you copy the content inside lib/Compiled for PicoPD/PPSCycling/PPSCycling.ino, And replace everything in your src/main.cpp

maincpp

Now you can plug the PicoPD to your computer via USB-C and hit the upload button. After this, you will have to connect a charger to PicoPD to see the voltage cycling example. If you also like to have serial print out, check out Enable Serial print for debugging.

maincpp

Parts

63
QtyValueFootprintReferences
12100nFCapacitor_SMD:C_0402_1005MetricC2, C3, C6, C9, C10, C11, C12, C14, C15, C16, C17, C19
85.1kResistor_SMD:R_0402_1005MetricR1, R2, R3, R4, R5, R6, R19, R21
510kResistor_SMD:R_0402_1005MetricR9, R10, R14, R18, R20
31kResistor_SMD:R_0402_1005MetricR8, R13, R15
327RResistor_SMD:R_0402_1005MetricR11, R12, R16
210uCapacitor_SMD:C_1206_3216MetricC4, C5
21uCapacitor_SMD:C_0603_1608MetricC1, C24
22.2uFCapacitor_SMD:C_0402_1005MetricC13, C18
222uCapacitor_SMD:C_0805_2012MetricC20, C25
230pFCapacitor_SMD:C_0402_1005MetricC7, C8
2AON7262ETransistor_MOSFET:DFN-8(3.3x3.3)U5, U6
2BSS138Package_TO_SOT_SMD:SOT-323_SC-70Q1, Q2
2GREENLED_SMD:LED_0603_1608MetricD1, D2
2~Centy_Miscellaneous:Button_3.2x2.5U8, U9
112MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
13.3uInductor_SMD:L_Wuerth_MAPI-4020L1
133nCapacitor_SMD:C_0603_1608MetricC23
152.3kResistor_SMD:R_0402_1005MetricR17
15mResistor_SMD:R_0805_2012MetricR7
1AP2204K-3.3Package_TO_SOT_SMD:SOT-23-5U7
1AP33772SInterface_USBC:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU1
1LOGOLogo:CentyLab_logoG***
1PICO_PINOUTCenty_Miscellaneous:PicoPD_PinoutJ2
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU4
1TPS62933DRLRPower_Converter:SOT583U10
1Thermistor_NTCResistor_SMD:R_0402_1005MetricTH1
1USB_C_Receptacle_USB2.0_16PConnector_USBC:USB_C_GSwitchJ1
1W25Q16JVUXIQ_TRCenty_Miscellaneous:8-USONU3

Questions

How big is the PicoPD Pro PCB?

It measures 20.5 × 50.8 mm and has 4 copper layers, 1.6 mm thick.

What parts does the PicoPD Pro use?

63 parts, built around the RP2040, AON7262E and BSS138. 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 PicoPD Pro KiCad files?

From the CentyLab/PicoPD_Pro repository on GitHub, at the commit this page was made from: the board is Hardware/Hardware.kicad_pcb and its schematic Hardware/Hardware.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PicoPD Pro design in my own project?

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

Similar boards

  • 2 layers24.4 × 35.8 mmRotoPD, the printed circuit board in 3D

    RotoPD

    CentyLab/RotoPD

    Repo for RotoPD hardware and documentation

    44 parts176
  • 4 layers135.1 × 56.9 mmAfterburner, the printed circuit board in 3D

    Afterburner

    CelestineOverflow/Afterburner_PCB

    PCBA Files

    144 partsGPL-3.0
  • 2 layers202.8 × 70.6 mmAir1304, the printed circuit board in 3D

    Air1304

    Keyaan-07/A1304

    16 parts
  • 4 layers166.1 × 125.6 mmLattePanda Mu carrier board, the printed circuit board in 3D

    LattePanda Mu carrier board

    hugoNN1001/LattePanda-Mu-Custom-Carrier-Board

    Personal project, work in progress - Learning digital high-speed PCB design by designing a custom carrier board for the LattePanda Mu - based on the reference design: https://github.com/LattePandaTeam/LattePanda-Mu

    240 parts
  • 4 layers60 × 45 mmHotplate, the printed circuit board in 3D

    Hotplate

    Keyaan-07/Hotplate

    Check out the Project's files on KiCanvas(PCB and Heating element) and Onshape!

    85 partsMIT
  • 6 layers85 × 55 mmMini server, the printed circuit board in 3D

    Mini server

    Keyaan-07/Zenith

    A battery powered single board computer capable of running linux

    159 partsMIT
  • 4 layers93.5 × 94.5 mmRC Buggy, the printed circuit board in 3D

    RC Buggy

    TheFlocke/rc-buggy

    Autonomous rover with BLE control and robotic arm, built for a DLR high school competition.

    162 partsGPL-3.0
  • 4 layers74 × 104 mmBeepy, the printed circuit board in 3D

    Beepy

    sqfmi/beepy-hardware

    Beepy Hardware

    160 parts348MIT