ESPPD uses the CH224K, a controller specialized in negotiating with PD-compatible supplies for one of several voltages: 5V, 9V, 12V, 15V, and 20V up to 3A of current.

You can either request a specific voltage by hardcoding a set of three jumpers on the back of the board, or connect the configuration lines of the CH224K to three of the ESP32's GPIO pins to control the voltage dynamically at runtime. The former approach is less flexible but leaves the maximum number of GPIO pins available for other functions, while the latter gives you maximum control over your interactions with the power supply.

Requesting a voltage doesn't necessarily mean that you will actually get it—some USB-C power supplies are not PD compatible, and even those that are do not necessarily support all voltages specified by the protocol. The CH224K includes a Power Good signal that can be wired to one of the ESP32's GPIO so that you can ensure that your project is getting the power it needs.

ESPPD is designed to work with Espressif's ESP32-S3-WROOM-1 module, which comes with a dual-core 240MHz Tensilica LX7 CPU, support for 2.4 GHz Wi-Fi (802.11n) and Bluetooth 5.0, and 384 KB SRAM. Various module configurations support up to 16MB of flash RAM, and 8MB of PSRAM. All but three of the ESP32's pins are exposed for use through the pin headers.

The board is compatible with Arduino IDE and PlatformIO out of the box, and can be programmed directly over USB. Outside of the USB PD functionality, it behaves just like a standard ESP32-S3 board, and all its functionality is available for you to use. If you choose to interface with the CH224K dynamically, I have included an easy-to-use library that takes all the guesswork out of requesting a voltage and checking the Power Good signal.

The ESPPD draws power for its internal circuitry using a buck regulator that can provide up to about 1A of current at 3.3V to power your peripherals and sensors without having to add a separate regulator to your projects. The buck regulator is designed to work with any USB PD voltage without overheating or sustaining damage.

The ESPPD is entirely open source and released under the MIT license. You are free to incorporate the design into your own applications without the need to pay royalties or share your modifications.

For more information, you can also check out the ESPPD Wiki pages.