Skip to the content
2 layers36 × 54 mmNodePCB, the printed circuit board in 3D
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

4

README

README.md

Smart 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

Main Website

Add Item Menu

Add Item Menu

Video

Video

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 server variable
  • Edit Code/Node/include/.env with the correct settings

Docker (API + Website)

  1. Clone the repository:
    sh
    git clone https://github.com/Pegoku/StorageSystem.git
    cd StorageSystem
  2. Build and run the Docker containers:
sh
docker compose up -d --build

API

  1. Clone the repository:
    sh
    git clone https://github.com/Pegoku/StorageSystem.git
    cd StorageSystem/Code/Server
  2. Create a Python virtual environment and install the requirements:
    sh
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
  3. Run the main Python file:
    sh
    python3 main.py

API (Docker)

  1. Clone the repository:
sh
git clone https://github.com/Pegoku/StorageSystem.git
cd StorageSystem
  1. Build and run the Docker container:
sh
docker buildx build -t storagesystem:server -f server.Dockerfile .
docker run -p 5505:5505 -v ./database.db:/app/database.db storagesystem:server
  1. The API should now be running and accessible at http://localhost:5505.

ESP32

  1. Clone the repository:
    sh
    git clone https://github.com/Pegoku/StorageSystem.git
    cd StorageSystem
  2. Install the required libraries and dependencies:
    sh
    platformio run
  3. Connect your ESP32 to your computer.
  4. Edit the include/.env.template file and rename it to include/.env.
  5. Upload the firmware to the ESP32:
    sh
    platformio run --target upload
  6. Open the serial monitor to check if the installation was successful:
    sh
    platformio device monitor

Website

  1. Clone the repository:
    sh
    git clone https://github.com/Pegoku/StorageSystem.git
    cd StorageSystem/Code/App
  2. Create a Python virtual environment and install the requirements:
    sh
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
  3. Run the main Python file:
    sh
    python3 main.py

Website (Docker)

  1. Clone the repository:
sh
git clone https://github.com/Pegoku/StorageSystem.git
cd StorageSystem
  1. Build and run the Docker container:
sh
docker buildx build -t storagesystem:app -f app.Dockerfile .
docker run -p 5506:5506 storagesystem:app
  1. 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
QtyValueFootprintReferences
25.1kResistor_SMD:R_0603_1608MetricR2, R3
2Conn_01x03_PinConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_HorizontalJ2, J3
2Conn_01x10Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_VerticalJ4, J5
2TS-1088-AR02016easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45SW1, SW2
11kResistor_SMD:R_0603_1608MetricR1
168Resistor_SMD:R_0603_1608MetricR4
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_HorizontalJ1
1ESP-WROOM-32Eeasyeda2kicad:COMM-SMD_ESP-WROOM-32DU1
1FC-2012HRK-620Deasyeda2kicad:LED0805-R-RDLED1
1LM2940S-3.3easyeda2kicad:SOT-223-3_L6.5-W3.4-P2.30-LS7.0-BRU2
1NSR0320MW2T1Geasyeda2kicad:SOD-323_L1.8-W1.3-LS2.5-RDD1
1TYPE-C 6P(073)easyeda2kicad:TYPE-C-SMD_TYPE-C-6P_5USB1

More from Pegoku/StorageSystem

1
  • 2 layers44.5 × 18 mmIndicators, the printed circuit board in 3D

    Indicators

    Pegoku/StorageSystem

    12 parts12

Similar boards

  • 4 layers60 × 40 mmRCcar, the printed circuit board in 3D

    RCcar

    jeffreydthompson/Open_Roadster

    Support files for course creating BLE remote controlled car from scratch.

    95 parts1
  • 4 layers100 × 70 mmSEM, the printed circuit board in 3D

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

    Esp32

    ste2425/PSP-Bluetooth

    Formerly PSP-Consolizer, PSP-Bluetooth aims to add Bluetooth controller support to the PSP 1K/2K/3K.

    95 parts108MIT
  • 2 layers85 × 120 mmHome Assistant Control pad, the printed circuit board in 3D

    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 mmKiCAD Camsat PCB, the printed circuit board in 3D

    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 mmPcb badge, the printed circuit board in 3D

    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.