Skip to the content
4 layers59 × 34.5 mmPump controller, the printed circuit board in 3D

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

5

README

README.md

UCSD 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.

image

Select Add Existing.

image

Navigate to the directory drive/path/to/repository/OscillatingPump/ESP32_CTRL and select Open "ESP32_CTRL.

image

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.

image

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

image

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:

  1. In File Explorer, navigate to C:\Users\<username>\.arduinoIDE\
  2. Create a folder called plugins if it doesn't already exist.
  3. Move the downloaded .vsix file into this folder.

Mac OS:

  1. In Finder, navigate to ~/.arduinoIDE
  2. Create a new folder called plugins
  3. Move the downloaded .vsix file 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).

image

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 InputFeature
debugtoggles debugging statements for Serial communication between ESPs
cal debugtoggles debugging statements for during calibration
wave debugtoggles debugging statements for wave generation
show pmprints out the current pressure map vector
m:#.## M:#.##manually overwrite the target min and max pressure
c:#manually overwrite the calibration state

Parts

53
QtyValueFootprintReferences
110.1 uFCapacitor_SMD:C_0402_1005MetricC6, C10, C13, C14, C15, C16, C18, C19, C20, C21, C22
8Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1, J2, J10, J12, J13, J17, J22, J23
310kResistor_SMD:R_0402_1005MetricR8, R9, R10
322Resistor_SMD:R_0402_1005MetricR2, R3, R7
3Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ21, J25, J30
210 uFCapacitor_SMD:CP_Elec_10x10.5C23, C25
2100kResistor_SMD:R_0402_1005MetricR11, R12
22.2 uFCapacitor_SMD:C_0402_1005MetricC2, C3
22.2 uHInductor_SMD:L_0805_2012MetricL3, L4
222 uFCapacitor_SMD:C_0805_2012MetricC24, C26
25100Resistor_SMD:R_0402_1005MetricR4, R5
2PTVS7V5Z1USKDiode_SMD:Nexperia_DSN1608-2_1.6x0.8mmD3, D5
1120Resistor_SMD:R_0402_1005MetricR6
11N5819Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD6
15AFuse:Fuse_0805_2012MetricF2
1Conn_01x02TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ28
1IRF9540NPackage_TO_SOT_THT:TO-220-3_VerticalQ2
1MAX3075EPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU4
1STM32H723VGTxPackage_QFP:LQFP-100_14x14mm_P0.5mmU2
1SW_Push_OpenButton_Switch_SMD:SW_SPST_TL3342SW1
1TPS62162DSGPackage_SON:WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm_ThermalViasU6
1TPS62163DSGPackage_SON:WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm_ThermalViasU5
1USB_C_Receptacle_USB2.0_14PConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J15

More from nfranzwa/OscillatingPump

1
  • 2 layers68 × 91.5 mmPcbfrfr, the printed circuit board in 3D

    Pcbfrfr

    nfranzwa/OscillatingPump

    Pump

    36 parts2Apache-2.0

Similar boards

  • 4 layers100 × 46 mmSensorGrid PCB, the printed circuit board in 3D

    SensorGrid PCB

    hackwerken/SensorGrid-PCB

    89 parts
  • 4 layers101.6 × 53.3 mmH730duino, the printed circuit board in 3D

    H730duino

    martinribelotta/h730duino

    STM32H7 Arduino form factor and software compatible board

    111 parts47MIT
  • 4 layers101.6 × 53.3 mmH730duino, the printed circuit board in 3D

    H730duino

    SoCXin/STM32H730

    L6 R5:ST Cortex-M7 550MHz MCU (STM32H730)

    124 parts1
  • 4 layers58.7 × 31 mmPowerBoardToid, the printed circuit board in 3D

    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 layers97.8 × 58.3 mmControlexp, the printed circuit board in 3D

    Controlexp

    Simonhajd/Triton-Float

    Float Repo for the 2026 Triton Float

    37 parts
  • 2 layersStm32-tutorial project, the printed circuit board in 3D

    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 mmStm motor driver, the printed circuit board in 3D

    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).