

NodePCB
- Size
- 36 × 54 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 16
- Nets
- 42
- Pads
- 99
- Tracks, vias
- 156, 15
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 4 Nov 2024
- Updated
- 27 Feb 2025
Overview
NodePCB is an open-source printed circuit board by Pegoku, from the Pegoku/StorageSystem repository on GitHub. It is a 2-layer board of 36 × 54 mm with 16 parts on 42 nets, routed with 156 tracks and 15 vias.
It is built around the LM2940S-3.3, TS-1088-AR02016 and FC-2012HRK-620D, with the NSR0320MW2T1G among its other parts. Its parts include 5 connectors, 4 resistors, 2 ICs, 2 diodes and 2 switches.
Main components
4LM2940S-3.3
SOT-223-3L-40℃~+85℃@(Tj) 1 1A 26V 3.3V 500uA 630mV@(1A) Fixed Over Current Protection、Over Temperature Protection、Reverse connection protection Positive SOT-223-3L Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSHTC Korea TAEJIN TechVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsTS-1088-AR02016
SMD,4x3mm-30℃~+80℃ 1.6N 100,000 cycles 12V 2mm 3.9mm 3mm 50mA Black Round Button SMD(SMT) Tab SPST Surface Mount,Vertical Without Bracket SMD,4x3mm Tactile Switches ROHSXUNPUTactile SwitchesFC-2012HRK-620D
LED0805UncategorisedFoshan NationStar OptoelectronicsNSR0320MW2T1G
SOD-323Schottky DiodesDOWO
README
README.mdSmart Storage System
Overview
This is a versatile and customizable Storage System. It has the ability to combine multiple Storage Systems via the use of ESP32 (a cheap microcontroller) as controllers for the neopixels (indicators). It has a simple but useful WebUI and an API. The storage bins are compatible with Gridfinity 1x4 bins.
Features
- Gridfinity Compatible: Easily integrates with the Gridfinity storage system for modular storage.
- Parametric Design: Easily customizable bins.
- ESP32 Controlled: Scalable system using ESP32 as wireless controllers.
- Neopixels: Dynamic lighting indicators.
- Web UI to Manage Storage: User-friendly web interface for managing the items.
- API: Simple to use API.
- Node PCB: Simple ESP32-Wroom based PCB with the necessary connectors.
Media
Main Website

Add Item Menu

API Endpoints
List Storage Items
- Endpoint:
/api/list - Method:
GET - Description: Retrieves a list of all storage items. Supports optional query parameters for filtering by category, node, and position.
- Query Parameters:
category(optional): Filter items by category.node(optional): Filter items by node.position(optional): Filter items by position.id(optional): Filter items by ID:
Locate Item by ID (GET)
- Endpoint:
/api/locateget - Method:
GET - Description: Locates an item by its ID and sends a request to the corresponding node to locate the item.
- Query Parameters:
id(required): The ID of the item to locate.
List Nodes
- Endpoint:
/api/nodes - Method:
GET - Description: Retrieves a list of all nodes. Supports optional query parameter for filtering by ID.
- Query Parameters:
id(optional): Filter nodes by ID.
Add Storage Item
- Endpoint:
/api/additem - Method:
POST - Description: Adds a new storage item to the database.
- Request Body (JSON):
json { "name": "string", "description": "string", "category": "string", "quantity": "integer", "node": "integer", "position": "integer", "url": "string", "slots": "array" }
Add Node
- Endpoint:
/api/addnode - Method:
POST - Description: Adds a new node to the database or updates an existing node if the ID already exists.
- Request Body (JSON):
json { "id": "integer", "ip": "string", "positions": "integer" }
Delete Storage Item
- Endpoint:
/api/delete - Method:
POST - Description: Deletes a storage item by its ID.
- Request Body (JSON):
json { "id": "integer" }
Edit Storage Item
- Endpoint:
/api/edit - Method:
POST - Description: Edits an existing storage item by its ID.
- Request Body (JSON):
json { "id": "integer", "name": "string", "description": "string", "category": "string", "quantity": "integer", "node": "integer", "position": "integer", "url": "string", "slots": "array" }
Move Storage Item
- Endpoint:
/api/move - Method:
POST - Description: Moves a storage item to a different node and position.
- Request Body (JSON):
json { "id": "integer", "node": "integer", "position": "integer" }
Locate Item by ID (POST)
- Endpoint:
/api/locate - Method:
POST - Description: Locates an item by its ID and sends a request to the corresponding node to locate the item.
- Request Body (JSON):
json { "id": "integer" }
Getting Started
Prerequisites
- PlatformIO installed on your development environment.
- ESP32 DevBoard or Node PCB .
- Neopixels (WS2812B) or Indicator PCB.
- Some wire.
- Edit Code/App/static/script.js
servervariable - Edit Code/Node/include/.env with the correct settings
Docker (API + Website)
- Clone the repository:
sh git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem - Build and run the Docker containers:
docker compose up -d --buildAPI
- Clone the repository:
sh git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem/Code/Server - Create a Python virtual environment and install the requirements:
sh python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt - Run the main Python file:
sh python3 main.py
API (Docker)
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git
cd StorageSystem- Build and run the Docker container:
docker buildx build -t storagesystem:server -f server.Dockerfile .
docker run -p 5505:5505 -v ./database.db:/app/database.db storagesystem:server- The API should now be running and accessible at
http://localhost:5505.
ESP32
- Clone the repository:
sh git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem - Install the required libraries and dependencies:
sh platformio run - Connect your ESP32 to your computer.
- Edit the
include/.env.templatefile and rename it toinclude/.env. - Upload the firmware to the ESP32:
sh platformio run --target upload - Open the serial monitor to check if the installation was successful:
sh platformio device monitor
Website
- Clone the repository:
sh git clone https://github.com/Pegoku/StorageSystem.git cd StorageSystem/Code/App - Create a Python virtual environment and install the requirements:
sh python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt - Run the main Python file:
sh python3 main.py
Website (Docker)
- Clone the repository:
git clone https://github.com/Pegoku/StorageSystem.git
cd StorageSystem- Build and run the Docker container:
docker buildx build -t storagesystem:app -f app.Dockerfile .
docker run -p 5506:5506 storagesystem:app- The website should now be running and accessible at
http://localhost:5506.
Contributing
Contributions are welcome! Please fork the repository and submit a pull request with your changes.
Parts
16| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R2, R3 |
| 2 | Conn_01x03_Pin | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Horizontal | J2, J3 |
| 2 | Conn_01x10 | Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_Vertical | J4, J5 |
| 2 | TS-1088-AR02016 | easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45 | SW1, SW2 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 68 | Resistor_SMD:R_0603_1608Metric | R4 |
| 1 | Conn_01x04 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Horizontal | J1 |
| 1 | ESP-WROOM-32E | easyeda2kicad:COMM-SMD_ESP-WROOM-32D | U1 |
| 1 | FC-2012HRK-620D | easyeda2kicad:LED0805-R-RD | LED1 |
| 1 | LM2940S-3.3 | easyeda2kicad:SOT-223-3_L6.5-W3.4-P2.30-LS7.0-BR | U2 |
| 1 | NSR0320MW2T1G | easyeda2kicad:SOD-323_L1.8-W1.3-LS2.5-RD | D1 |
| 1 | TYPE-C 6P(073) | easyeda2kicad:TYPE-C-SMD_TYPE-C-6P_5 | USB1 |
More from Pegoku/StorageSystem
1- 2 layers44.5 × 18 mm

Similar boards
- 4 layers60 × 40 mm

RCcar
jeffreydthompson/Open_Roadster
Support files for course creating BLE remote controlled car from scratch.
95 parts1 - 4 layers100 × 70 mm

SEM
Serhio4522/SEM_hitachi-
Digitization of a Hitachi scanning electron microscope (SEM) — hardware design, FPGA firmware, and analog frontend schematics.
288 parts1 - 2 layers70.5 × 64 mm

Esp32
ste2425/PSP-Bluetooth
Formerly PSP-Consolizer, PSP-Bluetooth aims to add Bluetooth controller support to the PSP 1K/2K/3K.
95 parts108MIT - 2 layers197 × 249.7 mm

- 2 layers64.5 × 22.5 mm

- 2 layers85 × 120 mm

Home Assistant Control pad
Pegoku/Home-Assistant-Control-pad
This is a programmable Home Assistant Control Pad. It can control 4 Home assistant devices at a time, and has 4 togglable screens/zones (in total 16 devices).
111 parts1GPL-3.0 - 2 layers70 × 136.4 mm

KiCAD Camsat PCB
National-Association-of-Rocketry-UCD/2025_NAR_CanSat
PCB and schematic files can be accesed by downloading KiCADCamsatPCB as a zip file and then opening the KiCAD project file.
64 parts - 2 layers82 × 134 mm

Pcb badge
john0312/hitcon-pcb-badge
execute fw/merge.py to merge STM32CubeIDE generated main.c with user code in main.cc into main.cc.
258 parts47BSD-3-Clause
Questions
How big is the NodePCB PCB?
It measures 36 × 54 mm and has 2 copper layers, 1.6 mm thick.
What parts does the NodePCB use?
16 parts, built around the LM2940S-3.3, TS-1088-AR02016, FC-2012HRK-620D and NSR0320MW2T1G. 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 NodePCB KiCad files?
From the Pegoku/StorageSystem repository on GitHub, at the commit this page was made from: the board is PCB/NodePCB/NodePCB.kicad_pcb and its schematic PCB/Indicators/Indicators.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the NodePCB design in my own project?
Its repository states no licence, so its author keeps all rights: ask Pegoku before reusing the design.