Skip to the content
PCBKitNew board
2 layers55 × 55 mmPrismo, the printed circuit board in 3D

Open-source $10 NFC/RFID door access controller for hackerspaces and makerspaces. ESP32-C3 + PN532, MQTT, Home Assistant, self-hosted

Size
55 × 55 mm
Copper layers
2
Thickness
1.6 mm
Parts
29
Nets
37
Pads
91
Tracks, vias
150, 0
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
12 Jan 2026
Updated
5 Nov 2026

Overview

Prismo is an open-source printed circuit board by nu31hackerspace, from the nu31hackerspace/prismo repository on GitHub, published under the MIT licence. It is a 2-layer board of 55 × 55 mm with 29 parts on 37 nets, routed with 150 tracks and 0 vias.

It is built around the BC547. Its parts include 16 resistors, 4 diodes, 3 transistors, 2 ICs and 1 connector. It belongs with the radio and wireless and home automation and IoT boards and the ESP32 and RISC-V boards of this library.

Main components

1

README

README.md

Prismo – a simple NFC access controller

DemoPCB
Prismo-preview-giftPCB

Prismo is an open-source NFC access controller that you can build yourself for ~500 UAH (~10 USD). Tap a card to unlock a door or power on a machine — fully self-hosted, MIT-licensed.

Firmware CI Hardware-in-the-loop E2E Tested on real ESP32-C3 License: MIT Latest release

You can use it, for example, to:

  • Open a door
  • Turn on a machine
  • Control whatever you want with an NFC card/key

Features

  • 🟢 Tap-to-unlock — present an NFC/RFID card, get instant LED + buzzer feedback and a relay action.
  • 🔓 Build it yourself for ~$10 — off-the-shelf ESP32-C3 + PN532, single-layer PCB.
  • 🛠️ DIY-friendly PCB — single-layer, etchable at home; a great first soldering project.
  • 🏠 Self-hosted + MQTT — integrates with Home Assistant or your own backend. No cloud lock-in.
  • ⚡ One-click flashing — flash a pre-built firmware from your browser, no toolchain required.

How we test our solution

Every change Tested on real hardware — every change runs using a physical Prismo device. We have a test stand that allows us to verify every change and make sure everything works as expected. For more info read the ReadMe from blackbox-e2e.

What you need

ItemNotes
ESP32-C3 Super MiniThe brains. ~$3.
PN532 NFC moduleReads the cards (powered from 3.3 V).
Prismo PCB + componentsSee the Bill of Materials.
A USB-C cable + a Chrome/Edge browserFor flashing over Web Serial.
2.4 GHz WiFiThe ESP32-C3 is 2.4 GHz only.

Quick start

Full build instructions live in hardware/README.md (PCB + assembly) and firmware/README.md (firmware).

  1. Build the board — etch/order the single-layer PCB, solder the components, and connect the PN532 and RGB LED.
  2. Flash it — open the web flasher in Chrome and click Flash. No toolchain needed.
  3. Connect it — the device boots, joins your 2.4 GHz WiFi, and announces itself over MQTT.
  4. Add your card — register the card's UID in the web app; tap to unlock.

Why are we making Prismo?

We started Prismo because we could not find a simple, low‑cost project that:

  • Uses easy hardware
  • Uses simple, free software
  • Is friendly for beginners

Before building more features, we wrote down what we want from this project.

General requirements

  • You do not need special knowledge to build and use Prismo.
  • You do not need any paid software. Everything needed is free.

Hardware requirements

  • The PCB is single‑layer, so it can be made with CNC or a simple toner‑transfer / laser–iron method.
  • It should be good as a first soldering project.
  • All components should be easy to solder.(We still need to define how to measure “easy to solder”.)
  • You do not need special tools to solder or assemble the device.
  • All parts should be off‑the‑shelf, easy to buy in common electronics shops.
  • The total cost of the device should be low.

Software requirements

  • It should be easy to connect Prismo to other systems (for example, a home automation system or a custom app).
  • Users should be able to move away from Prismo to another solution without problems.
  • The project should use a common programming language that:
  • Many developers already know
  • Is easy to understand
  • Works well with AI tools

Project structure

The repository is a monorepo. That means all components of the project live in one place.

  • firmware/ – the software that runs on the Prismo device. This folder has its own README.md.
  • hardware/ – the hardware design files, such as KiCad schematics and PCB layout. This folder has its own README.md.
  • backend/ – the API + realtime sync server used to manage devices and register cards. This app is containerized and can be run locally or on a remote machine.
  • client/ – the single-page web app (served as static files) used to manage devices, register cards, and flash the board with firmware.
  • shared/ – TypeScript types shared between backend/ and client/.
  • mqtt-contract/ – the shared MQTT message contract between the firmware and the backend.
  • blackbox-e2e/ – hardware-in-the-loop tests that run against a physical device on a test rig.

Run it locally

Clone a repo

bash
git clone https://github.com/nu31hackerspace/prismo.git
cd prismo

Use you favorite agent to start the dev environment, using .agents/skills/prismo-dev-setup

The skill will setup a few domains:

  • app.prismo.local.nu31.space
  • mqtt.prismo.local.nu31.space
  • postgres-viewer.prismo.local.nu31.space

Over mqtt.prismo.local.nu31.space in your browser and accept the security permision

Design system

The UI components in client/src/components/ui are synced to Claude Design: Prismo Design System. The local sync config lives in .design-sync/ and is not committed.

Project CI

The project uses GitHub Actions for CI. Every change is built, linted, and — for the firmware — tested on real ESP32-C3 hardware running on a Raspberry Pi rig before it lands on main. The CI also builds the firmware *.bin that the web flasher serves.

License

Prismo is released under the MIT License.

Parts

29
QtyValueFootprintReferences
9100Resistor_THT:CNC_Ready_R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR2, R3, R4, R5, R7, R8, R10, R11, R13
4150Resistor_THT:CNC_Ready_R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR1, R6, R9, R12
4LED_RKGBLED_THT:LED_D5.0mm-4_RGB_Wide_Pins_CNC_readD1, D2, D3, D4
31000Resistor_THT:CNC_Ready_R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR14, R15, R16
3BC547Package_TO_SOT_THT:TO-92_InlineQ1, Q2, Q3
1BuzzerBuzzer_Beeper:MagneticBuzzer_ProSignal_ABI-010-RCBZ1
1Conn_01x03_SocketConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical_with_holesJ3
1ESP32 C3 supper miniesp_32_c3_supper_mini:esp_32_c3_supper_miniU1
1~esp_32_c3_supper_mini:PN532 NFC RFID simple (one row)U2

The 27 most common of 29 parts.

Questions

How big is the Prismo PCB?

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

What parts does the Prismo use?

29 parts, built around the BC547. 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 Prismo KiCad files?

From the nu31hackerspace/prismo repository on GitHub, at the commit this page was made from: the board is hardware/main/pcb.kicad_pcb and its schematic hardware/main/pcb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Prismo design in my own project?

Its repository publishes it under the MIT 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

  • 2 layers83.3 × 65.3 mmSimonShield, the printed circuit board in 3D

    SimonShield

    github-linguist/linguist

    Language Savant. If your repository's language is being reported incorrectly, send us a pull request!

    46 parts14kMIT
  • 2 layers56 × 65 mmSeaTalk1, the printed circuit board in 3D

    SeaTalk1

    dotnet/iot

    This repo includes .NET Core implementations for various IoT boards, chips, displays and PCBs.

    24 parts2.4kMIT
  • 2 layers132.1 × 45.7 mmIPoS, the printed circuit board in 3D

    IPoS

    peterheinrich/InternetOverSpaghetti

    Transmitting IP packages over a pair of spaghetti thus demonstrating how media independent IP really is.

    42 parts342
  • 2 layers99.1 × 99.7 mmRC6502 General Video Adapter, the printed circuit board in 3D

    RC6502 General Video Adapter

    tebl/RC6502-Apple-1-Replica

    An expandable SBC-version of the Apple 1 computer, easy to get started with and lot of cool stuff that can be added to it!

    80 parts193GPL-3.0
  • 2 layers55.9 × 38.6 mmMega Amp, the printed circuit board in 3D

    Mega Amp

    theacodes/genesynth

    A Sega Genesis inspired synthesizer

    40 parts178Apache-2.0
  • 2 layers40 × 100 mmBack pcb, the printed circuit board in 3D

    Back pcb

    ZeroPhone/ZeroPhone-PCBs

    PCB files for ZeroPhone - for gerbers and schematics, go to "Releases" tab!

    118 parts148GPL-3.0
  • 2 layers100 × 100 mmCANBuster, the printed circuit board in 3D

    CANBuster

    GBert/misc

    miscellaneous stuff / unsorted

    182 parts99