Imbedded - 테이블탑 프로젝터

MIE capstone
EmSys2025B (토론 | 기여)님의 2025년 6월 15일 (일) 01:08 판 (중간보고서 내용 반영 - 설계변경사항, 상세 진행상황, 기술적 구현내용, 예산내역 업데이트)
이동: 둘러보기, 검색

프로젝트 소개

테이블탑 프로젝터는 프로젝터를 이용하여 테이블 위에 게임 화면을 투사하고, 터치 센서를 통해 사용자와 상호작용할 수 있는 인터랙티브 게임 플랫폼입니다. 다양한 보드게임과 카드게임을 디지털화하여 여러 사용자가 함께 즐길 수 있는 새로운 형태의 게임 환경을 제공합니다.

프로젝트 명

테이블탑 프로젝터 (Tabletop Projector)

프로젝트 기간

2025.3~2025.6

팀 소개

팀명: Imbedded
서울시립대학교 기계정보공학과 2020430001 구효본 (팀장)
서울시립대학교 기계정보공학과 2022430012 김지호
서울시립대학교 기계정보공학과 2020430008 류정현
서울시립대학교 기계정보공학과 2021430035 조수민
서울시립대학교 기계정보공학과 2020430028 전진형

개발 소요 비용

404.8천원

프로젝트 개요

프로젝트 요약

본 프로젝트는 프로젝터와 터치 센서를 결합하여 테이블 위에서 다양한 인터랙티브 게임을 즐길 수 있는 플랫폼을 개발하는 것을 목표로 합니다. 라즈베리파이를 중심으로 한 제어 시스템과 벨로스탯(Velostat)을 활용한 터치 모듈, 카메라를 통한 실물 카드 인식 시스템을 구현하여 디지털과 아날로그의 장점을 결합한 새로운 게임 경험을 제공합니다.

프로젝트의 배경 및 기대효과

배경

  • 기존 보드게임의 한계: 물리적 공간 제약, 게임 준비 시간, 규칙 숙지의 어려움
  • 디지털 게임의 한계: 실물 조작감 부재, 대면 상호작용 부족
  • COVID-19 이후 변화된 여가 문화: 소규모 모임 증가, 홈 엔터테인먼트 수요 증가

기대효과

  • 디지털과 아날로그의 융합을 통한 새로운 게임 경험 제공
  • 다양한 게임을 하나의 플랫폼에서 즐길 수 있는 편의성
  • 실물 카드와 디지털 화면의 상호작용을 통한 몰입감 증대
  • 게임 규칙 자동화로 진입 장벽 감소

프로젝트 개발 목표

주요 목표 1. 터치 인식 시스템: 20mm 이하의 터치 정확도, 100ms 이하의 응답시간 2. 게임 시스템: 최소 2개 이상의 게임 구현, 100ms 이하의 게임 응답속도 3. 프로젝션 시스템: 70% 이상의 화면 선명도 4. 카메라 인식 시스템: 실물 카드 인식을 통한 게임 진행

평가 기준

평가 항목 평가방법 기준 목표치 비중(%)
터치 정확도 터치 인식 간격 mm < 20mm 35
터치 응답시간 20회 반복 측정 (평균) ms < 100ms 20
게임 응답속도 입력-반응 사이 시간 계산 ms < 100ms 25
지원 게임 가짓수 빌드된 게임 개수 2+ 개 10
화면투사 선명도 고정 위치 촬영 후 sharpness 계산  % > 70% 10

설계 변경사항

하드웨어 변경사항

터치 모듈

  • 기존: 터치 지점 오차범위 5mm 이하
  • 변경: 터치 지점 오차범위 20mm 이하
  • 사유: 벨로스탯에 구리선을 부착할 때 구리선의 폭(5mm)과 간격(20mm) 설정 시, 사람의 손가락이 닿는 면적(8mm)이 신호선들 사이에 고르게 퍼지지 못하는 문제 발생. 4개 지점 동시 터치가 아닌 한 곳만 눌리게 되어 기존 알고리즘 적용 불가능. 시간과 수정 용이성을 고려하여 소프트웨어 UI 수정으로 문제 해결.

커버 설계

  • 기존: 미니리프트 2개 사용, 볼 조인트 방식 소형문
  • 변경: 미니리프트 1개 사용, 미니 경첩 부착 소형문
  • 사유:
 * 두 리드 스크류 결합 시 용접 필수, 7kg 프로젝터 지지 토크 불확실
 * 용접 과정에서 리드 스크류 길이 단축 시 리프트 작동 문제 가능성
 * 실험을 통해 리프트 1개로도 안정적 지지 확인
 * 5mm 아크릴 재질에서 볼 조인트 소켓 가공 어려움

소프트웨어 변경사항

1차 게임 요소

  • 체스 게임: 변동 없음

2차 게임 요소

  • 기존: 유희왕 등 카드게임
  • 변경: 포커 게임으로 선구현, 포켓몬 카드게임 개발 시도중
  • 카메라 모델 변경: imx219 → imx708 120도 광각
  • 사유:
 * 유희왕: 뒷면 카드 규칙 존재로 전면 카드 인식 시스템과 부적합
 * 매직 더 게더링: 동시 인식 카드 50장으로 라즈베리파이 연산능력 초과, 플레이 영역이 터치패드 범위 초과
 * 포켓몬: 뒷면 규칙 없음, 최대 인식 요구 갯수 13장으로 처리 가능, 약 16,000장 API 정보 보유

3차 게임 요소

  • LLM API를 활용한 TPRG: 변동 없음

동작 시나리오

1. 시스템 시작: 프로젝터 전원 ON, 라즈베리파이 부팅 2. 게임 선택: 터치를 통해 메인 화면에서 원하는 게임 선택 3. 게임 진행

  * 1차 게임(체스): 터치로 기물 이동
  * 2차 게임(카드게임): 실물 카드를 테이블에 배치, 카메라가 인식하여 게임 진행
  * 3차 게임(TRPG): GPT API를 활용한 스토리 진행

4. 게임 종료: 메인 화면으로 복귀

구현 내용

시스템 구성

하드웨어 구성

  • 제어부: Raspberry Pi 5
  • 출력부: 프로젝터 (XGIMI Halo+)
  • 입력부: 터치 모듈 (Velostat 기반), 카메라 모듈 (IMX-708)
  • 구조부: 아크릴 커버, 미니 리프트

소프트웨어 구성

  • OS: Raspberry Pi OS
  • 개발 언어: Python, C++
  • 주요 라이브러리: PyQt5, OpenCV, GPIO
  • API: GPT API (3차 게임용)

기구부 설계 및 구현

커버 설계

  • 재질: 5mm 두께 무광 아크릴 (검정색)
  • 크기: 프로젝터 크기에 맞춘 맞춤 제작
  • 특징:
 * 미니 리프트 1개를 사용한 높이 조절 기능 (커버 후면 손잡이)
 * 미니 경첩을 이용한 여닫이 소형문
 * 측면 방열구멍 설계
 * 카메라 모듈 장착부
 * 프로젝터 하부면적보다 큰 견고한 아크릴판을 리프트 상단에 부착하여 안정성 확보

터치 패드 구조

  • 크기: 400mm × 400mm
  • 층 구조: 마감천(인조가죽) - Velostat - 구리 테이프
  • 구리선 배치: 5mm 폭, 20mm 간격
  • 마감 소재: 인조가죽 (적절한 반사 특성과 부드러운 사용자 경험 제공)

제어부 및 회로 구현

터치 모듈 회로

  • PCB 설계: 크로스토크 방지를 위한 3W 규칙 적용
  • 도선 사양: 두께 20mil, 간격 12mil (0.5A 기준)
  • 사용 전류: 약 0.3A~0.5A (벨로스탯 가변저항 동작)
  • 주요 부품:
 * 4051D 8-channel multiplexer × 10개
 * 595D 8-Bit Shift Registers × 10개
 * LMV324 Operational Amplifiers × 1개
 * 저항: 10KΩ × 10개, 1KΩ × 10개
 * 커패시터: 100nF 16V × 100개
 * LED × 10개
  • 연결: 2×20 커넥터 사용으로 접촉 불량 최소화
  • 제어: 아두이노 우노 모델 사용 (아두이노 미니는 성능 이슈로 터치 반응 불규칙)

카메라 시스템

  • 모델: IMX-708 (12MP 자동초점 120도 광각)
  • 기존 모델(imx219) 대비 개선사항:
 * 화질 향상으로 카드 인식률 개선
 * 화각 확대로 촬영 범위 증가
 * 자동 초점 기능 추가
  • 위치: 프로젝터 상단 커버 내부
  • 기능: 실물 카드 인식, 게임 상황 촬영

소프트웨어 설계 및 구현

1차 게임 - 체스

  • 기반: 오픈소스 체스 게임을 라즈베리파이 OS에 포팅
  • UI 개선:
 * 기보나, 수 돌리기 등 불필요한 UI 삭제
 * 배경화면을 밝게 설정하여 빔프로젝터 저밝기 환경 대응
 * 체스판 크기 확대로 터치 부정확성 보완
  • 특징: 4명이 동시에 즐길 수 있는 변형 체스

2차 게임 - 카드 게임

게임 UI 설계 필요조건 1. 모든 UI 상호작용은 터치로만 구현 2. 프로젝터 위치에 따른 카메라 비추는 반경 변화 고려하여 인식 기물을 화면 중앙 배치 3. 다중 플레이어를 위한 각 플레이어별 개인 보드 배치 4. 라즈베리파이 부하 고려하여 캡처 방식으로 카메라 인식 구현 5. 초보자 돌발행동 방지를 위한 변수 요소 사전 비활성화 6. 게임 진행을 위한 사회자 역할 메시지 창 구현

Texas Hold'em Poker (프로토타입)

  • 목적: 라즈베리파이 카메라 성능과 객체 인식 성능 검증
  • 카드 인식: YOLO 모델 활용 (테스트 이미지 90% 이상 인식률)
  • 게임 로직:
 * 플레이어 인원 선택 (2-5명)
 * SB, BB 자동 배팅
 * 콜, 체크, 폴드, 레이즈, 올인 배팅 옵션
 * 프리플랍-플랍-턴-리버 단계별 진행
 * 자동 승자 판별 및 배팅액 분배
 * 파산 방지를 위한 3000칩 자동 지급
  • UI 특징:
 * 각 플레이어별 개인 보드 (테이블 외각 배치)
 * 중앙 커뮤니티 카드 배치 (카메라 인식 범위 고려)
 * 배팅액에 따른 애니메이션 효과
 * 쇼다운 상황 특수 효과
  • 변수 처리:
 * 비순차 배팅 방지
 * 턴 종료 전 카드 공개 방지
 * 배팅액에 따른 선택지 제한

카드 인식 프로세스 1. 카메라 설정

  * 해상도: 4608×2592 (IMX-708 최대 해상도)
  * FPS: 30 (33333㎲ 프레임 지속시간)
  * AwbMode: 0 (자동 화이트 밸런스)
  * Sharpness: 1.5 (기본값보다 높은 선명도)

2. 이미지 전처리

  * 카메라 캡처 → 'image' 변수 저장
  * 이진화 처리 (프로젝터 밝은 환경 고려한 임계값 설정)
  * 카드 최소 영역, 가로세로 비율 제한 (실제 카드 63mm×88mm 기준)

3. 카드 검출

  * detect_card_edges() 함수로 카드 윤곽 검출
  * 4개 끝점 좌표 확보
  * 여백 포함한 crop으로 문양/숫자 손상 방지

4. 이미지 보정

  * 샤프닝 커널 적용으로 확대 시 화질 저하 보완
  * 인식 모델 최적화를 위한 이미지 품질 향상

5. 모델 인식

  * YOLO 모델 적용
  * 인식률 30% 이상 결과 중 최고 신뢰도 선택
  * 좌표 정보 활용한 카드 순서 정렬 (Y좌표 오차 허용)

6. 게임 로직 반영

  * 인식 결과를 게임 상태에 반영
  * 승자 판별 로직 실행

포켓몬 카드 게임 (개발 중)

  • API 활용: 16,000여 장의 카드 데이터베이스
  • 특수 효과: 스타디움 카드에 따른 배경 변화
  • 과제: 한국판 카드 인식 모델 부재 (대부분 영문판으로 학습된 모델)
  • 해결방안: 영문판 카드 구매 또는 한국판 카드 일부 학습 모델 제작

3차 게임 - TRPG

  • 맵 생성: Polytopia Map Generator 오픈소스 활용 (GNU GPL 라이선스)
  • 캐릭터 시스템:
 * D&D 기반 12개 직업 선택
 * 스펠 사용 가능 직업: Bard, Cleric, Druid, Paladin, Sorcerer, Warlock, Wizard
 * 직업별 차별화된 스펠 목록
  • 맵 구현: QWebEngineView를 사용하여 HTML 기반 맵을 PyQt5 UI에 통합
  • 스토리 진행: GPT API를 활용한 동적 시나리오 생성 (예정)

현재 진행상황

하드웨어 완성도

터치 모듈 (완료)

  • PCB 제작 완료 및 부품 납땜 완료
  • 터치패드 마감재 선정 완료 (인조가죽)
  • 캘리브레이션 코드 개발 필요

커버 (완료)

  • 아크릴 판재 레이저 커팅 완료
  • 조립 완료
  • 카메라 정확한 설치 위치 협의 필요

소프트웨어 완성도

1차 게임 (완료)

  • 체스 게임 UI 개선 완료
  • 터치 인터페이스 최적화 완료

2차 게임 (80% 완료)

  • Texas Hold'em Poker 게임 로직 완성
  • 카드 인식 시스템 구현 완료
  • 포켓몬 카드 게임 UI 설계 완료
  • 포켓몬 카드 인식 모델 해결 필요

3차 게임 (60% 완료)

  • 캐릭터 생성 시스템 구현 완료
  • 맵 생성 기능 구현 완료
  • GPT API 연동 개발 중

향후 진행 계획 및 일정

하드웨어 개선 계획

터치 모듈

  • 터치 캘리브레이션 코드 추가
  • 가변적 화면 비율 대응 적응형 소프트웨어 개발
  • 초기 시작 시 마커 터치를 통한 캘리브레이션 기능 구현

커버

  • 카메라 모듈 최종 위치 확정
  • 슬라이드 레일 설치 여부 결정 (카메라 깊이에 따라)

소프트웨어 개발 계획

2차 게임 요소

  • 포켓몬 카드 게임 본격 개발
  • 한국판 카드 인식 해결 (영문판 구매 또는 학습 모델 제작)
  • 카드 정보 기반 화려한 효과 구현

3차 게임 요소

  • GPT API 연동 완료
  • 동적 시나리오 생성 시스템 구현

통합 및 테스트

시스템 통합

  • 모듈 간 통합 테스트
  • 터치 팀과 소프트웨어 팀 UI 크기 조율
  • 커버 팀과 카메라 위치 설정 협의

최종 테스트

  • 50cm 카메라 케이블 준비 후 최종 위치 설정
  • 캘리브레이션 코드 적용 테스트
  • 전체 시스템 통합 테스트

개발 일정표

개발 내용 담당자 5월 1-2주 5월 3주 6월 1주 6월 2주 6월 3주
터치 캘리브레이션 코드 추가 터치팀
프로젝터 하우징 구효본, 조수민
1차 프로그램 통합 및 에러처리 터치팀
1차 통합 테스트 터치팀
2차 프로그램 통합 터치팀, 전진형
최종 통합 테스트 전체
Feedback 및 디버깅 전체
최종 프로젝트 발표 준비 전체

프로젝트 결과

현재 달성 성과

하드웨어

  • 터치 모듈: PCB 제작 완료, 마감천 선정 완료
  • 커버: 설계 변경 완료 및 제작 완료
  • 카메라: IMX-708로 성능 향상 완료

소프트웨어

  • 1차 게임(체스): 프로젝터 환경 최적화 완료
  • 2차 게임(포커): 완전 구현, 카드 인식률 90% 이상 달성
  • 3차 게임(TRPG): 캐릭터 및 맵 생성 시스템 구현

평가 항목 달성도

  • 터치 정확도: 20mm 달성 (목표치 충족)
  • 터치 응답시간: 측정 예정
  • 게임 응답속도: 측정 예정
  • 지원 게임 가짓수: 2개 구현 (체스, 포커) + 1개 개발중 (TRPG)
  • 화면투사 선명도: 측정 예정

미구현 내용 및 향후 과제

  • 포켓몬 카드 게임 한국판 인식 모델
  • TRPG GPT API 연동
  • 터치 캘리브레이션 자동화
  • 카메라 최종 위치 확정
  • 전체 시스템 통합 테스트

프로젝트 평가

중간 평가 (2025년 6월 1일 기준)

진행률

  • 하드웨어: 90% 완료
  • 소프트웨어: 75% 완료
  • 시스템 통합: 30% 완료

주요 성과

  • 설계 변경을 통한 현실적 목표 재설정
  • 터치 모듈 하드웨어 완성
  • 카드 인식 시스템 성공적 구현
  • 복수 게임 구현을 통한 플랫폼 확장성 입증

주요 과제

  • 한국어 카드 인식 문제 해결
  • 시스템 통합 및 안정성 확보
  • 사용자 경험 최적화

예산 내역

총 예산

404,800원 (기존 175,000원에서 229,800원 증액)

상세 내역

항목 수량 단가(천원) 금액(천원) 비고
전도성필름 Velostat 14 10.8 151.2 배송비 2.5
구리 테이프 5mm × 30M 1 5.7 5.7 배송비 2.5
에나멜 동선 0.1mm × 10m 2 1.5 3.0 배송비 2.7
4051D 8-channel multiplexer 10 0.6 6.0
595D 8-Bit Shift Registers 10 0.3 3.0
LMV324 Operational Amplifiers 1 1.6 1.6
10KΩ Resistor 10 0.05 0.5
1KΩ Resistor 10 0.05 0.5
100nF 16V Capacitor 100 0.03 3.0
LED 10 0.07 0.7
IMX-708 camera 1 54.2 54.2 imx219에서 업그레이드
40핀 IDC 커넥터 2 1.0 2.0
PCB 5 12.0 60.0
아크릴 판재 5 15.8 79.4
터치패드 보호 필름 2 10.0 20.0
터치패드 커버 1 14.0 14.0
합계 404.8

주요 증액 사유

  • IMX-708 카메라 모듈: 54.2천원 (성능 향상)
  • 아크릴 판재: 79.4천원 (커버 제작)
  • PCB 제작: 60.0천원 (전문 제작)

기술적 상세사항

터치 인식 기술

Velostat 원리

  • 압력 감지형 전도성 필름
  • 압력에 따른 저항값 변화 감지
  • 멀티플렉서를 통한 다점 터치 구현

PCB 설계 기준

  • 크로스토크 방지: 3W 규칙 적용
  • 도선 사양: 20mil 두께, 12mil 간격
  • 신호 무결성 확보

카메라 인식 기술

이미지 처리 파이프라인 1. 고해상도 캡처 (4608×2592) 2. 이진화 및 윤곽 검출 3. 카드 영역 추출 4. 샤프닝 필터 적용 5. 딥러닝 모델 인식 6. 결과 검증 및 정렬

인식 정확도 향상 기법

  • 프로젝터 조명 환경 고려한 임계값 설정
  • 카드 크기 비율 검증
  • 여백 포함 crop으로 정보 손실 방지
  • 좌표 기반 카드 순서 정렬

개발 환경 및 도구

하드웨어 환경

  • 제어 보드: Raspberry Pi 5
  • 개발 보드: Arduino Uno
  • 카메라: IMX-708 12MP 광각
  • 프로젝터: XGIMI Halo+

소프트웨어 환경

  • OS: Raspberry Pi OS
  • 언어: Python 3.9, C++
  • 프레임워크: PyQt5, OpenCV 4.5
  • 딥러닝: YOLO v5
  • API: OpenAI GPT API

개발 도구

  • PCB 설계: KiCad
  • 3D 모델링: Fusion 360
  • 코드 편집: VS Code
  • 이미지 처리: OpenCV, PIL

참고 자료 및 오픈소스

활용 오픈소스

  • 체스 게임: GNU GPL 라이선스
  • YOLO 카드 인식: GitHub 공개 모델
  • Polytopia Map Generator: GNU GPL 라이선스
  • 포켓몬 카드 API: 16,000장 데이터베이스

기술 문서

  • Velostat 압력 센서 원리
  • 라즈베리파이 GPIO 프로그래밍
  • OpenCV 이미지 처리 기법
  • PyQt5 UI 프로그래밍

느낀점

(프로젝트 완료 후 작성 예정)

부록

문제 해결 과정

터치 정확도 문제

  • 문제: 초기 설계 목표 5mm 정확도 달성 어려움
  • 원인: 손가락 접촉면적과 센서 간격 불일치
  • 해결: UI 재설계를 통한 실용적 접근

카메라 성능 문제

  • 문제: IMX219 화질 및 화각 부족
  • 해결: IMX708 광각 카메라로 업그레이드

게임 복잡도 문제

  • 문제: 유희왕, 매직 더 게더링 구현 복잡도 과다
  • 해결: 포켓몬 카드게임으로 범위 조정

향후 확장 가능성

  • 추가 게임 장르 지원
  • AI 대전 상대 구현
  • 온라인 멀티플레이어 지원
  • 모바일 앱 연동