Skip to the content
2 layers46 × 54 mmMini power, the printed circuit board in 3D

Mini-Power is a small, portable DC power supply unit designed to provide a convenient and reliable source of adjustable voltage for your electronic devices and breadboard experiments.

Size
46 × 54 mm
Copper layers
2
Thickness
1.6 mm
Parts
52
Nets
50
Pads
217
Tracks, vias
453, 131
Pours
7
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
7 Apr 2026
Updated
8 Apr 2026

Overview

Mini power is an open-source printed circuit board by hnz1102, from the hnz1102/mini-power repository on GitHub. It is a 2-layer board of 46 × 54 mm with 52 parts on 50 nets, routed with 453 tracks and 131 vias.

It is built around the ESP32-C3-WROOM-02-N4, AP33772SDKZ-13-FA01 and PCA9306D, with the 0.1UF 50V 5*11, DMN3008SFG and MH2029-601Y among its other parts. Its parts include 19 resistors, 12 capacitors, 5 ICs, 3 connectors and 3 switches. It belongs with the power boards and the ESP32 and RISC-V boards of this library.

Main components

8

README

README.md

Mini Power for Breadboard

Mini-Power

Mini-Power is a small, portable DC power supply unit designed to provide a convenient and reliable source of adjustable voltage for your electronic devices and breadboard experiments. Powered from a USB Power Delivery (PD) charger, it supports both Standard Power Range (SPR) and Extended Power Range (EPR) modes, making it perfect for electronics developers, students, and anyone who needs a compact bench power supply.

Key Features

  • Easy access to the breadboard: both sides accessible via standard 2.54mm pitch pin headers.
  • USB PD support: 5V to 28V output using the AP33772S PD Sink Controller.
  • Variable voltage: 0.1V steps using PPS APDO, with automatic fallback to the nearest Fixed PDO.
  • Real-time display: SSD1306 128×64 OLED showing output voltage, measured voltage, current, power, WiFi status, and buffer usage.
  • Data logging: Measurements sent to InfluxDB over WiFi (InfluxDB Line Protocol, HTTPS).
  • Remote syslog: RFC 5424 over UDP for monitoring and troubleshooting.
  • HTTP web interface: Real-time graphs (Chart.js), voltage control, and output ON/OFF toggle from any browser on the local network.
  • Three-button interface: Up / Down / Center push buttons for direct voltage adjustment and output control.
  • NVS persistence: Last voltage setting is saved to flash and restored on reboot.
  • Safety protections: OVP, UVP, OCP (in AP33772S hardware) plus software current/power limits and voltage overshoot detection (>110% of setpoint).

Hardware Components

ReferencePartDescription
U103ESP32-C3-WROOM-02-N4Main microcontroller (RISC-V, built-in WiFi, 4MB flash)
U104AP33772SDKZ-13-FA01USB Power Delivery Sink Controller (SPR + EPR), QFN4040-24
U102SSD1306Monochrome OLED display (128×64 pixels, I2C)
U101PCA9306DDual bidirectional I2C voltage-level translator (SSOP-8)
U105NJW1933F1Synchronous step-down DC/DC converter for 3.3V supply (SOT-23-6)
Q101, Q102DMN3008SFGDual N-channel MOSFET for output switching (PowerDI3333-8)
J101USB4105-GF-AUSB Type-C connector (input)
J102, J1032×2 pin headerOutput terminals (UPPER OUT / LOWER OUT), 2.54mm pitch
SW101–SW103TS-06104Push buttons: Up (GPIO10), Down (GPIO20), Center (GPIO21)
R1105mΩ shunt resistorCurrent sensing resistor (2512 package)
L10122µHInductor for DC/DC converter
D101LED (Blue)Status indicator
D102SK36A-LTPSchottky diode (SMA)
FB101MH2029-601YFerrite bead for EMI filtering

Schematic and PCB files are in the hardware/ directory. The board is designed with KiCad. A PDF export of the schematic is available at hardware/schematic.pdf.

The ap33772s-driver crate is used for all USB-PD communication with the AP33772S controller.

Software Architecture

The firmware is written entirely in Rust using the ESP-IDF framework.

FileResponsibility
main.rsStartup, peripheral init, NVS load/save, main control loop
usbpd.rsAP33772S PD driver wrapper (PDO negotiation, custom voltage request, VOUT control)
displayctl.rsSSD1306 OLED driver, display thread, PDO list screen
currentlogs.rsIn-memory ring buffer (up to 127 records) for voltage/current/power/temp data
transfer.rsInfluxDB Line Protocol HTTP transfer thread
httpserver.rsHTTP server, REST API (/api/status, /api/voltage, /api/output, /api/pdos), embedded HTML/JS
keyevent.rsGPIO key scanner (10ms polling, 100ms guard time) with long-press detection
wifi.rsWiFi connection, RSSI monitoring, automatic reconnect
syslogger.rsRFC 5424 UDP syslog, replaces the default ESP console logger

How to Use the Unit

Basic Operation

  1. Connection: Connect a USB-C PD charger*1 to the input port.
  2. Power On: The unit negotiates PD profiles and scrolls through the available PDO list on the display.
  3. Main Screen: After getting a IP address from DHCP server*2, the display shows output voltage, current, power, WiFi RSSI, IP address(last two octets)and buffer usage.
  4. Voltage Selection: Press Up(yellow) or Down(blue) to increase/decrease the target voltage in 0.1V steps.
  5. Output Control: Press Center(red) to toggle output ON/OFF.
  6. Monitoring: View real-time measurements on the OLED display or open http://<device-ip>/ in a browser.

Note *1: When it doesn't connect to the PD charger, the display will show "No PD Power". Click the up/down buttons to show main screen. It only can output 5V. *2: If it can't connect to WiFi, the display will show the main screen after 30 seconds, but without IP address and RSSI.

Button Controls

ButtonGPIOFunction
UpGPIO10Increase output voltage by 0.1V
DownGPIO20Decrease output voltage by 0.1V
CenterGPIO21Toggle output ON/OFF

OLED Display

The SSD1306 128×64 monochrome OLED display is divided into several regions as shown below.

display layout

AreaContentDetail
V:xx.xVMeasured voltageRead from AP33772S (updated every 100ms when output ON)
I:xx.xAMeasured currentRead from AP33772S (updated every 100ms when output ON)
SET:xx.xVTarget output voltageBlinks while PD voltage negotiation is in progress
P:xx.xW / P:xx.xmWMeasured powerAuto-range: switches between mW and W (threshold 0.5W / 1.0W)
OUTPUT / STOPPEDOutput stateOUTPUT shown inverted (white on black) when output is ON
IP addressLast two octets of device IPe.g. IP:2.142 for 192.168.2.142
Buffer barInfluxDB send buffer usage60px wide bar; fills left-to-right as records accumulate (max 127)
xxx%Buffer usage percentageDisplayed to the right of the buffer bar
WiFi iconWiFi signal strength5-level icon (wifi-0 to wifi-4) based on RSSI; animated while connecting
+xx dBmRSSI valueShown below WiFi icon when connected
Voltage bar (right edge)PDO voltage rangeVertical bar showing min–max PD voltage; Variable/PPS range filled, Fixed PDO voltages marked as horizontal lines; current SET voltage shown as a longer line marker

Startup sequence:

  1. At boot, the PDO list screen is shown first — all Power Data Objects negotiated with the charger are listed (voltage, current, max power, type). Each page is shown for 3 seconds.
  2. After PDO display completes, the main screen appears.
  3. Error / warning messages (e.g. Voltage Overshoot, Current OV x.xxxA) replace the main screen temporarily and auto-dismiss after 3 seconds.

HTTP Web Interface

When connected to WiFi, open http://<device-ip>/ (IP shown on OLED display) to access:

  • Live voltage, current, and power readings updated every second
  • Real-time voltage and current graph (Chart.js)
  • PDO table showing all available power profiles from the charger
  • Voltage control with +/− buttons (0.1V step)
  • Output ON/OFF toggle

webui

Safety Protections

ProtectionMechanism
Over Voltage Protection (OVP)AP33772S hardware
Under Voltage Protection (UVP)AP33772S hardware
Over Current Protection (OCP)AP33772S hardware
Software current limitOutput disabled if current exceeds max_current_limit
Software power limitOutput disabled if power exceeds max_power_limit
Voltage overshoot detectionOutput disabled if measured voltage > 110% of setpoint

How to Build from Code and Install to the Unit

Using Ubuntu 22.04 LTS

1. Install Rust Compiler

bash
sudo apt update && sudo apt -y install git python3 python3-pip gcc build-essential \
  curl pkg-config libudev-dev libtinfo5 clang libclang-dev llvm-dev udev libssl-dev python3.10-venv nano
bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Select option 1 (default install)
bash
source "$HOME/.cargo/env"

2. Install toolchain for ESP32-C3

bash
cargo install ldproxy
cargo install cargo-binstall
cargo install espup
espup install
espup update
. ./export-esp.sh
cargo binstall cargo-espflash

3. Add UDEV rules

bash
sudo sh -c 'echo "SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"303a\", ATTRS{idProduct}==\"1001\", MODE=\"0666\"" \
  > /etc/udev/rules.d/99-esp32.rules'
sudo udevadm control --reload-rules
sudo udevadm trigger

4. Clone the repository

bash
git clone https://github.com/hnz1102/mini-power.git
cd mini-power/code

5. Configure WiFi and InfluxDB

bash
cp cfg.toml.samp cfg.toml
nano cfg.toml
toml
[mini-power]
wifi_ssid = "YOUR_WIFI_SSID"
wifi_psk = "YOUR_WIFI_PASSWORD"
influxdb_server = "192.168.x.x:8086"
influxdb_api_key = "<YOUR_API_KEY>"
influxdb_api = "/api/v2/write?org=<ORG>&bucket=LOGGER&precision=ns"
influxdb_measurement = "minipower"
influxdb_tag = "ch"
max_current_limit = "5.2"
max_power_limit = "100.0"
max_temperature = "75"
syslog_server = "192.168.x.x:514"
syslog_enable = "false"

6. Connect the board and verify

bash
cargo espflash board-info
# Select /dev/ttyACM0
# Expected: Chip type: esp32c3, Flash size: 4MB

7. Build and flash

bash
cargo espflash flash --release --monitor

The device boots automatically after flashing. The OLED display will show the PDO list negotiated with the charger, then switch to the main monitoring screen.

How to Install InfluxDB and Configure the Dashboard

1. Download and install InfluxDB

bash
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.0-amd64.deb
sudo dpkg -i influxdb2-2.7.0-amd64.deb
sudo service influxdb start

2. Initial configuration

Open http://<server-ip>:8086. Click GET STARTED and set:

TermValue
UsernameAdmin login username
PasswordAdmin login password
Initial Organization Namee.g. ORG
Initial Bucket NameLOGGER

3. Get the API Token

Copy the Operator API Token shown after setup — you will not see it again. To generate a new token later: API Tokens → GENERATE API TOKEN → All access token.

4. Import the Dashboard Template

Click Dashboard → CREATE DASHBOARD → Import Dashboard. Drop the influxdb/mimi-power.json file into the import dialog, then click IMPORT JSON AS DASHBOARD.

You will see the Mimi-POWER dashboard. It contains three time-series graphs:

ChartFieldUnit
VoltagevoltageV
CurrentcurrentA
PowerpowerW

All charts query the LOGGER bucket, measurement minipower, tag tag = "ch".

dashboard

5. Start logging

Enable the output on the Mini-Power unit (Center button or web interface). Measurement data will be sent to InfluxDB and appear on the dashboard in real-time.

Schematic and PCB Data

The PCB is designed with KiCad. All hardware design files are in the hardware/ directory.

File / DirectoryDescription
hardware/schematic.pdfSchematic PDF (for viewing without KiCad)
hardware/mini-power.kicad_schKiCad schematic source
hardware/mini-power.kicad_pcbKiCad PCB layout
hardware/bom.csvBill of Materials
hardware/production/Gerber files for PCB manufacturing (mini-power.kicad_pcb_gerber.zip)

3D Printed Enclosure

The enclosure design files are in the hardware/Container/ directory.

FileDescription
body.3mfMain enclosure body
upper.3mfTop cover
button.3mfButton cap for the three push switches
mini-power.f3dFusion 360 source file

All parts are designed for FDM 3D printing. Print body.3mf, upper.3mf, and three copies of button.3mf.

License

This source code is licensed under MIT. Other Hardware Schematic documents are licensed under CC-BY-SA V4.0.

Parts

52
QtyValueFootprintReferences
810KResistor_SMD:R_0603_1608MetricR101, R105, R107, R111, R117, R118, R119, R120
50.1uF/50VCapacitor_SMD:C_0603_1608MetricC102, C103, C105, C106, C108
310uF/50VCapacitor_SMD:C_0805_2012MetricC104, C107, C111
35K1Resistor_SMD:R_0603_1608MetricR103, R104, R116
3TS-06104Library:TS-06104SW101, SW102, SW103
21uFCapacitor_SMD:C_0805_2012MetricC101, C110
24.7KResistor_SMD:R_0603_1608MetricR108, R109
2DMN3008SFGPackage_SON:Diodes_PowerDI3333-8Q101, Q102
1100Resistor_SMD:R_0603_1608MetricR114
110RResistor_SMD:R_0603_1608MetricR112
11KResistor_SMD:R_0603_1608MetricR106
12.2uF/50VCapacitor_SMD:C_0603_1608MetricC109
1200KResistor_SMD:R_0603_1608MetricR102
122uHLibrary:L_CHPH4D19FNPL101
13K09Resistor_SMD:R_0603_1608MetricR115
13V3TestPoint:TestPoint_Pad_D1.0mmTP103
147uFCapacitor_SMD:C_0805_2012MetricC112
15VTestPoint:TestPoint_Pad_D1.0mmTP101
15mResistor_SMD:R_2512_6332Metric_Pad1.40x3.35mm_HandSolderR110
1AP33772SDKZ-13-FA01Library:W-QFN4040-24_Type_A1_DIOU104
1ESP32-C3-WROOM-02-N4Library:IC18_ESP32-C3-WROOM-02-N4_EXPU103
1LED BLUELED_SMD:LED_0603_1608MetricD101
1LOWER OUTConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ103
1MH2029-601YInductor_SMD:L_0805_2012MetricFB101
1NJW1933F1Package_TO_SOT_SMD:SOT-23-6U105
1PCA9306DPackage_SO:SSOP-8_2.95x2.8mm_P0.65mmU101
1SK36A-LTPDiode_SMD:D_SMAD102
1SSD1306_DISPLAYLibrary:OLED I2C DISPLAYU102
1SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP101
1UPPER OUTConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ102
1USB4105-GF-ALibrary:USB_C_5077CR-16-SMC2-BK-TRJ101
1VDDTestPoint:TestPoint_Pad_D1.0mmTP102

Similar boards

  • 2 layers122.2 × 122.8 mmDcpower, the printed circuit board in 3D

    Dcpower

    hnz1102/dcpower

    DC Power Unit for Breadboard based on ESP32-S3 microcontroller and AP33772S USB Power Delivery (PD) Sink Controller.

    115 parts1
  • 4 layers70 × 70 mmWindsensor, the printed circuit board in 3D

    Windsensor

    kristofkatzenberger/windsensor

    This repository contains the design files for a portable wind sensor developed in 2025/26 at the University of Applied Sciences Technikum Wien. This project was completed as part of the Bachelor's Thesis:

    128 partsMIT
  • 2 layers30 × 43 mmCurrentmeter, the printed circuit board in 3D

    Currentmeter

    hnz1102/mini-current-meter

    Mini Current Meter using INA228A ultra-precise digital power monitor

    40 parts10
  • 2 layers40 × 60 mmWakepc, the printed circuit board in 3D

    Wakepc

    hnz1102/wakepcbox

    Wake on LAN Controller Box

    45 parts4
  • 4 layers216 × 144 mmSheet1, the printed circuit board in 3D

    Sheet1

    motor-and-motion-control-lab/mmlab-12PhaseDrive-388Slave

    PCB Electronics for Humanoid Robots and Bearingless Motor Systems

    620 parts3GPL-3.0
  • 2 layers185 × 98 mmMosfetload, the printed circuit board in 3D

    Mosfetload

    hnz1102/electricload

    Electric Load and Logger

    96 parts5
  • 2 layers93 × 50 mmSsh bridge for raspberrypi, the printed circuit board in 3D

    Ssh bridge for raspberrypi

    hnz1102/ssh-serial-bridge

    Firmware for the ESP32-S3 that bridges an SSH connection (over Wi-Fi) to UART and USB CDC serial ports. Written in Rust (esp-idf-hal / esp-idf-svc) with a C component (wolfSSH) for the SSH server.

    37 parts3
  • 2 layers139 × 64 mmEEW display, the printed circuit board in 3D

    EEW display

    hnz1102/EEW-display

    ESP32-S3 firmware for a small earthquake-information display. It shows recent earthquakes and emergency earthquake warnings (緊急地震速報, EEW) from [P2P地震情報](https://www.p2pquake.net/), draws the epicenters on a Google map…

    47 parts

Questions

How big is the Mini power PCB?

It measures 46 × 54 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Mini power use?

52 parts, built around the ESP32-C3-WROOM-02-N4, AP33772SDKZ-13-FA01, PCA9306D and 0.1UF 50V 5*11. 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 Mini power KiCad files?

From the hnz1102/mini-power repository on GitHub, at the commit this page was made from: the board is hardware/mini-power.kicad_pcb and its schematic hardware/mini-power.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Mini power design in my own project?

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