PocketPD is a portable USB-C bench power supply that can fit in your pocket. Combine with a USB-C PD 3.0/3.1 power source and you can utilize the PPS profile to create a portable power supply with voltage and current adjustment.
As the DIY community has grown, there are multiple ways to implement control features like adjusting parameters via Wifi, Bluetooth, or touch screen. We want to keep the design language simple, just physical knobs and buttons to control. This will give the system higher reliability when you need it to work.
flowchart LR
A[Boot up] --> |0.5s|B[Obtain charger capability]
B --> |1.5s|C[Display capabilities]
C --> |3s|D[Normal operation]
D --> |Long Press V/I|E[Menu]
B --> |Short Press any button|D
C --> |Short Press any button|D
E --> |Long Press V/I|D
E --> |Long Press Encoder|D
D --> |Long Press ON/OFF|F[Energy Screen]
F --> |Long Press ON/OFF|D
System will display the flashed firmware version.
The system will then display the available profile from the charger. Please note that PPS profile is needed for PocketPD to fully function as a bench power supply. If your charger doesn't support pps, you will get a profile like this
After 3 seconds, the system will enter operating mode. If PPS mode exist, the system will request 5V @ 1AIf the bootup profile is not what you want, hold the Volt/Amp button (left button) for 3 seconds to enter MENU screen and select your desired profile.
When the device is at boot screen:
- Press any BUTTON, to skip to NORMAL state (operational screen)
- Rotate ENCODER, to skip to MENU state (select power profile)
- Turning the encoder to select profile
- Long press encoder to activate profile
Boot_to_Menu.mp4
- Turning the encoder to increase/decrease voltage/current
- Short press encoder to change increment from fine to coarse
- Short press Volt/Amp button to switch between adjusting Voltage or Current
- Long press Volt/Amp button to enter MENU screen
- Short press On/Off button to enable output
- Long press On/Off button to enter ENERGY screen
Normal_only.mp4
Normal_to_Energy.mp4
Normal_to_Menu.mp4
If your charger doesn't support PPS profile, PocketPD will directly boot into the first 5V PDO profile. Your menu will look like this:
- You will need VSCode with Platform IO extension.
- Before letting Platform IO pulling the pico-sdk files. Follow Important steps for Windows users, before installing Else you will encounter:
VCSBaseException: VCS: Could not process command ['git', 'clone', '--recursive', 'https://github.com/earlephilhower/arduino-pico.git', 'C:\\Users\\keylo\\.platformio\\.cache\\tmp\\pkg-installing-iypaogfn']
- Go to PlatformIO extension -> select the env matching your hardware (
HW1_0orHW1_3) -> General -> Build - Output of the build process will be in
.pio/build/HW1_0/or.pio/build/HW1_3/depending on the selected env
| Firmware Version | Hardware 1.0 (Limited) |
Hardware 1.1 | Hardware 1.2 | Hardware 1.3 (CrowdSupply) |
|---|---|---|---|---|
Release 0.8.0 |
x | |||
Release 0.9.0 |
x | |||
Release 0.9.5 |
x | |||
Release 0.9.7 |
x | x | x | x |
Release 0.9.9 |
x | x | x | x |
Release 1.0.0 |
x | x | x | x |
The main difference between HW1.0 and later versions is the change in sense resistor, from 10mOhm to 5mOhm, which changes the current reading scale. Changes from HW1.0+ are mainly connector and component rearrangement.
This is what our "Limited" version HW1.0 looks like. We had to move away from this design due to the difficulty for mass production.
Note: Firmware at and before 0.9.5 is only for PocketPD HW1.0
Step 1: Select the correct hardware version from PocketPD's Firmware Releases
- HW1.0: Also known as "Limited edition". Download
firmware_xx_HW1.0.uf2 - HW1.1+: Our standard production version. Download
firmware_xx_HW1.1.uf2
Step 2: Mount PocketPD as a drive in your computer
For macOS users:
- Method 1: (Easy)
- Short the BOOT pads at the back of the device with a tweezer in
HW1.0or hold the BOOT button inHW1.1. - Use a USB-A -> USB-C adapter, then use a USB-A -> USB-C cable to connect PocketPD to computer. PocketPD should pop up as
RPI-RP2drive.
- Short the BOOT pads at the back of the device with a tweezer in
- Method 2: (Intermediate)
- Use a USB-A -> USB-C adapter, then use a USB-A -> USB-C cable to connect PocketPD to computer. No drive will popup.
- Use any serial monitor, and start a Serial port with 1200 Baudrate. PocketPD should pop up as
RPI-RP2drive.
For Windows users:
- Method 1: (Easy)
- Short the BOOT pads at the back of the device with a tweezer in
HW1.0or hold the BOOT button inHW1.1. - Use any USB cable to connect PocketPD to computer. PocketPD should pop up as
RPI-RP2drive.
- Short the BOOT pads at the back of the device with a tweezer in
- Method 2: (Intermediate)
- Use any USB cable to connect PocketPD to computer. No drive will pop-up.
- Open Putty and open a Serial port with 1200 Baudrate. PocketPD should pop up as
RPI-RP2drive.
For Linux users:
- Method 1: (Easy)
- Short the BOOT pads at the back of the device with a tweezer in
HW1.0or hold the BOOT button inHW1.1. - Use any USB cable to connect PocketPD to computer. PocketPD enumerates as a USB mass storage device (label
RPI-RP2). - Most desktop environments auto-mount it. Otherwise locate it (e.g.
lsblk) and mount manually:sudo mount /dev/sdX1 /mnt.
- Short the BOOT pads at the back of the device with a tweezer in
- Method 2: (Intermediate)
- Use any USB cable to connect PocketPD to computer. No drive will pop-up.
- Open a serial port at 1200 Baudrate (e.g.
picocom -b 1200 /dev/ttyACM0then exit, orstty -F /dev/ttyACM0 1200). PocketPD should re-enumerate as theRPI-RP2mass storage device. Note: the port closes immediately after the baud change, so some tools may report an error — this is expected.
Step 3: Drag and drop the .uf2 file into the drive
If you build the firmware directly from VSCode, the .uf2 file will be in .pio/build/HW1_0/ or .pio/build/HW1_3/ depending on the selected PlatformIO env
Detail guide How to upload new firmware to PocketPD
We would like to thank many of our users for submitting feature requests and test feedback over the years. Special thanks to our firmware contributors for making this project better every single commit!