Wiznet makers

josephsr

Published May 25, 2026 ©

120 UCC

13 WCC

13 VAR

0 Contests

0 Followers

0 Following

Original Link

PokeVault: STM32-Based Security Vault for Sealed Pokémon Collectibles

An STM32F411 security box concept using RFID access, IR line-break sensing, AHT20 monitoring, and W5500 Ethernet groundwork.

COMPONENTS
PROJECT DESCRIPTION

1. Overview

PokeVault is an STM32-based embedded security-vault project for sealed collectibles. The repository describes it as a personal storage/security system for Pokémon sealed collectors, but the codebase shows a broader embedded architecture: RFID-based access control, IR line-break open/close detection, temperature/humidity monitoring, and Ethernet connectivity groundwork.

The project is not presented as a finished commercial device. The repository has no published releases, no stars or forks at the time of checking, and only a short README. Its value is mainly in the embedded system structure rather than a complete user-facing product. Humanity has once again compressed the README to near-vacuum levels, so the code has to do the explaining.

2. What the System Does

PokeVault is best understood as a sealed collectible security box firmware prototype. It combines four major roles:

FunctionComponentRole
Access authorizationMFRC522 RFID reader / keycard logicReads RFID keycards and checks stored UIDs
Vault state detectionIR line-break sensorsDetects whether storage units are open or closed
Environmental monitoringAHT20 sensorMeasures temperature and humidity
Network foundationWIZnet W5500Provides Ethernet initialization and network connection groundwork

The repository uses a typical STM32 firmware layout with Core, Drivers, a Makefile, startup file, linker script, and a CubeMX-style .ioc file. The Makefile lists application and driver modules such as keycard.c, security.c, alerts.c, rendering.c, adc.c, aht20.c, ir_sensor.c, mfrc522.c, ssd1306.c, and w5500.c.

3. System Architecture

 
[RFID Keycard / User]
          |
          v
[MFRC522 RFID Reader]
          |
          | SPI
          v
+----------------------------+
| STM32F411 Microcontroller   |
| Central Control Logic       |
+----------------------------+
   |              |              |
   | ADC + DMA    | I2C          | SPI
   v              v              v
[IR Sensors]   [AHT20]      [WIZnet W5500]
   |              |              |
   v              v              v
Vault open /   Temperature   Ethernet link,
closed state   humidity      DHCP / DNS base
 

The STM32F411 acts as the central controller. It receives RFID-related access data, samples IR sensor signals through ADC and DMA, reads AHT20 environmental data through I2C, and communicates with the W5500 Ethernet controller through SPI. The architecture is therefore built around a single MCU that consolidates access, physical state, environmental state, and network state.

4. Key Components

4.1 STM32F411 Microcontroller

The STM32F411 is the main control unit. It coordinates the RFID reader, IR detection path, AHT20 environmental monitoring, and W5500 Ethernet module. The repository uses GCC/Makefile-based embedded firmware organization and defines STM32F411-related build configuration.

4.2 MFRC522 RFID Reader

The MFRC522 side is used for keycard detection and UID handling. The keycard module stores up to two allowed UID entries and compares scanned card UIDs against those stored entries.

The quick verification path explicitly skips full card selection and authentication, retrieves the UID, and compares it against saved UIDs. This makes the access path simple and fast, but it also means the quick path is not a strong cryptographic authentication mechanism.

4.3 Keycard Registration Logic

The keycard registration path authenticates using the default sector key, derives a new key from the UID using an XOR-based process, writes the sector trailer, and stores the UID in the local registered-key array.

This is useful as a prototype mechanism, but it should not be described as production-grade access control. The code itself contains a TODO note stating that the current unscramble logic cannot directly recover the byte as written. That is not a tiny detail. That is the code quietly raising its hand and saying, “Please don’t ship me yet.”

4.4 IR Line-Break Sensors

The IR sensor module implements line-break detection using the ADC peripheral. It defines three storage units, and each IR line corresponds to one storage unit. The header states that a connected line means the box is open, while a broken line means the unit is closed.

This makes the IR layer the physical-state verification layer. RFID tells the system who is attempting access; IR line detection tells the system whether the storage compartment is actually open or closed.

4.5 ADC + DMA Sampling

The ADC driver is designed for repeated multi-sensor sampling. It defines 15 sensor samples, two DMA buffers, a data-ready flag, and error handling. The code comments describe the samples as three samples per sensor for false-flag reduction.

The ADC configuration enables continuous conversion, scan mode, DMA requests, and multi-buffer DMA start. This is a better fit for periodic physical-state sensing than manual blocking reads.

4.6 AHT20 Temperature and Humidity Sensor

The AHT20 driver uses I2C and defines the AHT20 device address as 0x38. The header explicitly notes that an I2C multiplexer or additional pins may be required because the AHT20 address is fixed.

The AHT20 data structures include temperature and humidity fields and storage for three units: UNIT0_DATA, UNIT1_DATA, and UNIT2_DATA. This matches the project’s three-vault storage model.

4.7 WIZnet W5500 Ethernet Controller

The W5500 provides the Ethernet foundation. WIZnet describes the W5500 as a hardwired TCP/IP Ethernet controller that uses SPI, embeds TCP/IP, 10/100 Ethernet MAC and PHY, supports 8 hardware sockets, and includes 32 KB internal memory.

In PokeVault, the W5500 driver registers chip-select and SPI byte/burst callbacks, resets the WIZchip, initializes memory, verifies the chip version register, checks PHY link state, runs DHCP, applies static IP fallback if DHCP fails, and initializes DNS.

At the current stage, the W5500 is a network-enabling layer rather than a complete remote application. No complete HTTP server, REST API, dashboard, or alert delivery flow is visible from the checked code.

5. Operating Flow

 
1. User taps an RFID keycard.
2. MFRC522 detects the card and retrieves its UID.
3. STM32F411 compares the UID against registered entries.
4. IR line-break sensors detect each vault’s open/closed state.
5. ADC + DMA collects sensor signals efficiently.
6. AHT20 measures temperature and humidity.
7. STM32F411 consolidates access, vault state, and environment data.
8. W5500 prepares Ethernet connectivity through link check, DHCP, and DNS.
9. The system maintains a security and preservation state for sealed collectibles.
 

This flow shows the project’s core idea: it does not rely on one signal only. Access identity, physical state, and environmental condition are handled as separate inputs that can be consolidated by the MCU.

6. Design Meaning

The strongest idea in PokeVault is the combination of access control, physical open/closed detection, and environmental monitoring. For sealed collectibles, security is not only about theft. Unauthorized opening, poor humidity, temperature changes, and lack of event visibility can all matter.

The W5500 adds a reasonable direction for a fixed-location vault device. A storage box or display cabinet does not need to roam around like a confused laptop. Wired Ethernet can be a stable choice for a stationary embedded system, especially where predictable connectivity matters. The current implementation does not complete the remote layer, but the network foundation is clearly present.

7. Important Limitations

LimitationWhy It Matters
UID-based quick verificationFast, but not strong security
Key handling TODO remainsThe code itself marks part of the key logic as unresolved
W5500 app layer is incompleteEthernet initialization exists, but full remote functions are not visible
AHT20 fixed I2C addressMultiple sensors require multiplexer or additional bus/pin planning
Possible SPI chip-select conflictMFRC522 and W5500 are both mapped to GPIOA pin 10 in io.c
Sparse documentationThe README is too short to explain the system without reading the code

The SPI chip-select issue is especially important. The IO configuration maps both IO_SPI_CS_MFRC and IO_SPI_CS_W5500 to GPIOA pin 10. Unless there is an external selection mechanism not visible in the repository, independent SPI device selection would be problematic.

8. Practical Applications

PokeVault is most relevant as a reference structure for:

AreaUse Case
Collectible storageSealed card packs, limited-edition items, small valuable collectibles
Small display securityOpen/closed detection for display boxes
Environmental storageMonitoring temperature and humidity-sensitive items
STM32 learningRFID, ADC + DMA, I2C, SPI, and Ethernet integration
W5500 integrationBasic Ethernet initialization using DHCP, DNS, and PHY link checks

The project is better treated as an embedded security-system prototype than a finished consumer product. Its core value is architectural: combining RFID, physical state sensing, environmental monitoring, and Ethernet groundwork in one embedded device.

9. Technical Assessment

ItemAssessment
Concept clarityHigh
Hardware directionStrong and coherent
Firmware layeringReasonable, with separated drivers and app modules
Security strengthPrototype-level
Network readinessFoundational, not complete
Product completenessLow to medium
Expansion potentialHigh

PokeVault has a clear technical direction. Its strongest point is the way it combines physical security and preservation monitoring. Its weakest points are the incomplete upper application layer, UID-centered RFID verification, unresolved key logic, and hardware pin-mapping concern. The system has enough structure to be technically interesting, but not enough completion to be treated as a finished secure vault.

 

1. 프로젝트 개요

PokeVault는 sealed collectible을 보관하기 위한 STM32 기반 보안 박스형 임베디드 프로젝트다. README는 이 프로젝트를 Pokémon sealed collectors를 위한 개인용 storage/security system으로 짧게 소개한다. 하지만 저장소 내부 코드를 보면 단순 보관함 설명보다 더 구체적인 구조가 드러난다. RFID 접근 제어, IR line-break 개폐 감지, AHT20 온습도 측정, WIZnet W5500 Ethernet 초기화 코드가 함께 들어 있다.

현재 저장소는 완성 제품 형태라기보다, 하드웨어 기능을 붙이고 검증하는 펌웨어 프로토타입에 가깝다. GitHub 저장소 기준 릴리스가 없고, README도 매우 짧다. 저장소는 Core, Drivers, Makefile, startup file, linker script, .ioc 파일을 포함하는 STM32 계열 펌웨어 구조를 가진다.

2. 시스템이 해결하려는 문제

값비싼 sealed collectible은 단순히 상자에 넣어두는 것만으로 충분히 보호되지 않는다. 누가 접근했는지, 실제로 보관함이 열렸는지, 내부 환경이 안정적인지, 외부 시스템과 연결될 수 있는지가 중요해진다. PokeVault는 이 문제를 네 가지 축으로 나누어 다룬다.

문제구성요소역할
접근 권한 확인MFRC522 RFID / keycard logic등록된 카드인지 확인
보관 유닛 개폐 감지IR line-break sensor각 vault의 open/closed 상태 감지
보관 환경 확인AHT20온도와 습도 측정
외부 연결 기반WIZnet W5500Ethernet link, DHCP, DNS 기반 제공

이 프로젝트의 방향은 “잠금장치 하나 붙인 박스”가 아니라, 접근·개폐·환경·네트워크를 함께 보는 물리 보안 시스템이다. 물론 아직 완성도는 중간 단계다. 하지만 방향 자체는 꽤 선명하다.

3. 전체 구조

 
[사용자 / RFID Keycard]
          |
          v
[MFRC522 RFID Reader]
          |
          | SPI
          v
+----------------------------+
| STM32F411 Microcontroller   |
| Central Control Logic       |
+----------------------------+
   |              |              |
   | ADC + DMA    | I2C          | SPI
   v              v              v
[IR Sensors]   [AHT20]      [WIZnet W5500]
   |              |              |
   v              v              v
Vault open /   온도·습도     Ethernet link,
closed 상태    데이터        DHCP / DNS 기반
 

STM32F411은 시스템의 중앙 제어기다. RFID 리더에서 접근 정보를 받고, IR 센서 신호를 ADC + DMA로 수집하며, AHT20의 온습도 데이터를 I2C로 읽고, W5500을 SPI로 제어한다. 이 구조에서는 MCU가 단순 입출력 제어기가 아니라 접근 상태, 보관 상태, 환경 상태, 네트워크 상태를 통합하는 제어 허브가 된다.

4. 핵심 구성요소

4.1 STM32F411 Microcontroller

STM32F411은 PokeVault의 중심 MCU다. Makefile은 STM32F411xE define, Cortex-M4 컴파일 옵션, STM32 HAL driver, CMSIS, W5500 관련 include path를 포함한다. 또한 keycard.c, adc.c, aht20.c, ir_sensor.c, mfrc522.c, w5500.c 같은 애플리케이션·드라이버 파일을 빌드 대상으로 포함한다.

4.2 MFRC522 RFID Reader

MFRC522는 RFID keycard를 감지하고 UID를 읽는 역할을 한다. Keycard 모듈은 허용된 UID를 최대 2개 저장하도록 정의되어 있고, 등록된 UID와 현재 감지된 UID를 비교해 접근 허용 여부를 판단한다.

keycard_quick_scan()은 빠른 인증을 위해 카드 선택과 인증 과정을 생략하고 UID를 가져와 저장된 UID 목록과 비교한다. 이 방식은 빠르지만, 강한 보안 인증 방식으로 보기에는 부족하다. UID 비교 기반 구조는 복제 가능성이나 spoofing 가능성을 반드시 고려해야 한다.

4.3 Keycard 등록 구조

카드 등록 흐름은 기본 sector key로 인증한 뒤, UID 기반 XOR 방식으로 새 sector key를 만들고, sector trailer에 기록한 다음, 해당 UID를 내부 배열에 저장한다.

다만 코드 내부에는 unscramble_key() 처리와 관련된 TODO가 남아 있다. 즉, key 처리 로직은 아직 완전히 안정화된 상태로 보기 어렵다. 여기서 “강력한 보안 시스템”이라고 포장하면 코드가 뒤에서 조용히 비웃는다.

4.4 IR Line-Break Sensor

IR sensor 모듈은 ADC peripheral을 사용해 line-break detection을 구현한다. 헤더에는 세 개 storage unit이 정의되어 있고, 각 IR line이 하나의 storage unit에 대응한다고 되어 있다. line connected 상태는 box open, line broken 상태는 closed를 의미한다.

이 구조에서 IR sensor는 실제 보관 유닛의 물리 상태를 확인하는 계층이다. RFID가 “누가 접근했는가”를 다룬다면, IR line-break는 “실제로 열렸는가”를 다룬다.

4.5 ADC + DMA

ADC 드라이버는 여러 센서 값을 반복적으로 수집하기 위한 구조를 가진다. 코드에는 15개 sensor sample, 두 개 DMA buffer, data ready flag, transfer error flag가 정의되어 있다. 주석상 15개 샘플은 false flag를 줄이기 위한 센서당 3개 샘플 구조로 설명된다.

ADC 설정은 continuous conversion mode, scan conversion mode, DMA continuous request를 사용한다. 또한 HAL_DMAEx_MultiBufferStart_IT()로 두 개의 DMA buffer를 사용해 ADC 데이터를 수집한다. 이 구조는 주기적인 센서 감시에 적합하다.

4.6 AHT20 온습도 센서

AHT20은 온도와 습도를 측정하는 I2C 기반 센서로 사용된다. 헤더에는 AHT20 device address가 0x38로 정의되어 있으며, 주소가 고정되어 있기 때문에 여러 센서를 사용하려면 I2C multiplexer 또는 추가 핀이 필요하다는 주석이 있다.

AHT20 데이터 구조는 온도와 습도 필드를 포함하고, UNIT0_DATA, UNIT1_DATA, UNIT2_DATA를 정의한다. 이는 세 개 보관 유닛 각각에 대한 환경 데이터를 다루려는 구조로 해석할 수 있다.

4.7 WIZnet W5500 Ethernet Controller

W5500은 유선 Ethernet 연결을 담당하는 칩이다. WIZnet 공식 설명 기준 W5500은 SPI로 외부 MCU와 연결되는 hardwired TCP/IP Ethernet controller이며, TCP/IP stack, 10/100 Ethernet MAC & PHY, 8개 hardware socket, 32KB internal memory를 제공한다.

PokeVault의 W5500 드라이버는 chip-select callback, SPI byte/burst callback을 등록하고, WIZchip reset, memory 초기화, version register 확인, PHY link 확인을 수행한다. 이후 DHCP를 실행하고, DHCP 실패 시 static IP를 적용하며, DNS를 초기화한다.

현재 코드 기준 W5500은 완성된 원격 서비스 계층이라기보다, Ethernet 동작을 위한 기반 계층에 가깝다. HTTP server, REST API, dashboard, event notification 같은 상위 흐름은 명확히 확인되지 않는다.

5. 동작 흐름

 
1. 사용자가 RFID keycard를 태그한다.
2. MFRC522가 카드를 감지하고 UID를 읽는다.
3. STM32F411이 UID를 등록된 값과 비교한다.
4. 접근이 허용되면 vault access 상태를 갱신한다.
5. IR line-break sensor가 각 vault의 open/closed 상태를 감지한다.
6. ADC + DMA가 IR sensor 신호를 반복적으로 수집한다.
7. AHT20이 온도와 습도를 측정한다.
8. STM32F411이 접근 상태, vault 상태, 환경 데이터를 통합한다.
9. W5500이 Ethernet link, DHCP, DNS 기반을 준비한다.
10. 장치는 sealed collectible의 접근·개폐·환경 상태를 감시한다.
 

핵심은 단일 입력에 의존하지 않는다는 점이다. RFID는 사용자 접근을 확인하고, IR sensor는 실제 보관 유닛의 상태를 확인하며, AHT20은 환경 조건을 확인한다. W5500은 이 데이터를 외부 시스템으로 확장할 수 있는 네트워크 기반을 제공한다.

6. 설계 의미

PokeVault의 설계 의미는 물리 보안과 보존 환경 감시를 하나의 임베디드 장치 안에 결합했다는 점에 있다. sealed collectible은 개봉 여부와 보관 환경이 모두 중요할 수 있다. RFID만 있으면 접근 제어만 가능하고, 온습도 센서만 있으면 환경 감시만 가능하다. PokeVault는 이 둘에 IR line-break 감지를 추가해 실제 보관 유닛의 상태까지 확인하려 한다.

W5500 선택도 장치 성격과 잘 맞는다. 보관함이나 전시함은 대체로 고정 설치형 장치이므로, Wi-Fi보다 Ethernet이 안정적인 선택일 수 있다. 추론임: 이 프로젝트에서 W5500은 향후 원격 상태 확인, 알림, 이벤트 기록 같은 기능을 붙이기 위한 기반으로 해석할 수 있다. 단, 현재 저장소만 기준으로 보면 그 상위 기능은 아직 완성되어 있지 않다.

7. 중요한 한계

한계의미
UID 기반 quick verification빠르지만 강한 보안 인증으로 보기 어렵다
Key 처리 TODO 존재보안 로직이 완전히 안정화되지 않았다
W5500 상위 기능 미완성Ethernet 초기화는 있으나 원격 서비스 흐름은 부족하다
AHT20 고정 주소 문제다중 센서 구성 시 I2C multiplexer 또는 추가 핀 필요
SPI chip-select 충돌 가능성MFRC522와 W5500이 같은 GPIOA pin 10에 매핑되어 있다
README 부족코드 확인 없이는 시스템 의도를 파악하기 어렵다

특히 SPI chip-select 설정은 주의가 필요하다. io.c에서 IO_SPI_CS_MFRCIO_SPI_CS_W5500이 모두 GPIOA pin 10으로 설정되어 있다. 실제 회로에서 별도 선택 구조가 없다면 두 SPI 장치를 독립적으로 제어하기 어렵다.

AHT20도 마찬가지다. 주소가 고정되어 있기 때문에 세 개 보관 유닛에 각각 센서를 배치하려면 I2C multiplexer나 별도 I2C bus 설계가 필요하다. 이 문제를 무시하면 하드웨어 조립 후에 “왜 센서가 하나처럼 보이지?”라는 슬픈 의식을 치르게 된다.

8. 적용 가능성

적용 영역설명
수집품 보관함미개봉 카드팩, 한정판 굿즈, 소형 고가 수집품 보관
소형 전시 보안함진열품의 접근 및 개폐 상태 감시
환경 감시 캐비닛온습도에 민감한 물품의 보관 상태 확인
STM32 학습 프로젝트RFID, ADC + DMA, I2C, SPI, Ethernet 통합 구조 학습
W5500 적용 예제DHCP, DNS, PHY link 확인 기반 Ethernet 초기화 참고

PokeVault는 완성된 소비자 제품이라기보다는, STM32 기반 물리 보안 시스템의 구조 사례로 보는 것이 정확하다. 강점은 RFID, IR, AHT20, W5500을 하나의 장치 구조 안에 결합했다는 점이고, 약점은 보안 강도와 상위 애플리케이션 완성도다.

9. 핵심 설명문

PokeVault는 sealed collectible을 보호하기 위한 STM32 기반 보안 박스형 임베디드 시스템이다. RFID keycard를 통해 접근 권한을 확인하고, IR line-break sensor로 각 보관 유닛의 열림/닫힘 상태를 감지하며, AHT20으로 온도와 습도를 측정한다. WIZnet W5500은 Ethernet 연결 기반을 담당하며, DHCP, DNS, PHY link 확인을 통해 유선 네트워크 확장 가능성을 제공한다. 현재 구현은 완성 장치보다는 하드웨어 기능 검증과 펌웨어 구조 구축 단계에 가깝다.

10. 기술 판단

항목판단
아이디어 명확성높음. 수집품 보관, 접근 제어, 환경 감시라는 방향이 분명하다.
하드웨어 구성 의미높음. RFID, IR, AHT20, W5500 조합이 장치 목적과 잘 맞는다.
펌웨어 구조중간 이상. 드라이버 분리는 되어 있으나 앱 계층은 아직 약하다.
보안 강도낮음~중간. UID 기반 인증은 보완이 필요하다.
네트워크 완성도중간 이하. W5500 초기화 기반은 있으나 상위 통신 기능은 부족하다.
확장 가능성높음. 원격 알림, 상태 기록, 웹 대시보드, MQTT 전송 등으로 확장 가능하다.
완제품성낮음. 현재는 기능 검증과 기반 구축 단계에 가깝다.

11. 최종 정리

PokeVault는 수집품 보안 장치라는 카테고리에 가장 잘 맞는다. 단순 보관함이 아니라 RFID 접근 제어, IR 개폐 감지, 온습도 측정, Ethernet 연결 기반을 포함하기 때문이다. W5500은 이 구조에서 원격 상태 확인과 알림 기능으로 확장될 수 있는 유선 네트워크 계층을 담당한다.

현재 단계에서는 완성 제품이라기보다 STM32 기반 물리 보안 시스템 프로토타입으로 보는 것이 정확하다. 강점은 구조적 방향성이고, 약점은 앱 계층 완성도와 보안 강도다. 다듬으면 수집품 보관함, 소형 전시 보안함, 환경 감시 캐비닛 같은 장치로 확장할 수 있다.

12. 저자 정보

저장소 소유자는 GitHub 사용자 HectorJardines다. GitHub 저장소는 HectorJardines/PokeVault 경로의 public repository이며, 확인 시점 기준 7 commits, 0 stars, 0 forks, no releases 상태로 표시된다. 저장소 언어 비율은 C 97.1%, Assembly 2.8%, Other 0.1%로 표시된다.

공개 저장소 정보만으로 저자의 소속, 직함, 경력, 전문 분야를 확정할 수는 없다. 확인 가능한 범위에서는 STM32 기반 C 펌웨어, RFID, 센서, W5500 Ethernet 같은 임베디드 구성요소를 사용한 개인 프로젝트로 판단된다. 추론임: 저자는 MCU 기반 장치 제어와 센서 통합을 실습하거나 개발 중인 임베디드 개발자로 보는 것이 자연스럽다.

Documents
  • PokeVault

Comments Write