Cabinet lock
Use on a drawer or prop for this prototype.
One thin ESP32 node reads an RFID item, a pushbutton and a door sensor. It reports raw hardware events on CAN and executes bounded output commands. The central server owns every game decision.
System boundary
The ESP32 understands attached hardware. The on-prem server understands the room, the story and the session.
Puzzle rules · room state · timers · hints · logging · operator controls
Translate · route · buffer · report link health
Read · filter · report
Execute · limit · acknowledge
Drive · stop · confirm
Central server owns
Correct RFID identities, puzzle order, prerequisites, session progress, scoring, hints, cross-prop rules and operator overrides.
ESP32 owns
GPIO and device drivers, debouncing, RFID communication, output switching, watchdogs, limit switches, hard maximum runtimes and result reporting.
Neither system owns
Required egress remains mechanical or hardwired and professionally designed outside the game-control path.
The node reports the raw identifier; it does not decide whether the object is correct.
The gateway forwards node, channel, value, sequence and health metadata.
The active room state machine validates the UID and issues a bounded output command.
It switches the driver, enforces the maximum runtime and reports the observed result.
node-01 · rfid.detected · uid=A419… · seq=184
node-02 · output.pulse · ch=1 · 500 ms · cmd=8f2…
Before power
Start small. Build and prove one node on the desk before anything goes inside a room.
Not in confirmed orders
Confirmed tool order
Weller WE1010 · five ET tips · Stannol 0.5 mm lead-free solder
Ground the mat only as its instructions specify. Never improvise a connection to mains wiring.BAURIX stripper/crimper + ferrules · Wera electronics drivers
Crimp stranded wire for screw terminals; do not tin it first. Tug-test every ferrule.JOREST ATO fuse set · DollaTek D4184 output modules
Measure voltage, polarity and current before choosing a fuse. The smallest supplied fuse is not automatically correct.Stage one
Keep 24 V for the physical outputs. Convert one fused branch to 5 V for logic.
Stage two
The ESP32 translates local hardware into raw events and bounded actions. It contains device drivers and protective limits, but no puzzle rules or room state.
Suggested bench map
| Part | Connection | Setup note |
|---|---|---|
| PN532 | I²C · GPIO 21/22 | Set its switches/jumpers to I²C. Use GND and the voltage marked on the actual board. |
| Pushbutton | NO → GPIO 27 + GND | Use the ESP32 internal pull-up. Pressed reads LOW. |
| Reed sensor | COM/NC → GPIO 26 + GND | Identify wires with a multimeter; magnet state varies by model. |
| SN65HVD230 | CTX 5 · CRX 4 · 3.3 V | CAN_H/L go to the cable, never directly to ESP32 pins. |
Board labels win. Amazon modules vary. Stop if the printed pin names or voltage markings differ from this guide.
Stage three
The node receives a bounded command and sends tiny logic signals. Relay and MOSFET modules handle the 24 V loads.
Use on a drawer or prop for this prototype.
Visible “puzzle solved” feedback.
Short confirmation chirp, not a continuous alarm.
Preferred module
They were ordered specifically for the lamp and buzzer outputs. Confirm the labels on the delivered boards, share 0 V with the ESP32 and bench-test each load. If a board or load gets warm, looks dim or behaves weakly, stop.
Reserve modules
Do not make them the default ESP32 output. Their gate drive may be weak at 3.3 V. The four-channel relay still needs a separate active-low bench test before attaching the lock.
Stage four
A segment is simply one continuous two-wire CAN trunk between two terminating resistors. Each ESP32 joins it through one transceiver.
It may look similar, but use a shielded 120 Ω twisted-pair CAN cable. The ordered speaker cable is only for 24 V power.
Your puzzle messages are tiny. The lower rate buys noise margin and reliable distance; the cable’s theoretical gigabit capability is irrelevant to the CAN electronics.
Install one 120 Ω resistor across CAN_H and CAN_L at each physical end—not at every room node.
Daisy-chain H to H and L to L. Keep each node’s short branch under roughly 30 cm. Connect signal ground; bond the shield at one end only.
Acceptance run
Run this sequence every time the wiring or firmware changes.
Power off. Tug every wire gently. Check polarity, fuse, diode stripe and exposed copper.
Verify 24 V, then 5.0 V. Nothing smells, heats, buzzes or moves unexpectedly.
Press the button, move the magnet and present one NTAG213 sticker, one S50 card and the PN532 kit tag.
The harness sees the node, channel, UID or input value and increasing sequence. The node never reports “solved.”
A laptop script or temporary Node B harness validates the test UID and sends bounded lamp and buzzer commands.
The harness commands a brief relay pulse. Node A enforces its maximum duration; the separate reed sensor reports that the prop actually opened.
Unplug CAN, stop Node B and reboot Node A. The emergency opening remains completely unaffected.
Ordered inventory
All 32 confirmed product lines across the prototype and workshop orders are mapped below. Pack surplus becomes labelled room stock, not mystery leftovers.
| Ordered product | Pack | First use | Rest of pack |
|---|---|---|---|
| 01 Youmile IP65 ABS box · 200 × 120 × 75 mm | 1 kit | Node A enclosure; terminal strip and PG7 glands handle entry and strain relief | All included hardware stays with Node A |
| 02 1N4007 rectifier diodes | 100 | One flyback diode across the 24 V lock coil | Labelled protection spares for future inductive loads |
| 03 24 V electromagnetic cabinet lock · replacement model | 1 | Bench prop or drawer, switched by relay channel 1 | None; never use as an occupied-room safety exit |
| 04 ARCELI 3–24 V electronic buzzers | 5 | One Node A confirmation chirp | Nodes B/C, one installed spare, one workshop spare |
| 05 Gebildet 22 mm 12–24 V pilot lights | 12 | Red/yellow/blue/green status set for Node A | Matching four-colour sets for Nodes B and C |
| 06 GERUI IRF520 MOSFET modules | 10 | Bench comparison / reserve only; D4184 is the default for Node A | Label clearly as non-preferred for direct 3.3 V ESP32 drive |
| 07 ELEGOO four-channel 5 V relay board | 1 | Channel 1 switches the lock; 5 V power from the buck | Channels 2–4 reserved for future isolated prop contacts |
| 08 KAOLALI six-way ATO fuse box | 1 | Protects lock, lamps, buzzer, buck and next node branches | One branch remains spare; use measured, correctly sized ATO fuses |
| 09 deleyCON 2 × 1.5 mm² copper cable | 20 m | 24 V / 0 V trunk and short output branches | Future room power branches; never use as CAN cable |
| 10 Wago 221 connector set | 75 | Serviceable low-voltage power and load distribution | Sorted by 2-, 3- and 5-way type for later nodes |
| 11 MZHOU 24 V → 5 V buck converter | 1 | Creates the fused 5 V logic rail | Permanent Node A supply after bench USB testing |
| 12 POPPSTAR 5.5 × 2.5 mm terminal adapters | 5 pairs | One female adapter breaks out the LEICKE supply | Three node/prop service disconnects plus one spare pair |
| 13 LEICKE 24 V · 3 A · 72 W supply | 1 | Low-voltage source for the whole prototype | Do not open or modify the mains side |
| 14 120 Ω · 1% resistors | 100 | Two CAN terminators, one at each physical end | Bagged bus spares for future segments |
| 15 BOJACK breadboards + jumper set | 2 large + 2 small | Large board for Node A logic; small board for Node B monitor | One large output-control mockup and one small spare; logic only |
| 16 Gebildet recessed NO/NC reed sensors | 3 | Node A prop-open confirmation | One sensor allocated to each of Nodes B and C |
| 17 Gebildet 22 mm momentary pushbuttons | 3 | Red/yellow/green manual input—one per node | Nodes B/C receive the remaining two |
| 18 NTAG213 adhesive NFC tags | 15 | Five tagged props allocated to Node A | Five tags each reserved for Nodes B and C |
| 19 MIFARE S50 RFID keycards | 10 | Node A builder/test cards | Cards for Node B/C testing plus labelled spares |
| 20 Hailege PN532 NFC/RFID reader V3 kit | 1 kit | Node A reader; reads both NTAG213 and MIFARE Classic test items | Included card/keyfob become known-good diagnostic tags |
| 21 ARCELI SN65HVD230 CAN transceivers | 5 | One each for ESP32 Nodes A, B and C | Two labelled hot spares |
| 22 USB-C ESP32 NodeMCU / WROOM-32 boards | 3 | Node A puzzle controller; Node B desk CAN monitor | Node C is the next-room controller / programmed spare |
| 23 Wera 2035/6 A electronics screwdriver set | 6 + rack | Small screw terminals, module hardware and enclosure work | Keep on the bench rack; use the correct blade rather than forcing a terminal |
| 24 Stannol Kristall 611 lead-free solder · 0.5 mm | 100 g | Headers, diode leads and deliberate soldered joints | Store dry and labelled; do not solder stranded wire before a screw terminal |
| 25 Crenova 6000-count TRMS multimeter | 1 | Polarity, 24 V / 5 V rails, continuity, load current and CAN resistance | Low-voltage prototype measurements only; inspect leads before every use |
| 26 Weller WE1010 soldering station | 1 station | Controlled soldering for board headers, diode and wire preparation | Return the iron to its safety stand; switch off when the bench is unattended |
| 27 JOREST standard ATO blade-fuse assortment | 60 · 2–40 A | Fit only after measuring each branch and calculating an appropriate rating | Sort by rating; buy sub-2 A fuses separately if a branch needs them |
| 28 BAURIX crimper + stripper + ferrules | Set · 2,000 ferrules | Terminate stranded low-voltage wire for screw terminals | Sort ferrules by conductor size; every finished crimp gets a pull test |
| 29 DollaTek D4184 MOSFET modules | 5 | Preferred low-side switches for Node A lamp and buzzer | Nodes B/C plus one tested spare after voltage, temperature and load checks |
| 30 InLine antistatic work mat · 90 × 60 cm | 1 + lead | Main protected bench surface for controller and module assembly | Connect only to a verified ESD grounding point according to its instructions |
| 31 Weller ET genuine tip set | 5 tips | Choose the largest clean tip that comfortably fits the joint | Change only when cold; keep tinned and never file the plated surface |
| 32 VEVOR magnetic four-arm third hand | 1 station | Hold loose boards, headers and wires during assembly | Its clamps are mechanical holders, not electrical ground connections |
The two RFID families are deliberately different: NTAG213 stickers are NFC Type 2; the S50 cards are MIFARE Classic 1K. The PN532 can read both, but your software should treat them as separate puzzle item types. The iFixit magnetic project mat and the storage organisers discussed later were not present in the confirmed orders, so they are not counted here.