Skip to the content
PCBKitNew board
2 layers44.5 × 18 mmIndicators, the printed circuit board in 3D
Size
44.5 × 18 mm
Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
4
Pads
24
Tracks, vias
36, 0
Pours
3
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
4 Nov 2024
Updated
27 Feb 2025

Overview

Indicators is an open-source printed circuit board by Pegoku, from the Pegoku/StorageSystem repository on GitHub. It is a 2-layer board of 44.5 × 18 mm with 12 parts on 4 nets, routed with 36 tracks and 0 vias.

It is built around the WS2812B-B/T. Its parts include 4 connectors, 1 capacitor and 1 diode.

Main components

1

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

12
QtyValueFootprintReferences
6TestPointTestPoint:TestPoint_Pad_D1.5mmTP1, TP2, TP3, TP4, TP5, TP6
2Conn_01x03Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_HorizontalJ3, J4
2Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_HorizontalJ1, J2
1CCapacitor_SMD:C_0603_1608MetricC1
1WS2812B-Beasyeda2kicad:LED-SMD_4P-L5.0-W5.0-BL_TC5050RGBLED1

Questions

How big is the Indicators PCB?

It measures 44.5 × 18 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Indicators use?

12 parts, built around the WS2812B-B/T. 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 Indicators KiCad files?

From the Pegoku/StorageSystem repository on GitHub, at the commit this page was made from: the board is PCB/Indicators/Indicators.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 Indicators design in my own project?

Its repository states no licence, so its author keeps all rights: ask Pegoku before reusing the design.

More from Pegoku/StorageSystem

1
  • 2 layers36 × 54 mmNodePCB, the printed circuit board in 3D

    NodePCB

    Pegoku/StorageSystem

    16 parts12

Similar boards

  • 4 layers118 × 117 mmCm4-robot, the printed circuit board in 3D

    Cm4-robot

    Twisted-Fields/acorn-robot-electronics

    PCB hardware designs in KICAD for Acorn, the precision farming rover from Twisted Fields.

    268 parts81
  • 4 layers88 × 58 mmECG V-0.2, the printed circuit board in 3D

    ECG V-0.2

    Doenec/ecg-esp32

    open source project ecg with esp32 and ad8232

    115 parts8
  • 4 layers79.5 × 20 mmMatter usb switch, the printed circuit board in 3D

    Matter usb switch

    IvanVeloz/smart-usb-plug

    A smart plug for USB with energy measurement and Matter over Thread support

    65 parts2GPL-3.0
  • 4 layers130 × 105 mmHomeDeck, the printed circuit board in 3D

    HomeDeck

    Kilan777/HomeDeck

    Jarvis HomeDeck: a Raspberry Pi CM4 carrier board and voice-assistant software for a 7-inch smart display (KiCad hardware, generated from Python, plus the Python/JS assistant)

    228 parts1
  • 2 layers831.3 × 10.7 mmOctave flex, the printed circuit board in 3D

    Octave flex

    lxdinh/Piano_Prof

    Custom PCB hardware controller integrated with a responsive LED strip, designed to provide real-time feedback for interactive piano instruction

    121 parts1
  • 4 layers67 × 77.5 mmECE148 Mainboard, the printed circuit board in 3D

    ECE148 Mainboard

    UCSD-Silberman-Classes-and-Projects/148-winter-2025-final-project-team-11

    148-winter-2025-final-project-team-11 created by GitHub Classroom

    78 parts1