

Pump controller
Pump
- Size
- 59 × 34.5 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 53
- Nets
- 104
- Pads
- 273
- Tracks, vias
- 634, 64
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 10 Jan 2025
- Updated
- 23 Aug 2025
Overview
Pump controller is an open-source printed circuit board by nfranzwa, from the nfranzwa/OscillatingPump repository on GitHub, published under the Apache-2.0 licence. It is a 4-layer board of 59 × 34.5 mm with 53 parts on 104 nets, routed with 634 tracks and 64 vias.
It is built around the MAX3075EM/TR, TPS62162DSG and TPS62163DSG, with the PTVS7V5Z1USKYL and IRF9540NS among its other parts. Its parts include 17 capacitors, 13 connectors, 11 resistors, 4 ICs and 3 diodes. It belongs with the STM32 boards of this library.
Main components
5MAX3075EM/TR
SOP-8-40℃~+85℃ 1 1 3.15V~3.45V 500Kbps Transceiver SOP-8 RS-485 / RS-422 ICs ROHSHGSEMIRS-485 / RS-422 ICsTPS62162DSG
SON83V-17V 1A Step-Down Converter, High Accuracy, with DCS-Control Output Voltage 3.3VTexas InstrumentsUncategorisedTPS62163DSG
SON83V-17V 1A Step-Down Converter, High Accuracy, with DCS-Control Output Voltage 5VTexas InstrumentsUncategorisedPTVS7V5Z1USKYL
060313.5V 17A 230W 7.5V 8.33V TVS 0603 ESD and Surge Protection (TVS/ESD) ROHSNexperiaUncategorisedIRF9540NS
TO-263MOSFETsMinos
README
README.mdUCSD MAE 156 Capstone Project
Link to UCSD Capstone Project Overview https://sites.google.com/eng.ucsd.edu/mae156b-2025winter-team06
The provided code was developed using Arduino IDE and the Platform.io extension on VS Code. While it is possible to flash/deploy our software to an ESP32 through other means, we heavily recommend the two for ease of installing dependencies and following subsequent instructions.
Setup
In order to flash the GPIO ESP or Web ESP, first make a local copy of the most recent version of this repository by clicking <Code> and either:
- Copying and running the command in terminal (requires github cli installation or git)
- Opening through Github Desktop (requires installing the Github Desktop app)
- Downloading and extracting the code from a .zip file
The next steps assume you have a local copy of the provided code.
Installing Libraries
GPIO ESP
Click the Platform IO icon on the left edge of VS Code, then navigate to Quick Access > PIO Home > Projects & Configuration.
Select Add Existing.
Navigate to the directory drive/path/to/repository/OscillatingPump/ESP32_CTRL and select Open "ESP32_CTRL.
Shortly, Platform IO should be setting up the project according to the platform.ini file in the selected folder, most importantly installing libraries that are used in the project.
Web ESP
Open the Arduino sketch named webesp.ino located in /WebappCode/webesp/webesp/.
Navigate to the library manager.
Search for and install the following libraries:
- Arduino_JSON by Arduino
- Async TCP by ESP32Async
- ESP Async WebServer by ESP32ASync
- EspSoftwareSerial by Dirk Kaar, Peter Lerup
In the top menu, Navigate to Sketch > Include Library, and include the following:
- WiFi
- LittleFS
The next step is to install ESP32 LittleFS uploader to the Arduino IDE.
Go to [[https://github.com/earlephilhower/arduino-littlefs-upload/releases]] and download the latest version of arduino-littlefs-upload-x.x.x.vsix.
Windows:
- In File Explorer, navigate to
C:\Users\<username>\.arduinoIDE\ - Create a folder called
pluginsif it doesn't already exist. - Move the downloaded
.vsixfile into this folder.
Mac OS:
- In Finder, navigate to
~/.arduinoIDE - Create a new folder called
plugins - Move the downloaded
.vsixfile into this folder.
Restart the Arduino IDE, and make sure the plug-in was successfully installed by opening the command palette with Ctrl/Cmd + Shift + P and ensuring Upload LittleFS to Pico/ESP8266/ESP32 is an available command.
Uploading/Deploying code to the ESP32's
With the environments and libraries set up, one can compile and deploy the code through the following procedures.
GPIO ESP
On the bottom bar, ensure that the Platform IO project is ESP32_CTRL and you are deploying to the right COM port (leave as Auto unless multiple ESP's are connected to same computer).
The code will be compiled and deployed to the ESP32 when pressing the → button.
- one can also compile the code without deploying by pressing the
✓button.
A new terminal should open within VS Code, displaying compile messages. When the terminal says Connecting...
Press and hold the Boot button on the ESP until the terminal shows that code is being written to the ESP32.
Web ESP
First, Go to Sketch > Show Sketch Folder and ensure that the data/ folder from our repository is there. This contains files that are to be uploaded to the ESP32 filesystem.
Open the command palette and run Upload LittleFS to Pico/ESP8266/ESP32.
After getting a Completed upload message, compile and deploy the sketch to the ESP32 by pressing the → button.
- one can also compile the code without deploying by pressing the
✓button.
When the terminal says Connecting...
Press and hold the Boot button on the ESP until the terminal shows that code is being written to the ESP32.
Troubleshooting code
If the ESP's are consistently not behaving as expected, we provide debugging statements through Serial Monitors, which can be accessed through the Command Palette of both VS Code and Arduino IDE.
Issues to check may include whether an ESP is:
- constantly restarting (stuck in a boot loop)
- unable to communicate through serial with the other ESP
- some particular features are not behaving as expected
- error codes being thrown by an ESP
The GPIO ESP has an ongoing task that reads the Serial port between the computer and ESP, providing the user with the following inputs and features:
| User Input | Feature |
|---|---|
debug | toggles debugging statements for Serial communication between ESPs |
cal debug | toggles debugging statements for during calibration |
wave debug | toggles debugging statements for wave generation |
show pm | prints out the current pressure map vector |
m:#.## M:#.## | manually overwrite the target min and max pressure |
c:# | manually overwrite the calibration state |
Parts
53| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 0.1 uF | Capacitor_SMD:C_0402_1005Metric | C6, C10, C13, C14, C15, C16, C18, C19, C20, C21, C22 |
| 8 | Conn_01x04_Pin | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1, J2, J10, J12, J13, J17, J22, J23 |
| 3 | 10k | Resistor_SMD:R_0402_1005Metric | R8, R9, R10 |
| 3 | 22 | Resistor_SMD:R_0402_1005Metric | R2, R3, R7 |
| 3 | Conn_01x02_Pin | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J21, J25, J30 |
| 2 | 10 uF | Capacitor_SMD:CP_Elec_10x10.5 | C23, C25 |
| 2 | 100k | Resistor_SMD:R_0402_1005Metric | R11, R12 |
| 2 | 2.2 uF | Capacitor_SMD:C_0402_1005Metric | C2, C3 |
| 2 | 2.2 uH | Inductor_SMD:L_0805_2012Metric | L3, L4 |
| 2 | 22 uF | Capacitor_SMD:C_0805_2012Metric | C24, C26 |
| 2 | 5100 | Resistor_SMD:R_0402_1005Metric | R4, R5 |
| 2 | PTVS7V5Z1USK | Diode_SMD:Nexperia_DSN1608-2_1.6x0.8mm | D3, D5 |
| 1 | 120 | Resistor_SMD:R_0402_1005Metric | R6 |
| 1 | 1N5819 | Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal | D6 |
| 1 | 5A | Fuse:Fuse_0805_2012Metric | F2 |
| 1 | Conn_01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | J28 |
| 1 | IRF9540N | Package_TO_SOT_THT:TO-220-3_Vertical | Q2 |
| 1 | MAX3075E | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U4 |
| 1 | STM32H723VGTx | Package_QFP:LQFP-100_14x14mm_P0.5mm | U2 |
| 1 | SW_Push_Open | Button_Switch_SMD:SW_SPST_TL3342 | SW1 |
| 1 | TPS62162DSG | Package_SON:WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm_ThermalVias | U6 |
| 1 | TPS62163DSG | Package_SON:WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm_ThermalVias | U5 |
| 1 | USB_C_Receptacle_USB2.0_14P | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J15 |
More from nfranzwa/OscillatingPump
1- 2 layers68 × 91.5 mm

Similar boards
- 4 layers100 × 46 mm

- 4 layers101.6 × 53.3 mm

H730duino
martinribelotta/h730duino
STM32H7 Arduino form factor and software compatible board
111 parts47MIT - 4 layers101.6 × 53.3 mm

- 4 layers58.7 × 31 mm

PowerBoardToid
codujla/PowerBoard
Power management board that converts a 4S Li-ion battery into multiple regulated voltage rails using integrated DC-DC converters, with built-in protection against overvoltage, overcurrent, and reverse polarity.
31 parts - 2 layers75 × 25 mm

- 2 layers97.8 × 58.3 mm

- 2 layers

Stm32-tutorial project
CanSource/STM32G4-tutorial-project
A tutorial for microcontroller hardware design with the STM32 G4 (in KiCAD)
72 parts1CERN-OHL-P-2.0 - 2 layers61.7 × 55.2 mm

Stm motor driver
yogendra-kumawat/stm-motor-driver
STM32 carrier board with dual DRV8833 motor drivers, onboard power management, and full GPIO breakout
23 partsMIT
Questions
How big is the Pump controller PCB?
It measures 59 × 34.5 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Pump controller use?
53 parts, built around the MAX3075EM/TR, TPS62162DSG, TPS62163DSG and PTVS7V5Z1USKYL. 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 Pump controller KiCad files?
From the nfranzwa/OscillatingPump repository on GitHub, at the commit this page was made from: the board is KiCad/pump_controller/pump_controller.kicad_pcb and its schematic KiCad/pcbfrfr/pcbfrfr.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Pump controller design in my own project?
Its repository publishes it under the Apache-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).