Skip to the content
PCBKitNew board
2 layers49 × 64 mmTinyUPS, the printed circuit board in 3D

tinyUPS is the Control and Management Tool with SNMP Server for your UPS

Size
49 × 64 mm
Copper layers
2
Thickness
1.6 mm
Parts
45
Nets
47
Pads
121
Tracks, vias
282, 4
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
6 Jul 2023
Updated
6 Sep 2026

Overview

TinyUPS is an open-source printed circuit board by way5, from the way5/tinyUPS repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 49 × 64 mm with 45 parts on 47 nets, routed with 282 tracks and 4 vias.

It is built around the BSS138 and IRLML2502. Its parts include 15 resistors, 11 connectors, 6 transistors, 5 capacitors and 2 diodes. It belongs with the power boards and the ESP32 boards of this library.

Main components

2

README

README.md

tinyUPS a tiny toolkit for your UPS

Dynamic JSON Badge    UI version   Static Badge

+ DESCRIPTION [blocked]

tinyUPS is the way to extend functionality of an Uninterruptible Power Supply (UPS)/power inverters. It provides onboard SNMP server, temperature control and a Control Panel (CP), just like on an enterprise systems. The project is now on beta test stage, however it shows very stable results during months 24/7. If you'll decide to modify your own UPS it's at your own risk.

WARNING

This project requires advanced skills in electronics. It's not a plug-n-play device. ;)

WARNING

Follow the standard precautions! Uninterruptible Power Supply (UPS) is a potentially dangerous device as it contains electric parts under high voltage.

+ TABLE OF CONTENTS

+ TOOLKIT [blocked]

  • PlatformIO
  • KiCAD

- CONTROLLER [blocked]

tinyUPS is originally based on WEMOS S2 mini board. However, very likely it would work on another ESP32 boards with minor changes in firmware. All the configuration you may need is in platformio.ini and the UPS driver header file. If the communication interface of a particular UPS is not SPI, you need to create a new UPS driver and to change the PCB as well.

Development

If you've created a new driver please share it by creating merge request or attaching it in discussions.

- PCB [blocked]

The current PCB is designed for DIY via CAM method. If you want it printed profesionally, you may need to redesign the PCB. Since the most of the UPS controllers have 5V data bus, we need a level shifter to be able to communicate with them and a small step-down PSU for ESP32.

Bill of materials. Instead of the BSS138 mosfets could be used any compatible type, ex.: IRLML2502.

If you'll be using S2 mini board you need to desolder built-in LDO IC (ME6211C33) since power will be supplied directly to 3.3V pin. It's possible to keep the LDO but you will not be able to use serial port for firmware upload and debugging. See WEMOS S2 mini schematics.

The example driver is for a built in SPI LCD display, for a particular manufacturer and model. You'll probably have the very different device and may be even without any LCD display, so you'd need to figure out how to speak with the controller. This part is DIY. Feel free to call for help in Discussions.

- Web UI [blocked]

UI translations are available in ./web/lang directory. You can add new translation or remove existing if you wish by editing the header of i18n.js script. Variable i18nlang contains the list of available locales to be built-in, where element 0 of the array is also a fallback (used by default) locale. Remove unnecessary locales from i18nlang to save space on file system partition.

The package manager is yarn so if you're not familiar with it continue with the folowing to build the UI:

bash
yarn build:prod

that's all you need to prepare the FS partition to upload. Use Upload Filesystem Image command from PlatformIO project tasks or:

bash
platformio run --target uploadfs [--environment [your_env]]

+ BUILD [blocked]

- CONFIGURATION [blocked]

All sigificant parameters for your setup are inside configrure.json file. If you're adding a new parameter you'd need to run Rebuild Intellisense Index in PlatformIO in order to have your parameter set and available.

PARAMETERDESCRIPTION
system_log_sizeSize of the system log file (in bytes)
snmp_log_sizeSize of the SNMP server log file (in bytes)
mtemp_log_sizeSize of the temperature management log (in bytes)
mdata_log_sizeSize of the log of monitored events (in bytes)
ups_rated_input_voltageNominal input voltage value (V)
ups_rated_input_freqNominal input frequency (Hz)
ups_rated_low_input_voltage_thresholdNominal low threshold of the input voltage (V)
ups_rated_high_input_voltage_thresholdNominal hight threshold for input voltage (V)
ups_rated_output_voltageNominal output voltage (V)
ups_rated_output_freqNominal output frequency (Hz)
battery_rated_charge_capacity_ahNominal UPS battery capacity (Ah)
ups_rated_battery_amps_maxNominal UPS battery current (Amps)
wifi_reconnect_methodWiFi reconnection method (see below)
wifi_discovered_lengthMax. length of the data array of discovered APs

- WiFi CONNECTION STRATEGIES [blocked]

If tinyUPS has lost connection with AP you may wish it to fallback to AP mode (tinyUPS.01.XXXX network name) or it may keep trying to reconnect till the source network is available. You can choose the desired behavior (see wifi_reconnect_method parameter) before to compile firmware.

METHOD_IDDESCRIPTION
1If the configuration data is available, tinyUPS intents to connect to the specified AP. If the connection is not succeeded it starts AP. If connection is lost the device tryes to reconnect once (10 sec interval). If connection is not succeeded it starts AP and remains in this mode until restart.
2 [D]If tinyUPS has lost connection with source network it tryes to reconnect once. If connection is not succeeded it starts AP and periodically scans WiFi networks. If the source network has found, the device intents to reconnect. Unless the connection is succeeded it remains in AP mode.
3Once the device has lost connection to AP it continuously tryes to reconnect to the source network. The WiFi mode remains STA.
4Rely on built-in functionality of setAutoReconnect(). tinyUPS will remain in STA mode and be seeking for the source AP.

[D] - the default method

+ SETUP [blocked]

When you first run tinyUPS, it boots up in AP mode. Look for tinyUPS.01.XXXX WiFi network. Default network password (config.apkey) could be changed in helpers.h. Once connected the configuration is available on 192.168.4.1.

tinyUPS setup page

When setup is completed tinyUPS restarts, expecting an automatically assigned IP.

You are able to restart the device or reset configuration data to defaults using Control Panel -> Service Menu:

tinyUPS service menu

and then continue with confirmation:

tinyUPS confirmation

+ CONTROL PANEL [blocked]

The UI is pretty simple and displays most of the real-time parameters. There are multiple self explanatory graphical representations for the collected data.

tinyUPS dashboard charts

After successful setup it is highly recommended to change the AP key and generate the device serial number. Both options and corresponding controls you can find in Settings -> Security tab and SNMP tab respectively.

+ DEVELOPMENT [blocked]

- DRIVERS [blocked]

There are the following functions that must be implemented by every UPS driver: upsDriverInit, upsDriverLoop, upsDriverDeinit. You may also wish to look at the driver for thermistor (currently this is 1k M52A), it may need some changes. Depends on which thermistor you'll be using.

- DEBUG [blocked]

Serial monitor is used to perform the most of the tasks and to solve issues. Once you've connected use ? to list available commands.

tinyUPS serial monitor

+ PHOTOS [blocked]

tinyUPS PCBthermistorPCBUPS LCDUPS exterior

+ CREDITS [blocked]

Parts

45
QtyValueFootprintReferences
1010kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2, R3, R4, R5, R6, R7, R8, R9, R10, R11
5BSS138Package_TO_SOT_SMD:SOT-23_HandsolderingQ1, Q2, Q3, Q4, Q5
210uFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC3, C5
1+12VConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ13
1+5VConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ10
1100kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1
1100nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1
1100uHInductor_SMD:L_Bourns-SRN8040_8x8.15mmL1
110nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC4
11N914Diode_SMD:D_1210_3225Metric_Pad1.42x2.65mm_HandSolderD1
11kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR13
11kConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalTH1
11k5Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR14
1220kPotentiometer_SMD:Potentiometer_Bourns_3224W_VerticalRV1
12k2Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR12
14.7nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC2
18k2Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR15
1CLKConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ7
1CS/SSConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ5
1FANConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ11
1GNDConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ14
1INFConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ8
1IRLML2502Package_TO_SOT_SMD:SOT-23W_HandsolderingQ7
1LEDLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderD3
1MOSIConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ6
1MP1484 (SOIC8E)Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1OUTFConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ9
1P1-16Connector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_VerticalJ1
1P15-40Connector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_VerticalJ2

The 43 most common of 45 parts.

Questions

How big is the TinyUPS PCB?

It measures 49 × 64 mm and has 2 copper layers, 1.6 mm thick.

What parts does the TinyUPS use?

45 parts, built around the BSS138 and IRLML2502. 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 TinyUPS KiCad files?

From the way5/tinyUPS repository on GitHub, at the commit this page was made from: the board is schematics/CAM/tinyUPS.kicad_pcb and its schematic schematics/CAM/tinyUPS.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the TinyUPS design in my own project?

Its repository publishes it under the GPL-3.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).

Similar boards

  • 4 layers60 × 100 mmPVBatteryInverter Mainboard, the printed circuit board in 3D

    PVBatteryInverter Mainboard

    Philip-Kiehnle/PVBatteryInverter

    High efficient PV charging of HV-Battery with 650V-GaN power stage. A second GaN-power stage is used as a Single-Phase inverter, which enables high efficient self-consumption.

    157 parts1MIT
  • 2 layers99.4 × 60.2 mmTeslaBMBCheck, the printed circuit board in 3D

    TeslaBMBCheck

    svpetry/TeslaBMBCheck

    Simple device that reads the voltage levels and temperatures from a Tesla Model S BMB board.

    42 parts1
  • 2 layers195.6 × 113 mmHVA, the printed circuit board in 3D

    HVA

    blue-wind-25/JxMake

    JxMake is a Java-based, cross-platform build system primarily inspired by the syntax and features of GNU Make, Perforce Jam, and CMake.

    228 parts
  • 4 layers60 × 28 mmRailLink, the printed circuit board in 3D

    RailLink

    Misaka0x2730/RailLink

    Compact isolated version of J-Link v9.

    83 parts134
  • 8 layers120 × 60 mmDFTBoard, the printed circuit board in 3D

    DFTBoard

    juliancoy/zynqPCB

    An 8-layer board in Kicad built upon Xilinx Zynq Chip. Includes sound output, HDMI, DDR3, and Arduino Uno style header for screen connection

    299 parts75MIT
  • 2 layers92.5 × 82.8 mmRifle and sensors, the printed circuit board in 3D

    Rifle and sensors

    DAlexis/caustic-lasertag-system

    Caustic project is a full-featured indoor and outdoor lasertag system

    268 parts16
  • 4 layers122.2 × 115.1 mmScan controller kicad, the printed circuit board in 3D

    Scan controller kicad

    fwachsmuth/Filmkorn-Raw-Scanner

    The Filmkorn Raw Scanner, turning 8mm and 16mm films into lossless 12-bit CinemaDNG

    170 parts13MIT
  • 2 layers68 × 81.5 mmController, the printed circuit board in 3D

    Controller

    orlopau/coffee-scale

    Scale for espresso and filter coffee.

    55 parts11