← PROJECTS

BUMITORI

EMBEDDED · 2025

학생증으로 간편하게 관리하는 교내 기숙사 입사 관리 서비스

PERIOD
2025.05 — 2025.06
TEAM
5명 (Team BUMITORI)
TYPE
임베디드 시스템
MY ROLE
PCB 설계 · 펌웨어
STACK
STM32 / RaspberryPI / KiCAD / TinyCAD / PyQt5
GITHUB

배경 & 목표

BUMITORI는 번거로운 기숙사 입사 절차를 자동화한 시스템이다. 기존에는 학생이 특정 장소에 직접 가서 서명해야 해 시간 소모가 크고 관리 효율도 떨어졌다.

이를 개선하기 위해, 학생증의 RFID로 STM32가 태그를 인식하고 라즈베리파이와 통신해 입사 결과를 실시간으로 시각화하는 구조를 구상했다. 학생은 복잡한 절차 없이 간편하게 입사하고, 관리자는 웹에서 입사 현황을 실시간으로 확인한다. 이렇게 양쪽의 편의를 모두 높이는 신속하고 편리한 입사 관리 시스템을 목표로 삼았다.

개발 과정

PHASE 01

PCB 설계

KiCAD로 회로 스케메틱과 2층 PCB를 설계하고 3D 시뮬레이션으로 부품 배치를 검증했다. 보드는 라즈베리파이 7인치 디스플레이 뒤쪽에 그대로 장착되도록 크기를 맞춰, RC522 RFID 리더·부저 등 주변부를 한 보드에 정리했다. 회로도 관리의 효율을 높이기 위해 TinyCAD도 처음 도입해 스케메틱 단계를 함께 정리했다.

PCB 상면 합성 렌더 PCB 하면 합성 렌더 보드 외곽상면 동박하면 동박상면 마스크하면 마스크드릴 (PTH)
KiCAD Gerber — 인터랙티브 (합성 ↔ 레이어 · 상/하면 · 도면층 토글)
PHASE 02

MCU 펌웨어

STM32CubeMX로 NUCLEO-F303K8를 구성하고, RC522 RFID 리더를 SPI로 연동해 태그 데이터를 처리했다. 라즈베리파이와의 UART 통신에는 안전을 위한 검증 로직(CRC)을 적용해 신뢰도를 높였다.

STM32CubeMX — 핀 구성

STM32CubeMX — 주변장치

PHASE 03

GUI · 통합

라즈베리파이 4B + 7인치 디스플레이에서 동작하는 PyQt5 기반 입사 시각화 UI를 구현해, 태그 인식 결과가 실시간으로 화면에 표시되도록 했다. 전원은 UPS(5V·4A)에서 끌어왔다. 임베디드 개발자가 혼자 남으면서 하드웨어·펌웨어·PCB 설계까지 모두 도맡았고, UPS·라즈베리파이·STM32·RFID 모듈을 한 기기에 넣는 공간적 한계를 겪은 끝에 7인치 모니터 뒤에 디바이스를 부착하는 방식으로 정리했다.

PHASE 04

중간 결과물

모니터 뒤에 부착한 디바이스로 RFID 태그부터 입사 시각화까지 한 흐름으로 동작하는 중간 결과물을 완성했다.

중간 결과물

내 역할

5명이 백엔드·프론트엔드·임베디드를 나눠 맡은 가운데, 나는 임베디드 개발자로서 하드웨어가 실제로 동작하는 층 — PCB·펌웨어·GUI를 담당했다.

PCB

기기의 회로 설계 및 보드 제작 전반을 담당 — KiCAD·TinyCAD로 스케메틱과 멀티 레이어 PCB를 설계하고 3D 시뮬레이션으로 검증했다.

FW

STM32 프로그래밍 — RFID 리더기 연동, 데이터 처리, UART 통신을 구현하고, CRC 검증 로직과 인터럽트 구조로 통신 안정성과 응답속도를 개선했다.

HAL

HAL 코드 커스터마이징 — F103에서 F303 시리즈로 변경됨에 따라 호환되지 않는 HAL 함수와 헤더를 직접 분석·수정해 정상 동작하도록 재구성했다.

GUI

PyQt5 기반 GUI — 라즈베리파이에서 동작하는 입사 시각화 UI를 구현해 태그 인식 결과를 실시간으로 표시했다.

트러블슈팅

ENV

STM32F303 라이브러리 이슈

상황

MCU를 F103에서 NUCLEO-F303K8로 변경하면서, F103 기반으로 작성된 대부분의 오픈소스 예제가 F303에서 컴파일 에러를 일으켰다.

원인

HAL 초기화와 클럭 설정을 비롯한 라이브러리들이 F1 시리즈에 맞춰져 있어 F3 시리즈와 호환되지 않았다.

해결

관련 함수와 헤더를 모두 분석해 HAL 초기화·클럭 설정 코드를 F303 환경에 맞게 직접 수정·재구성한 끝에 시스템이 정상 작동하도록 만들었다.

웹 관리자 서비스

기기가 RFID로 인식한 입사 데이터는 팀이 만든 웹 관리자 서비스로 전달되어 실시간으로 시각화된다. 웹 프론트엔드·백엔드는 팀원이 담당했고, 나는 데이터를 만들어 보내는 임베디드 디바이스를 맡았다.

로그인 — 학번·비밀번호

회원가입

출석 리스트 — 실시간 입사 현황 (다크)

출석 리스트 — 라이트 테마

미입소 사유 — 학생 제출

미입소 사유 — 관리자 확인

결과 & 회고

최종적으로 학생증 RFID 태그 한 번으로 입사가 인식되고, 그 결과가 라즈베리파이 GUI에 실시간 표시되는 프로토타입을 완성했다. 태그 인식 성공률은 99% 이상으로 실패가 없었다. STM32–라즈베리파이 UART에는 검증 로직을 더해 통신 오류를 막았다.

다만 실제 기숙사 운영에 배포되지는 못해 실전 배포 경험까지는 닿지 못했다. 향후 방향으로는 여러 출입구로 확장하는 다지점 구조, RTOS 기반 멀티태스킹, UART에서 CAN·RS-485·TCP/IP로의 통신 프로토콜 고도화, 여러 장비를 묶는 통합 관리자 대시보드를 잡고 있다.

이번 프로젝트에서는 제한된 공간에 다양한 장치를 통합하는 설계의 현실적인 어려움을 직접 겪으며 디자인과 기능 사이의 균형을 고민했다. 또 TinyCAD 같은 새로운 툴을 빠르게 익혀 적용하면서, 변화하는 환경에 유연하게 적응하는 능력이 개발자로서의 성장에 얼마나 중요한지 다시금 느꼈다.