"Imbedded - 테이블탑 프로젝터"의 두 판 사이의 차이

MIE capstone
이동: 둘러보기, 검색
(위키 기능 활용하여 가시성 및 통일성 개선 - 정보박스, 진행률 표시, 시각적 요소 추가)
(EmSys2025B (토론)의 16059판 편집을 되돌림)
1번째 줄: 1번째 줄:
{{목차제한|2}}
+
==프로젝트 소개==
<div style="float: right; width: 350px; margin-left: 20px;">
+
테이블탑 프로젝터는 프로젝터를 이용하여 테이블 위에 게임 화면을 투사하고, 터치 센서를 통해 사용자와 상호작용할 수 있는 인터랙티브 게임 플랫폼입니다. 다양한 보드게임과 카드게임을 디지털화하여 여러 사용자가 함께 즐길 수 있는 새로운 형태의 게임 환경을 제공합니다.
{| class="wikitable" style="width: 100%; background-color: #f8f9fa; border: 1px solid #a2a9b1;"
+
 
|+ style="background-color: #ddd; font-weight: bold; padding: 5px;" | 프로젝트 정보
+
===프로젝트 명===
 +
테이블탑 프로젝터 (Tabletop Projector)
 +
 
 +
===프로젝트 기간===
 +
2025.3~2025.6
 +
 
 +
===팀 소개===
 +
팀명: Imbedded<br/>
 +
서울시립대학교 기계정보공학과 2020430001 구효본 (팀장)<br/>
 +
서울시립대학교 기계정보공학과 2022430012 김지호 <br/>
 +
서울시립대학교 기계정보공학과 2020430008 류정현 <br/>
 +
서울시립대학교 기계정보공학과 2021430035 조수민 <br/>
 +
서울시립대학교 기계정보공학과 2020430028 전진형 <br/>
 +
 
 +
===개발 소요 비용===
 +
404.8천원 (초기 계획: 183천원)
 +
 
 +
==프로젝트 개요==
 +
 
 +
===초기 개발 컨셉===
 +
'''프로젝트 비전'''
 +
 
 +
보드게임 화면을 책상에 투사하고 영상을 터치함으로써 상호작용이 가능한 장치를 제작하여, 여러 사람들이 개인용 기기로만 접할 수 있었던 게임을 함께 참여할 수 있게 공통된 책상에 투사해주는 시스템을 구현합니다. 전통적인 보드게임의 정적인 특성에서 벗어나, 사용자와 영상의 상호작용으로 동적인 보드게임이 가능해지며, 온라인 게임의 약점으로 꼽혀왔던 사람들과의 대면 부족이라는 문제를 해결할 수 있습니다.
 +
 
 +
'''핵심 가치'''
 +
* '''확장 가능성''': 리눅스 플랫폼 특성상 개발 환경이 잘 갖추어져 있어 향후 추가 보드게임 개발 가능
 +
* '''직관적 조작''': 빠른 터치 속도 및 영상인식을 통한 자연스러운 사용자 상호작용
 +
* '''사회적 연결''': 대면 보드게임의 장점과 디지털 게임의 편의성 결합
 +
 
 +
===프로젝트 요약===
 +
본 프로젝트는 프로젝터와 터치 센서를 결합하여 테이블 위에서 다양한 인터랙티브 게임을 즐길 수 있는 플랫폼을 개발하는 것을 목표로 합니다. 라즈베리파이를 중심으로 한 제어 시스템과 벨로스탯(Velostat)을 활용한 터치 모듈, 카메라를 통한 실물 카드 인식 시스템을 구현하여 디지털과 아날로그의 장점을 결합한 새로운 게임 경험을 제공합니다.
 +
 
 +
===프로젝트의 배경 및 기대효과===
 +
'''배경'''
 +
* '''기존 보드게임의 한계''': 종이 카드, 고정된 규칙, 제한된 게임 도구로 인한 정적인 플레이 방식
 +
* '''온라인 게임의 한계''': 개인용 기기 중심으로 인한 대면 상호작용 부족, 사회적 단절 현상
 +
* '''기술적 공백''': 프로젝터 활용 프로젝트는 있으나 터치 기능과 카메라 기반 객체 인식을 결합한 사례 부족
 +
* '''시장 요구''': COVID-19 이후 소규모 모임 증가, 홈 엔터테인먼트 수요 증가
 +
 
 +
'''기대효과'''
 +
* '''보드게임 혁신''': 기존 카드와 기물 중심에서 벗어나 복잡하고 다양한 규칙 적용 가능
 +
* '''접근성 향상''': 플레이어가 복잡한 룰을 모두 숙지하지 않아도 시스템 보조로 원활한 게임 진행
 +
* '''사회적 가치''': 온라인 게임의 사회적 단절 문제 보완, 공동 참여형 콘텐츠 발전
 +
* '''콘텐츠 확장성''': 소프트웨어 업데이트를 통한 지속적인 새로운 룰 추가, 기존 IP 재활용
 +
* '''상업적 가능성''': 보드게임 개발사에게 새로운 개발 방향성 제시
 +
 
 +
===프로젝트 개발 목표===
 +
 
 +
'''초기 목표 (2025.4 제안서 기준)'''
 +
{| class="wikitable"
 +
! 평가 항목
 +
! 평가방법
 +
! 초기 목표치
 +
! 최종 목표치 (수정)
 +
! 비중(%)
 
|-
 
|-
! colspan="2" style="background-color: #eee; text-align: center; padding: 10px;" | '''테이블탑 프로젝터'''<br/>Tabletop Projector
+
| 터치 정확도
 +
| 터치 인식 간격 (mm)
 +
| < 30mm
 +
| < 20mm
 +
| 35
 
|-
 
|-
! style="width: 40%;" | 프로젝트명
+
| 터치 응답시간
| 테이블탑 프로젝터
+
| 20회 반복 측정 (ms)
 +
| < 5ms
 +
| < 100ms
 +
| 20
 
|-
 
|-
! 팀명
+
| 카드 객체인식 정확도
| Imbedded
+
| 100프레임당 인식률 (%)
 +
| > 50%
 +
| > 90%
 +
| 10
 
|-
 
|-
! 프로젝트 기간
+
| 게임 응답속도
| 2025.3 ~ 2025.6
+
| 입력-반응 사이 시간 (ms)
 +
| < 100ms
 +
| < 100ms
 +
| 25
 
|-
 
|-
! 예산
+
| 지원 게임 가짓수
| 404.8천원
+
| 빌드된 게임 개수
 +
| 3+ 개
 +
| 2+ 개
 +
| 10
 
|-
 
|-
! 진행률
+
| 화면투사 선명도
| <div style="background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 5px; overflow: hidden;">
+
| sharpness 계산 (%)
<div style="background-color: #4CAF50; width: 80%; text-align: center; color: white;">80%</div>
+
| > 70%
</div>
+
| > 70%
|-
+
| 10
! 주요 기술
 
| • Velostat 터치센서<br/>• 카메라 객체인식<br/>• PyQt5 GUI
 
|-
 
! 지원 게임
 
| • 4인 체스 ✅<br/>• Texas Hold'em ✅<br/>• TRPG 🔄
 
 
|}
 
|}
</div>
 
  
==프로젝트 소개==
+
'''목표 수정 사유'''
'''테이블탑 프로젝터'''는 프로젝터를 이용하여 테이블 위에 게임 화면을 투사하고, 터치 센서를 통해 사용자와 상호작용할 수 있는 인터랙티브 게임 플랫폼입니다. 다양한 보드게임과 카드게임을 디지털화하여 여러 사용자가 함께 즐길 있는 새로운 형태의 게임 환경을 제공합니다.
+
* '''터치 정확도''': 30mm → 20mm (하드웨어 성능 향상으로 목표 강화)
 +
* '''터치 응답시간''': 5ms → 100ms (하드웨어 한계를 고려한 현실적 조정)
 +
* '''카드 인식률''': 50% → 90% (카메라 성능 향상과 알고리즘 개선으로 목표 강화)
 +
* '''게임 가짓수''': 3개 → 2개 (프로젝트 기간 내 완성도 높은 구현을 위한 조정)
 +
 
 +
==개념 설계==
 +
 
 +
===시스템 목적 계통도===
 +
테이블탑 프로젝터는 다음 5가지 핵심 가치를 중심으로 설계되었습니다:
 +
 
 +
'''편의성 (직관성, 조작감)'''
 +
* '''직관성''': 터치와 프로젝터의 빔을 이용하는 테이블탑 프로젝터는 간편한 UI를 제공하여 처음 사용하는 사용자에게도 직관적으로 사용법을 알 수 있도록 설계
 +
* '''조작감''': 뮤직 플레이어의 UI와 유사하게 구성하여 게임이 목록화되고, 각 게임마다의 사진과 설명을 화면 대부분에 할당하여 표시
 +
* 터치라는 익숙한 입력 방식을 통해 스마트폰 사용 경험자들이 쉽게 장치를 조작하고 실행할 수 있도록 구현
 +
 
 +
'''성능 (신속성, 정밀성)'''
 +
* '''신속성''': 터치 압력 감지용 Velostat 소재의 저항값이 민감하게 변하는 구간을 선택하여 정전식 터치방식인 스마트폰과 유사한 압력대를 감지
 +
* '''정밀성''': 저항값이 변하는 지점을 통해 정확한 터치 지점을 좌표 계산하여 mm단위의 정밀한 터치점을 찾아내고, 압력의 세기도 구분하여 범용적인 활용 가능
 +
* 터치 모듈을 구동하는 연산을 아두이노로 분리하여 라즈베리파이에서는 게임 소프트웨어에 리소스를 최대한 투자
 +
* 프로젝터는 해상도보다는 높은 밝기값을 지원하는 제품을 선택하여 주변 빛에 의한 프로젝션 영상의 선명도를 최대한 보존
 +
 
 +
'''확장가능성 (범용성, 확장성)'''
 +
* '''모듈성''': 라즈베리파이, 터치 모듈, 프로젝터, 카메라 각각이 모듈로 구성되어 요구되는 테이블 크기, 게임 성능 등에 따라 시스템 변경 가능
 +
* '''표준화된 단자''': HDMI, USB, FPC/FFC 케이블 등 표준화된 단자를 사용하여 다양한 환경, 가격 조건, 성능 조건에 따라 적합한 시스템 성능 구축 가능
 +
* '''포팅 편의성''': 소스가 LINUX 환경에서 실행되며, 터치 시스템을 하드웨어 부분에서 지원하므로 터치입력 처리만 구현하면 어렵지 않게 이식 가능
 +
 
 +
'''내구성'''
 +
* '''높은 내구성''': 프로젝터, 라즈베리파이, 카메라 모듈은 표준화된 입출력 단자가 존재하여 체결성이 높고 여러번의 탈착에도 높은 내구성 보장
 +
* '''PCB 구현''': 터치 모듈의 복잡한 회로를 PCB 기판으로 구현하고 케이블의 단자를 FPC/FFC 규격으로 압축하여 부품의 탈착, 이동에도 높은 내구성 유지
 +
 
 +
'''경제성'''
 +
* '''비용 절감''': 압력인식 패널, 고가의 카메라 등을 사용하지 않고 저렴한 회로기판과 velostat 소재, 이미지처리 기법과 객체인식 모델을 활용하여 센서 비용 최소화
 +
* '''확장성을 통한 경제성''': 같은 기능을 가진 저렴한 모델(저렴한 프로젝터, 라즈베리파이 4 이하의 CPU 등)로 교체하여 단가 절감 가능성 확보
 +
 
 +
===입력장치 검토 및 선정===
 +
 
 +
'''1. 압력 감지 소자 (Velostat)'''
 +
* '''특성''': 전기 전도성을 띄는 소재로 압력 혹은 비틀림에 의해 전기 저항이 낮아지는 성질을 보유
 +
* '''구조''': 구리선을 상부와 하부에 교차로 배치하여 압력에 의해 구리선 사이의 전류가 흐르는 양을 감지하고, 이를 통해 압력점을 추정
 +
* '''장점''': 저비용, 넓은 면적 커버 가능, 압력 세기 구분 가능
 +
* '''단점''': 정밀도가 전용 터치스크린 대비 낮음
 +
 
 +
'''2. 저항막 방식 터치스크린 패널'''
 +
* '''특성''': ITO 처리된 필름 및 글라스의 2중 레이어로 구성되어 화면을 누르면 레이어가 서로 맞닿으며 발생한 전류와 저항의 변화를 감지
 +
* '''장점''': 높은 정밀도, 상용화된 기술
 +
* '''단점''': 높은 비용, 크기 제한, 압력 세기 구분 어려움
 +
 
 +
'''3. 카메라 모듈 (IMX-219)'''
 +
* '''특성''': 3296 x 2480의 해상도를 지원하는 CMOS 카메라 센서
 +
* '''용도''': 프로젝터의 구조 특성상 객체인식 등에 활용하기 위해 전체 이미지에 비해 작은 사이즈의 ROI만을 사용
 +
* '''장점''': 고해상도로 확대 시 이미지 손실 최소화
 +
* '''단점''': IMX-708 대비 낮은 성능
 +
 
 +
'''4. 카메라 모듈 (OV5647)'''
 +
* '''특성''': 2592 x 1944의 해상도를 지원하는 CMOS 카메라 센서
 +
* '''장점''': IMX-219 모델에 비해 저렴한 가격
 +
* '''단점''': 카메라의 해상도가 낮아 성능 제한
 +
 
 +
===제어장치 검토 및 선정===
 +
 
 +
'''1. Arduino uno'''
 +
* '''역할''': 터치모듈의 연산, Shift register와 Multiplexer 제어를 위한 MCU(Micro Controller Unit)
 +
* '''장점''': 터치 장치에 별개로 연결되어 배선 길이를 줄여 모듈성 향상, 연산 소모를 분할하여 라즈베리파이 리소스 부담 절약
 +
* '''적용성''': 높음
 +
 
 +
'''2. Arduino pro mini'''
 +
* '''특성''': 아두이노 우노와 유사한 MCU 장치로, 크기가 더 작다는 장점
 +
* '''장점''': 소형화에 유리, 아두이노 우노와 동일한 성능
 +
* '''단점''': USB 연결, 핀 체결이 우노에 비해 어려워 작동 테스트 단계에서 사용이 번거로움
 +
 
 +
'''3. Raspberry Pi 4B'''
 +
* '''특성''': HDMI와 USB 연결을 기본적으로 지원하며, 1.8GHz Arm CPU, 4GB의 SDRAM 메모리 보유
 +
* '''장점''': 이더넷 연결과 블루투스 모델을 자체지원하여 추후 기능 확장에 유용
 +
* '''적용성''': 중간
 +
 
 +
'''4. Raspberry Pi 5'''
 +
* '''특성''': 라즈베리파이 4B에서 향상된 2.4GHz Arm CPU, SDRAM 8GB의 메모리로 쾌적한 소프트웨어 실행환경 제공
 +
* '''장점''': 고성능으로 복잡한 게임 로직 처리 가능
 +
* '''단점''': 4B 모델에 비해 높은 비용
 +
* '''적용성''': 높음
 +
 
 +
===통신모듈 검토 및 선정===
 +
 
 +
'''1. USB 유선'''
 +
* '''특성''': 아두이노와 라즈베리파이 사이의 시리얼 통신용 연결단자
 +
* '''장점''': 확장성이 높고 범용성이 높아 다양한 시스템에 터치 모듈 사용 가능, 전원을 컴퓨터로부터 받을 있어 아두이노에 충분한 전력 공급
 +
* '''적용성''': 높음
 +
 
 +
'''2. 블루투스 무선'''
 +
* '''특성''': 아두이노와 라즈베리파이 사이의 시리얼 통신용 블루투스 모듈
 +
* '''장점''': 라즈베리파이의 내장 블루투스 모듈 활용 가능, 유선에 비해 통신선의 제약이 없고 미관상 유리
 +
* '''단점''': 통신 딜레이 및 배터리의 필요성 요구
 +
* '''적용성''': 중간
 +
 
 +
'''3. HDMI 유선'''
 +
* '''특성''': 라즈베리파이와 프로젝터를 연결해주는 단자로 범용적인 영상 데이터 전송 규격
 +
* '''장점''': 고화질 영상 지원, 범용적 사용으로 손쉬운 교체 가능
 +
* '''적용성''': 높음
 +
 
 +
===출력장치 검토 및 선정===
 +
 
 +
'''1. ViewSonic PJD86533WS'''
 +
* '''특성''': 1280*800의 해상도를 지원하며 1m에서 100인치의 투사거리를 갖는 3000ANSI 루멘 밝기의 프로젝터
 +
* '''장점''': 초단초점 지원으로 Tabletop Projector 프로젝트 목적에 부합, 밝은 밝기로 낮에도 충분히 사용 가능, 조금만 거리를 벌려도 투사 영상 크기가 넓어져 다양한 책상에 적용 가능
 +
* '''적용성''': 높음
 +
 
 +
'''2. MAGCUBIC HY450'''
 +
* '''특성''': 1920*1080의 해상도를 지원하며 1.2m에서 100인치의 투사거리를 갖는 900ANSI 루멘 밝기의 프로젝터
 +
* '''장점''': ViewSonic 제품보다 높은 화질, 작은 사이즈로 소형화 가능
 +
* '''단점''': 낮은 밝기 성능으로 주변 조명에 민감
 +
* '''적용성''': 높음
  
<div style="clear: both;"></div>
+
===부품 평가 및 선정 결과===
  
==프로젝트 개요==
+
다음은 개념설계 단계에서 수행한 부품별 평가 결과입니다:
===프로젝트 비전===
 
<div style="background-color: #f0f8ff; border-left: 4px solid #1e90ff; padding: 15px; margin: 10px 0;">
 
'''핵심 가치'''
 
* 🎯 '''직관적 조작''' - 스마트폰처럼 쉬운 터치 인터페이스
 
* ⚡ '''빠른 반응속도''' - 100ms 이내 응답시간 목표
 
* 🔧 '''확장 가능성''' - 새로운 게임 추가 가능한 플랫폼
 
* 🤝 '''사회적 연결''' - 대면 게임의 장점과 디지털 편의성 결합
 
</div>
 
  
===개발 목표 및 달성도===
+
{| class="wikitable"
{| class="wikitable sortable" style="width: 100%; text-align: center;"
+
! 분류
|+ 프로젝트 성능 목표
+
! 설계안
! 평가 항목 !! 초기 목표 !! 최종 목표 !! 현재 상태 !! 달성률
+
! 직관성
 +
! 조작감
 +
! 신속성
 +
! 정밀성
 +
! 확장성
 +
! 내구성
 +
! 경제성
 +
! 합계
 +
! 순위
 +
|-
 +
| rowspan="4" | '''입력장치'''
 +
| Velostat
 +
| -
 +
| 중
 +
| 중
 +
| 중
 +
| 상
 +
| 상
 +
| 상
 +
| 15
 +
| 1
 +
|-
 +
| 터치 패널
 +
| -
 +
| 중
 +
| 중
 +
| 상
 +
| 하
 +
| 하
 +
| 하
 +
| 10
 +
| 2
 +
|-
 +
| IMX219
 +
| -
 +
| -
 +
| -
 +
| 상
 +
| -
 +
| -
 +
| 중
 +
| 5
 +
| 1
 +
|-
 +
| OV5648
 +
| -
 +
| -
 +
| -
 +
| 하
 +
| -
 +
| -
 +
| 상
 +
| 4
 +
| 2
 +
|-
 +
| rowspan="4" | '''제어장치'''
 +
| 아두이노 우노
 +
| -
 +
| -
 +
| -
 +
| -
 +
| 상
 +
| 중
 +
| 상
 +
| 8
 +
| 1
 +
|-
 +
| 아두이노 프로미니
 +
| -
 +
| -
 +
| -
 +
| -
 +
| 하
 +
| 중
 +
| 중
 +
| 5
 +
| 2
 +
|-
 +
| 라즈베리파이4B
 +
| -
 +
| -
 +
| 하
 +
| 하
 +
| 중
 +
| -
 +
| 상
 +
| 7
 +
| 2
 
|-
 
|-
| 터치 정확도 || < 30mm || < 20mm || style="background-color: #90EE90;" | '''✓ 달성''' || 100%
+
| 라즈베리파이 5
 +
| -
 +
| -
 +
|
 +
|
 +
|
 +
| -
 +
|
 +
| 11
 +
| 1
 
|-
 
|-
| 터치 응답시간 || < 5ms || < 100ms || style="background-color: #FFFFE0;" | 측정중 || -
+
| rowspan="3" | '''통신모듈'''
 +
| USB 유선
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| 19
 +
| 1
 
|-
 
|-
| 카드 인식률 || > 50% || > 90% || style="background-color: #90EE90;" | '''✓ 90%+''' || 100%
+
| 블루투스 무선
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| 15
 +
| 2
 
|-
 
|-
| 게임 응답속도 || < 100ms || < 100ms || style="background-color: #FFFFE0;" | 측정중 || -
+
| HDMI
 +
|
 +
| -
 +
| -
 +
|
 +
|
 +
|
 +
|
 +
| 15
 +
| 1
 
|-
 
|-
| 지원 게임 수 || 3개 || 2개 || style="background-color: #90EE90;" | '''✓ 2개 완성''' || 100%
+
| rowspan="2" | '''출력장치'''
 +
| PJD86533WS
 +
| -
 +
| -
 +
| -
 +
| 하
 +
| 중
 +
| 중
 +
| 중
 +
| 10
 +
| 1
 
|-
 
|-
| 화면 선명도 || > 70% || > 70% || style="background-color: #FFFFE0;" | 측정중 || -
+
| HY450
 +
| -
 +
| -
 +
| -
 +
|
 +
|
 +
|
 +
|
 +
| 10
 +
| 1
 
|}
 
|}
  
==시스템 구성==
+
'''평가 기준 정의'''
===하드웨어 아키텍처===
+
* '''직관성''': 직관적으로 사용법을 알 수 있는가?
<div style="border: 2px solid #ccc; border-radius: 10px; padding: 20px; background-color: #f9f9f9;">
+
* '''조작감''': 적은 힘으로 터치 구동이 가능한가?
'''시스템 구성도'''
+
* '''신속성''': 장치의 반응속도가 빠른가?
{| style="width: 100%;"
+
* '''정밀성''': 화면의 가시성, 터치의 정밀도가 높은가?
|-
+
* '''확장성''': 부품 교체 및 업그레이드가 용이한가?
| style="width: 50%; vertical-align: top;" |
+
* '''내구성''': 이동 및 보관 시 배선이 끊어지거나 부품이 손상될 우려는 없는가?
'''제어부'''
+
* '''경제성''': 제품의 비용이 합리적인가?
* 🖥️ Raspberry Pi 5 (2.4GHz, 8GB RAM)
+
 
* 🎮 Arduino Uno (터치 제어)
+
'''선정 결과'''
* 🔌 USB/HDMI 인터페이스
+
상기 평가를 통해 다음과 같이 부품을 선정하였습니다:
 +
* '''입력장치''': Velostat + IMX219
 +
* '''제어장치''': Arduino Uno + Raspberry Pi 5 
 +
* '''통신모듈''': USB 유선 + HDMI 유선
 +
* '''출력장치''': ViewSonic PJD86533WS (1차) / MAGCUBIC HY450 (대안)
 +
 
 +
==초기 시스템 설계==
 +
 
 +
===초기 하드웨어 구성 (제안서 기준)===
 +
'''터치 입력 시스템'''
 +
* 크기: 120 × 90 cm² (최종: 400 × 400 mm로 축소)
 +
* 센서: Velostat 압력 센서 + 구리 테이프 매트릭스
 +
* 제어: Arduino + 멀티플렉서/시프트 레지스터 조합
 +
 
 +
'''영상 처리 시스템'''
 +
* 메인 컨트롤러: Raspberry Pi 4 (최종: Raspberry Pi 5)
 +
* 카메라: SONY IMX 219 8MP (최종: IMX-708 12MP 광각으로 업그레이드)
 +
* 해상도: 3280×2464 (최종: 4608×2592)
 +
 
 +
'''출력 시스템'''
 +
* 프로젝터: Viewsonic PJD8653ws (최종: XGIMI Halo+로 변경)
 +
* 해상도: 1280×800 (최종: 1920×1080)
 +
* 밝기: 3000 ANSI (최종: 더 높은 성능)
 +
 
 +
===초기 게임 계획===
 +
'''1차 게임 - 4인 체스'''
 +
* 목적: 터치 시스템 정확도 및 딜레이 측정
 +
* 특징: 마우스 클릭을 터치로 대체하는 간단한 포팅
 +
* 상태: ✅ 완료 (계획대로 구현)
 +
 
 +
'''2차 게임 - 카드게임'''
 +
* 초기 계획: 유희왕 등 복잡한 카드게임
 +
* 변경 사유:
 +
  * 유희왕: 뒷면 카드 규칙으로 전면 인식 시스템과 부적합
 +
  * 매직: 동시 인식 카드 수 과다, 플레이 영역 초과
 +
* 최종 구현: Texas Hold'em Poker (프로토타입) + 포켓몬 카드게임 (개발 중)
 +
 
 +
'''3차 게임 - TRPG'''
 +
* 계획: LLM API 활용한 사회자 역할 AI
 +
* 목적: AI를 통한 게임 진행 관리, 공정한 랜덤성 제공
 +
* 상태: 📝 개발 중 (캐릭터 생성 시스템 완료, GPT API 연동 예정)
 +
 
 +
==설계 변경사항==
 +
 
 +
===하드웨어 변경사항===
 +
'''터치 모듈'''
 +
* 초기: 터치 지점 오차범위 5mm 이하
 +
* 변경: 터치 지점 오차범위 20mm 이하
 +
* 사유: 벨로스탯에 구리선을 부착할 때 구리선의 폭(5mm)과 간격(20mm) 설정 시, 사람의 손가락이 닿는 면적(8mm)이 신호선들 사이에 고르게 퍼지지 못하는 문제 발생. 초기 알고리즘은 터치 입력 네 곳을 바탕으로 상세한 터치점의 위치를 정하는 것이였으나, 터치 시 네 곳이 동시에 눌리는 것이 아닌 한 곳만 눌리게 되면서 이러한 알고리즘의 적용이 불가능해짐. 시간과 수정의 용이성을 고려하여 소프트웨어의 UI를 수정하는 방법으로 문제 해결.
 +
 
 +
'''커버 설계'''
 +
* 초기: 미니리프트 2개 사용, 볼 조인트 방식 소형문
 +
* 변경: 미니리프트 1개 사용, 미니 경첩 부착 소형문
 +
* 사유:
 +
  * 두 리드 스크류를 용접하여 하나로 연결하더라도 약 7kg에 달하는 프로젝터를 들어 올릴 수 있는 충분한 토크가 발생하는지 불확실
 +
  * 용접 과정에서 리드 스크류의 길이가 미세하게나마 짧아질 경우, 리프트 작동 자체에 문제가 생길 수 있음
 +
  * 실험적 경험에 비추어 볼 때, 한 개의 미니 리프트만으로도 프로젝터를 지지하고 높낮이를 안정적으로 조절할 수 있다는 점이 확인됨
 +
  * 5mm 아크릴 재질에서 볼 조인트 소켓 가공 어려움
 +
 
 +
===소프트웨어 변경사항===
 +
'''1차 게임 요소'''
 +
* 체스 게임: 변동 없음
 +
 
 +
'''2차 게임 요소'''
 +
* 초기 계획: 유희왕 등 카드게임
 +
* 변경: 포커 게임으로 선구현, 포켓몬 카드게임 개발 시도중
 +
* 카메라 모델 변경: imx219 → imx708 120도 광각
 +
* 사유:
 +
  * 유희왕: 뒷면으로 카드를 내는 규칙이 존재하여 현재 시스템에서는 카드의 전면이 드러나야 카메라로 정보를 얻고 게임 로직을 수행할 수 있어 적용이 어려움
 +
  * 매직 더 게더링: 동시에 인식해야하는 카드가 대부분 50장에 달해 라즈베리파이의 연산능력으로 객체인식을 수행함에 있어 어려움이 존재. 또한 플레이 영역이 터치패드와 프로젝션 범위을 넘어설 우려가 있어 제작 후보에서 제외
 +
  * 포켓몬 카드 게임: 턴 선택, 카드의 효과, 데미지 등 PyQt UI로 대체가능한 요소가 다수 존재. 유희왕이나 매직 더 게더링과 달리 뒷면 규칙이 없으며 최대 인식 요구 갯수가 최대 13장으로 라즈베리파이의 연산성능으로 처리가 가능하다고 판단됨
 +
 
 +
'''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차 게임 요소'''
* 🖱️ Velostat 터치 모듈 (400×400mm)
+
* GPT API 연동 완료
* 📷 IMX-708 카메라 (12MP, 120° 광각)
+
* 동적 시나리오 생성 시스템 구현
* 🎯 20mm 터치 정확도
 
  
| style="width: 50%; vertical-align: top;" |
+
===통합 및 테스트===
'''출력부'''
+
'''시스템 통합'''
* 📽️ XGIMI Halo+ 프로젝터
+
* 모듈 간 통합 테스트
* 🖼️ 1920×1080 해상도
+
* 터치 팀과 소프트웨어 팀 UI 크기 조율
* 💡 고휘도 LED 광원
+
* 커버 팀과 카메라 위치 설정 협의
  
'''구조부'''
+
'''최종 테스트'''
* 🏗️ 아크릴 커버 (5mm 무광 검정)
+
* 50cm 카메라 케이블 준비 후 최종 위치 설정
* 🔧 미니 리프트 높이 조절
+
* 캘리브레이션 코드 적용 테스트
* 🚪 미니 경첩 소형문
+
* 전체 시스템 통합 테스트
|}
 
</div>
 
  
===소프트웨어 스택===
+
===개발 일정표===
{| class="wikitable" style="width: 100%;"
+
{| class="wikitable"
! 구분 !! 기술 스택 !! 용도
+
! 개발 내용
 +
! 담당자
 +
! 5월 1-2주
 +
! 5월 3주
 +
! 6월 1주
 +
! 6월 2주
 +
! 6월 3주
 +
|-
 +
| 터치 캘리브레이션 코드 추가
 +
| 터치팀
 +
| ■
 +
| ■
 +
|
 +
|
 +
|
 +
|-
 +
| 프로젝터 하우징
 +
| 구효본, 조수민
 +
| ■
 +
| ■
 +
|
 +
|
 +
|
 
|-
 
|-
| '''운영체제''' || Raspberry Pi OS || 시스템 기반
+
| 1차 프로그램 통합 및 에러처리
 +
| 터치팀
 +
|  
 +
|
 +
| ■
 +
|
 +
|  
 
|-
 
|-
| '''주 언어''' || Python 3.9, C++ || 애플리케이션 개발
+
| 1차 통합 테스트
 +
| 터치팀
 +
|  
 +
|  
 +
| ■
 +
|
 +
|  
 
|-
 
|-
| '''GUI 프레임워크''' || PyQt5 || 사용자 인터페이스
+
| 2차 프로그램 통합
 +
| 터치팀, 전진형
 +
|  
 +
|  
 +
|
 +
| ■
 +
|  
 
|-
 
|-
| '''영상처리''' || OpenCV 4.5 || 카메라 영상 처리
+
| 최종 통합 테스트
 +
| 전체
 +
|  
 +
|  
 +
|
 +
| ■
 +
|  
 
|-
 
|-
| '''딥러닝''' || YOLO v5 || 카드 객체 인식
+
| Feedback 및 디버깅
 +
| 전체
 +
|  
 +
|  
 +
|  
 +
| ■
 +
| ■
 
|-
 
|-
| '''API''' || OpenAI GPT || TRPG 스토리 생성
+
| 최종 프로젝트 발표 준비
 +
| 전체
 +
|  
 +
|  
 +
|  
 +
|
 +
| ■
 
|}
 
|}
  
==개발 내용==
+
==프로젝트 결과==
===[[#터치 시스템|터치 시스템]]===
+
 
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #aaa; padding: 10px;">
+
===현재 달성 성과===
<div style="font-weight: bold; background-color: #eee; padding: 5px;">🔧 기술적 상세 정보 (클릭하여 펼치기)</div>
+
'''하드웨어'''
<div class="mw-collapsible-content">
+
* 터치 모듈: PCB 제작 완료, 마감천 선정 완료
'''Velostat 압력 센서 사양'''
+
* 커버: 설계 변경 완료 및 제작 완료
* 표면 저항: 31,000 Ω/cm²
+
* 카메라: IMX-708로 성능 향상 완료
* 온도 범위: -45°C ~ +65°C
+
 
* 크기: 280mm × 280mm × 0.1mm
+
'''소프트웨어'''
 +
* 1차 게임(체스): 프로젝터 환경 최적화 완료
 +
* 2차 게임(포커): 완전 구현, 카드 인식률 90% 이상 달성
 +
* 3차 게임(TRPG): 캐릭터 및 맵 생성 시스템 구현
 +
 
 +
===평가 항목 달성도===
 +
* 터치 정확도: 20mm 달성 (목표치 충족)
 +
* 터치 응답시간: 측정 예정
 +
* 게임 응답속도: 측정 예정 
 +
* 지원 게임 가짓수: 2개 구현 (체스, 포커) + 1개 개발중 (TRPG)
 +
* 화면투사 선명도: 측정 예정
 +
 
 +
===미구현 내용 및 향후 과제===
 +
* 포켓몬 카드 게임 한국판 인식 모델
 +
* TRPG GPT API 연동
 +
* 터치 캘리브레이션 자동화
 +
* 카메라 최종 위치 확정
 +
* 전체 시스템 통합 테스트
 +
 
 +
==프로젝트 평가==
 +
 
 +
===중간 평가 (2025년 6월 1일 기준)===
 +
'''진행률'''
 +
* 하드웨어: 90% 완료
 +
* 소프트웨어: 75% 완료
 +
* 시스템 통합: 30% 완료
  
'''회로 구성'''
+
'''주요 성과'''
* 74HC595 시프트 레지스터 × 10
+
* 설계 변경을 통한 현실적 목표 재설정
* CD4051D 멀티플렉서 × 10
+
* 터치 모듈 하드웨어 완성
* LMV324 연산증폭기 × 1
+
* 카드 인식 시스템 성공적 구현
* PCB 설계: KiCad (3W rule 적용)
+
* 복수 게임 구현을 통한 플랫폼 확장성 입증
</div>
 
</div>
 
  
===[[#게임 구현|게임 구현]]===
+
'''주요 과제'''
====✅ 1차 게임: 4인 체스====
+
* 한국어 카드 인식 문제 해결
* '''상태''': <span style="color: green;">'''완료'''</span>
+
* 시스템 통합 및 안정성 확보
* '''특징''':
+
* 사용자 경험 최적화
  * 4명 동시 플레이 가능
 
  * 프로젝터 환경 최적화 UI
 
  * 터치 오차 보정 적용
 
  
====✅ 2차 게임: Texas Hold'em Poker====
+
==예산 내역==
* '''상태''': <span style="color: green;">'''완료'''</span>
 
* '''주요 기능''':
 
  * YOLO 기반 카드 인식 (90%+ 정확도)
 
  * 2-5인 멀티플레이
 
  * 자동 배팅 및 승자 판별
 
  * 애니메이션 효과
 
  
====🔄 3차 게임: TRPG====
+
===총 예산 변화===
* '''상태''': <span style="color: orange;">'''개발중 (60%)'''</span>
+
* 초기 계획 (2025.4): 183천원
* '''구현 완료''':
+
* 최종 예산 (2025.6): 404.8천원
  * D&D 기반 12개 직업 시스템
+
* 증액 사유: 카메라 업그레이드, 아크릴 판재, PCB 전문 제작
  * Polytopia 맵 생성기
 
  * 캐릭터 생성 UI
 
* '''개발 예정''':
 
  * GPT API 연동
 
  * 동적 스토리 생성
 
  
==진행 현황==
+
===상세 내역 비교===
===개발 타임라인===
+
{| class="wikitable"
<div style="background-color: #f5f5f5; border: 1px solid #ddd; padding: 15px; border-radius: 5px;">
+
! 구분
{| class="wikitable" style="width: 100%;"
+
! 초기 계획 (천원)
! 단계 !! 기간 !! 주요 내용 !! 상태
+
! 최종 실제 (천원)
|-
+
! 주요 변경사항
| '''1단계''' || 2025.3 || 개념 설계 및 부품 선정 || ✅ 완료
 
|-
 
| '''2단계''' || 2025.4 || 하드웨어 제작 및 1차 게임 || ✅ 완료
 
 
|-
 
|-
| '''3단계''' || 2025.5 || 2차 게임 및 시스템 통합 || ✅ 완료
+
| 기본 부품
 +
| 175
 +
| 175
 +
| 동일
 
|-
 
|-
| '''4단계''' || 2025.6 || 3차 게임 및 최종 테스트 || 🔄 진행중
+
| 카메라 업그레이드
|}
+
| -
</div>
+
| 54.2
 
+
| IMX219 → IMX708
===주요 이슈 및 해결===
 
{| class="wikitable mw-collapsible" style="width: 100%;"
 
|+ 문제 해결 기록
 
! 문제 !! 원인 !! 해결 방법 !! 결과
 
 
|-
 
|-
| 터치 정확도 부족 || 센서 간격과 손가락 크기 불일치 || UI 크기 조정으로 대응 || ✅ 해결
+
| 아크릴 판재
 +
| -
 +
| 79.4
 +
| 커버 제작
 
|-
 
|-
| 카메라 성능 부족 || IMX219 화각/화질 한계 || IMX708 광각으로 업그레이드 || ✅ 해결
+
| PCB 제작
 +
| -
 +
| 60.0
 +
| 전문 제작
 
|-
 
|-
| 게임 복잡도 || 유희왕/매직 규칙 복잡 || 포커로 범위 조정 || ✅ 해결
+
| 기타 추가 부품
 +
| 8
 +
| 36.2
 +
| 터치패드 보호재 등
 
|-
 
|-
| 예산 초과 || 부품 업그레이드 필요 || 추가 예산 확보 || ✅ 해결
+
| '''총계'''
 +
| '''183'''
 +
| '''404.8'''
 +
| '''221.8천원 증액'''
 
|}
 
|}
  
==구성==
+
==기술적 상세사항==
{| class="wikitable" style="width: 100%; text-align: center;"
+
 
|+ Imbedded 팀원 소개
+
===Velostat 압력 센서 기술===
! width="20%" | 이름 !! width="20%" | 학번 !! width="30%" | 담당 업무 !! width="30%" | 세부 역할
+
'''원리와 특성'''
 +
* 소재: 전도성 폴리에틸렌 수지 필름에 탄소 블랙 항정전기 플라스틱 침투
 +
* 표면 저항: 31,000 Ω/cm² (일반적으로 100,000Ω/□ 미만)
 +
* 물리적 특성: 열접착 가능, 유연성, 뛰어난 내마모성
 +
* 온도 범위: -45°C ~ +65°C (-50°F ~ 150°F)
 +
* 크기: 280mm × 280mm, 두께 4mil/0.1mm
 +
 
 +
'''매트릭스 구성'''
 +
* 구리 테이프: 5mm 폭으로 최적화 (실험적 검증)
 +
* 배치: 한 면에 구리 열(column), 다른 면에 구리 행(row)
 +
* 보호: 50μm PE(폴리에틸렌) 필름으로 방수 처리
 +
 
 +
===터치 인식 회로===
 +
'''핵심 구성요소'''
 +
* SN74HC595: 반응 신호 제어, 하나의 활성 열(column) 스위칭
 +
* CD4051D: 터치 천의 반응 신호 제어, ADC 연결된 활성 행(row) 선택
 +
* 연산 증폭기: 미약한 신호 증폭
 +
* Arduino: 시프트 레지스터와 멀티플렉서 제어, 직렬 데이터 수신
 +
 
 +
'''PCB 설계 기준'''
 +
* 크로스토크 방지: 3W 규칙 적용
 +
* 도선 사양: 20mil 두께, 12mil 간격
 +
* 신호 무결성 확보
 +
 
 +
===카메라 인식 기술===
 +
'''하드웨어 사양'''
 +
* 센서: Sony IMX708 (12MP, 자동초점, 120도 광각)
 +
* 해상도: 최대 4608×2592
 +
* 인터페이스: CSI (Camera Serial Interface)
 +
 
 +
'''이미지 처리 파이프라인'''
 +
1. 고해상도 캡처 (4608×2592)
 +
2. 이진화 및 윤곽 검출
 +
3. 카드 영역 추출
 +
4. 샤프닝 필터 적용
 +
5. 딥러닝 모델 인식
 +
6. 결과 검증 및 정렬
 +
 
 +
'''인식 정확도 향상 기법'''
 +
* 프로젝터 조명 환경 고려한 임계값 설정
 +
* 카드 크기 비율 검증 (63mm×88mm 기준)
 +
* 여백 포함 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장 데이터베이스
 +
 
 +
===기술 참고 문헌===
 +
[1] M. Kciuk, Z. Kowalik, G. Lo Sciuto, S. Sławski, and S. Mastrostefano, "Intelligent medical Velostat pressure sensor mat based on artificial neural network and Arduino embedded system," Applied System Innovation, vol. 6, no. 5, p. 84, Sep. 2023, doi: 10.3390/asi6050084.
 +
 
 +
[2] L. Yuan, H. Qu, and J. Li, "Velostat sensor array for object recognition," IEEE Sensors Journal, vol. 22, no. 2, pp. 1692–1701, Jan. 15, 2022
 +
 
 +
==팀 구성 및 역할 분담==
 +
 
 +
===구성원별 전문 분야===
 +
{| class="wikitable"
 +
! 팀원명
 +
! 주요 역할
 +
! 세부 담당 업무
 
|-
 
|-
| '''구효본''' || 2020430001 || 팀장, 터치 시스템 || 프로젝트 관리, 터치 하드웨어
+
| 구효본 (팀장)
 +
| 프로젝트 관리, 터치 시스템
 +
| 일정 관리, 진행사항 관리, 터치 하드웨어 구현
 
|-
 
|-
| '''김지호''' || 2022430012 || 터치 시스템 || 터치 설계 및 통합
+
| 김지호
 +
| 터치 시스템, 통합
 +
| 터치 시스템 설계 및 구현, input 시스템 통합
 
|-
 
|-
| '''류정현''' || 2020430008 || 게임 소프트웨어 || 게임 포팅 및 플랫폼
+
| 류정현
 +
| 게임 소프트웨어
 +
| 게임 포팅 및 플랫폼 구현
 
|-
 
|-
| '''조수민''' || 2021430035 || 기구 설계 || 외장 디자인 통합
+
| 조수민
 +
| 기구 설계, 통합
 +
| 외장 디자인 설계, input 시스템 통합
 
|-
 
|-
| '''전진형''' || 2020430028 || AI/객체인식 || 카메라 인식 및 API
+
| 전진형
 +
| AI/객체인식, API
 +
| 객체인식 시스템, API 통합 구현
 
|}
 
|}
  
==기술 문서==
+
==느낀점==
===관련 링크===
+
(프로젝트 완료 후 작성 예정)
* [[Velostat 터치 센서 제작법]]
+
 
* [[YOLO 카드 인식 모델 학습]]
+
==부록==
* [[PyQt5 게임 UI 개발 가이드]]
 
  
===오픈소스 활용===
+
===문제 해결 과정===
<div style="background-color: #fff3cd; border: 1px solid #ffeaa7; padding: 10px; border-radius: 5px;">
+
'''터치 정확도 문제'''
'''사용된 오픈소스 프로젝트'''
+
* 문제: 초기 설계 목표 5mm 정확도 달성 어려움
* 🎮 체스 게임 엔진 (GNU GPL)
+
* 원인: 손가락 접촉면적과 센서 간격 불일치
* 🗺️ Polytopia Map Generator (GNU GPL)
+
* 해결: UI 재설계를 통한 실용적 접근
* 🃏 YOLO 카드 인식 모델 (MIT)
 
* 📊 포켓몬 카드 DB API (Public)
 
</div>
 
  
==향후 계획==
+
'''카메라 성능 문제'''
===단기 목표 (2025.6)===
+
* 문제: IMX219 화질 및 화각 부족
* [ ] 터치 캘리브레이션 자동화
+
* 해결: IMX708 광각 카메라로 업그레이드
* [ ] 포켓몬 카드 게임 완성
 
* [ ] GPT API 연동 완료
 
* [ ] 시스템 통합 테스트
 
  
===장기 확장 계획===
+
'''게임 복잡도 문제'''
* 🎯 추가 게임 장르 지원
+
* 문제: 유희왕, 매직 더 게더링 구현 복잡도 과다
* 🤖 AI 대전 상대 구현
+
* 해결: 포켓몬 카드게임으로 범위 조정
* 🌐 온라인 멀티플레이어
 
* 📱 모바일 앱 연동
 
  
==갤러리==
+
'''예산 관리'''
<gallery mode="packed" heights="200px">
+
* 초기 예산: 183천원
파일:Tabletop_projector_overview.jpg|전체 시스템 구성
+
* 최종 예산: 404.8천원
파일:Touch_module_pcb.jpg|터치 모듈 PCB
+
* 주요 증액 요인: 성능 향상을 위한 부품 업그레이드
파일:Chess_game_demo.jpg|4인 체스 실행 화면
 
파일:Poker_card_recognition.jpg|카드 인식 시연
 
</gallery>
 
''※ 프로젝트 사진을 추가해주세요''
 
  
==참고문헌==
+
===향후 확장 가능성===
<references />
+
* 추가 게임 장르 지원
# M. Kciuk ''et al.'', "Intelligent medical Velostat pressure sensor mat based on artificial neural network and Arduino embedded system," ''Applied System Innovation'', vol. 6, no. 5, p. 84, Sep. 2023.
+
* AI 대전 상대 구현
# L. Yuan ''et al.'', "Velostat sensor array for object recognition," ''IEEE Sensors Journal'', vol. 22, no. 2, pp. 1692–1701, Jan. 2022.
+
* 온라인 멀티플레이어 지원
 +
* 모바일 앱 연동
  
[[분류:2025년 캡스톤 프로젝트]]
+
===프로젝트 느낀점===
[[분류:임베디드 시스템]]
+
* 하드웨어 제약사항을 고려한 현실적 목표 설정의 중요성
[[분류:인터랙티브 게임]]
+
* 프로토타입을 통한 조기 검증의 필요성
[[분류:기계정보공학과]]
+
* 팀 내 소통과 역할 분담의 중요성
 +
* 오픈소스 활용을 통한 개발 효율성 증대

2025년 6월 15일 (일) 01:32 판

목차

프로젝트 소개

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

프로젝트 명

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

프로젝트 기간

2025.3~2025.6

팀 소개

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

개발 소요 비용

404.8천원 (초기 계획: 183천원)

프로젝트 개요

초기 개발 컨셉

프로젝트 비전

보드게임 화면을 책상에 투사하고 영상을 터치함으로써 상호작용이 가능한 장치를 제작하여, 여러 사람들이 개인용 기기로만 접할 수 있었던 게임을 함께 참여할 수 있게 공통된 책상에 투사해주는 시스템을 구현합니다. 전통적인 보드게임의 정적인 특성에서 벗어나, 사용자와 영상의 상호작용으로 동적인 보드게임이 가능해지며, 온라인 게임의 약점으로 꼽혀왔던 사람들과의 대면 부족이라는 문제를 해결할 수 있습니다.

핵심 가치

  • 확장 가능성: 리눅스 플랫폼 특성상 개발 환경이 잘 갖추어져 있어 향후 추가 보드게임 개발 가능
  • 직관적 조작: 빠른 터치 속도 및 영상인식을 통한 자연스러운 사용자 상호작용
  • 사회적 연결: 대면 보드게임의 장점과 디지털 게임의 편의성 결합

프로젝트 요약

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

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

배경

  • 기존 보드게임의 한계: 종이 카드, 고정된 규칙, 제한된 게임 도구로 인한 정적인 플레이 방식
  • 온라인 게임의 한계: 개인용 기기 중심으로 인한 대면 상호작용 부족, 사회적 단절 현상
  • 기술적 공백: 프로젝터 활용 프로젝트는 있으나 터치 기능과 카메라 기반 객체 인식을 결합한 사례 부족
  • 시장 요구: COVID-19 이후 소규모 모임 증가, 홈 엔터테인먼트 수요 증가

기대효과

  • 보드게임 혁신: 기존 카드와 기물 중심에서 벗어나 복잡하고 다양한 규칙 적용 가능
  • 접근성 향상: 플레이어가 복잡한 룰을 모두 숙지하지 않아도 시스템 보조로 원활한 게임 진행
  • 사회적 가치: 온라인 게임의 사회적 단절 문제 보완, 공동 참여형 콘텐츠 발전
  • 콘텐츠 확장성: 소프트웨어 업데이트를 통한 지속적인 새로운 룰 추가, 기존 IP 재활용
  • 상업적 가능성: 보드게임 개발사에게 새로운 개발 방향성 제시

프로젝트 개발 목표

초기 목표 (2025.4 제안서 기준)

평가 항목 평가방법 초기 목표치 최종 목표치 (수정) 비중(%)
터치 정확도 터치 인식 간격 (mm) < 30mm < 20mm 35
터치 응답시간 20회 반복 측정 (ms) < 5ms < 100ms 20
카드 객체인식 정확도 100프레임당 인식률 (%) > 50% > 90% 10
게임 응답속도 입력-반응 사이 시간 (ms) < 100ms < 100ms 25
지원 게임 가짓수 빌드된 게임 개수 3+ 개 2+ 개 10
화면투사 선명도 sharpness 계산 (%) > 70% > 70% 10

목표 수정 사유

  • 터치 정확도: 30mm → 20mm (하드웨어 성능 향상으로 목표 강화)
  • 터치 응답시간: 5ms → 100ms (하드웨어 한계를 고려한 현실적 조정)
  • 카드 인식률: 50% → 90% (카메라 성능 향상과 알고리즘 개선으로 목표 강화)
  • 게임 가짓수: 3개 → 2개 (프로젝트 기간 내 완성도 높은 구현을 위한 조정)

개념 설계

시스템 목적 계통도

테이블탑 프로젝터는 다음 5가지 핵심 가치를 중심으로 설계되었습니다:

편의성 (직관성, 조작감)

  • 직관성: 터치와 프로젝터의 빔을 이용하는 테이블탑 프로젝터는 간편한 UI를 제공하여 처음 사용하는 사용자에게도 직관적으로 사용법을 알 수 있도록 설계
  • 조작감: 뮤직 플레이어의 UI와 유사하게 구성하여 게임이 목록화되고, 각 게임마다의 사진과 설명을 화면 대부분에 할당하여 표시
  • 터치라는 익숙한 입력 방식을 통해 스마트폰 사용 경험자들이 쉽게 장치를 조작하고 실행할 수 있도록 구현

성능 (신속성, 정밀성)

  • 신속성: 터치 압력 감지용 Velostat 소재의 저항값이 민감하게 변하는 구간을 선택하여 정전식 터치방식인 스마트폰과 유사한 압력대를 감지
  • 정밀성: 저항값이 변하는 지점을 통해 정확한 터치 지점을 좌표 계산하여 mm단위의 정밀한 터치점을 찾아내고, 압력의 세기도 구분하여 범용적인 활용 가능
  • 터치 모듈을 구동하는 연산을 아두이노로 분리하여 라즈베리파이에서는 게임 소프트웨어에 리소스를 최대한 투자
  • 프로젝터는 해상도보다는 높은 밝기값을 지원하는 제품을 선택하여 주변 빛에 의한 프로젝션 영상의 선명도를 최대한 보존

확장가능성 (범용성, 확장성)

  • 모듈성: 라즈베리파이, 터치 모듈, 프로젝터, 카메라 각각이 모듈로 구성되어 요구되는 테이블 크기, 게임 성능 등에 따라 시스템 변경 가능
  • 표준화된 단자: HDMI, USB, FPC/FFC 케이블 등 표준화된 단자를 사용하여 다양한 환경, 가격 조건, 성능 조건에 따라 적합한 시스템 성능 구축 가능
  • 포팅 편의성: 소스가 LINUX 환경에서 실행되며, 터치 시스템을 하드웨어 부분에서 지원하므로 터치입력 처리만 구현하면 어렵지 않게 이식 가능

내구성

  • 높은 내구성: 프로젝터, 라즈베리파이, 카메라 모듈은 표준화된 입출력 단자가 존재하여 체결성이 높고 여러번의 탈착에도 높은 내구성 보장
  • PCB 구현: 터치 모듈의 복잡한 회로를 PCB 기판으로 구현하고 케이블의 단자를 FPC/FFC 규격으로 압축하여 부품의 탈착, 이동에도 높은 내구성 유지

경제성

  • 비용 절감: 압력인식 패널, 고가의 카메라 등을 사용하지 않고 저렴한 회로기판과 velostat 소재, 이미지처리 기법과 객체인식 모델을 활용하여 센서 비용 최소화
  • 확장성을 통한 경제성: 같은 기능을 가진 저렴한 모델(저렴한 프로젝터, 라즈베리파이 4 이하의 CPU 등)로 교체하여 단가 절감 가능성 확보

입력장치 검토 및 선정

1. 압력 감지 소자 (Velostat)

  • 특성: 전기 전도성을 띄는 소재로 압력 혹은 비틀림에 의해 전기 저항이 낮아지는 성질을 보유
  • 구조: 구리선을 상부와 하부에 교차로 배치하여 압력에 의해 구리선 사이의 전류가 흐르는 양을 감지하고, 이를 통해 압력점을 추정
  • 장점: 저비용, 넓은 면적 커버 가능, 압력 세기 구분 가능
  • 단점: 정밀도가 전용 터치스크린 대비 낮음

2. 저항막 방식 터치스크린 패널

  • 특성: ITO 처리된 필름 및 글라스의 2중 레이어로 구성되어 화면을 누르면 레이어가 서로 맞닿으며 발생한 전류와 저항의 변화를 감지
  • 장점: 높은 정밀도, 상용화된 기술
  • 단점: 높은 비용, 크기 제한, 압력 세기 구분 어려움

3. 카메라 모듈 (IMX-219)

  • 특성: 3296 x 2480의 해상도를 지원하는 CMOS 카메라 센서
  • 용도: 프로젝터의 구조 특성상 객체인식 등에 활용하기 위해 전체 이미지에 비해 작은 사이즈의 ROI만을 사용
  • 장점: 고해상도로 확대 시 이미지 손실 최소화
  • 단점: IMX-708 대비 낮은 성능

4. 카메라 모듈 (OV5647)

  • 특성: 2592 x 1944의 해상도를 지원하는 CMOS 카메라 센서
  • 장점: IMX-219 모델에 비해 저렴한 가격
  • 단점: 카메라의 해상도가 낮아 성능 제한

제어장치 검토 및 선정

1. Arduino uno

  • 역할: 터치모듈의 연산, Shift register와 Multiplexer 제어를 위한 MCU(Micro Controller Unit)
  • 장점: 터치 장치에 별개로 연결되어 배선 길이를 줄여 모듈성 향상, 연산 소모를 분할하여 라즈베리파이 리소스 부담 절약
  • 적용성: 높음

2. Arduino pro mini

  • 특성: 아두이노 우노와 유사한 MCU 장치로, 크기가 더 작다는 장점
  • 장점: 소형화에 유리, 아두이노 우노와 동일한 성능
  • 단점: USB 연결, 핀 체결이 우노에 비해 어려워 작동 테스트 단계에서 사용이 번거로움

3. Raspberry Pi 4B

  • 특성: HDMI와 USB 연결을 기본적으로 지원하며, 1.8GHz Arm CPU, 4GB의 SDRAM 메모리 보유
  • 장점: 이더넷 연결과 블루투스 모델을 자체지원하여 추후 기능 확장에 유용
  • 적용성: 중간

4. Raspberry Pi 5

  • 특성: 라즈베리파이 4B에서 향상된 2.4GHz Arm CPU, SDRAM 8GB의 메모리로 쾌적한 소프트웨어 실행환경 제공
  • 장점: 고성능으로 복잡한 게임 로직 처리 가능
  • 단점: 4B 모델에 비해 높은 비용
  • 적용성: 높음

통신모듈 검토 및 선정

1. USB 유선

  • 특성: 아두이노와 라즈베리파이 사이의 시리얼 통신용 연결단자
  • 장점: 확장성이 높고 범용성이 높아 다양한 시스템에 터치 모듈 사용 가능, 전원을 컴퓨터로부터 받을 수 있어 아두이노에 충분한 전력 공급
  • 적용성: 높음

2. 블루투스 무선

  • 특성: 아두이노와 라즈베리파이 사이의 시리얼 통신용 블루투스 모듈
  • 장점: 라즈베리파이의 내장 블루투스 모듈 활용 가능, 유선에 비해 통신선의 제약이 없고 미관상 유리
  • 단점: 통신 딜레이 및 배터리의 필요성 요구
  • 적용성: 중간

3. HDMI 유선

  • 특성: 라즈베리파이와 프로젝터를 연결해주는 단자로 범용적인 영상 데이터 전송 규격
  • 장점: 고화질 영상 지원, 범용적 사용으로 손쉬운 교체 가능
  • 적용성: 높음

출력장치 검토 및 선정

1. ViewSonic PJD86533WS

  • 특성: 1280*800의 해상도를 지원하며 1m에서 100인치의 투사거리를 갖는 3000ANSI 루멘 밝기의 프로젝터
  • 장점: 초단초점 지원으로 Tabletop Projector 프로젝트 목적에 부합, 밝은 밝기로 낮에도 충분히 사용 가능, 조금만 거리를 벌려도 투사 영상 크기가 넓어져 다양한 책상에 적용 가능
  • 적용성: 높음

2. MAGCUBIC HY450

  • 특성: 1920*1080의 해상도를 지원하며 1.2m에서 100인치의 투사거리를 갖는 900ANSI 루멘 밝기의 프로젝터
  • 장점: ViewSonic 제품보다 높은 화질, 작은 사이즈로 소형화 가능
  • 단점: 낮은 밝기 성능으로 주변 조명에 민감
  • 적용성: 높음

부품 평가 및 선정 결과

다음은 개념설계 단계에서 수행한 부품별 평가 결과입니다:

분류 설계안 직관성 조작감 신속성 정밀성 확장성 내구성 경제성 합계 순위
입력장치 Velostat - 15 1
터치 패널 - 10 2
IMX219 - - - - - 5 1
OV5648 - - - - - 4 2
제어장치 아두이노 우노 - - - - 8 1
아두이노 프로미니 - - - - 5 2
라즈베리파이4B - - - 7 2
라즈베리파이 5 - - - 11 1
통신모듈 USB 유선 19 1
블루투스 무선 15 2
HDMI - - 15 1
출력장치 PJD86533WS - - - 10 1
HY450 - - - 10 1

평가 기준 정의

  • 직관성: 직관적으로 사용법을 알 수 있는가?
  • 조작감: 적은 힘으로 터치 구동이 가능한가?
  • 신속성: 장치의 반응속도가 빠른가?
  • 정밀성: 화면의 가시성, 터치의 정밀도가 높은가?
  • 확장성: 부품 교체 및 업그레이드가 용이한가?
  • 내구성: 이동 및 보관 시 배선이 끊어지거나 부품이 손상될 우려는 없는가?
  • 경제성: 제품의 비용이 합리적인가?

선정 결과 상기 평가를 통해 다음과 같이 부품을 선정하였습니다:

  • 입력장치: Velostat + IMX219
  • 제어장치: Arduino Uno + Raspberry Pi 5
  • 통신모듈: USB 유선 + HDMI 유선
  • 출력장치: ViewSonic PJD86533WS (1차) / MAGCUBIC HY450 (대안)

초기 시스템 설계

초기 하드웨어 구성 (제안서 기준)

터치 입력 시스템

  • 크기: 120 × 90 cm² (최종: 400 × 400 mm로 축소)
  • 센서: Velostat 압력 센서 + 구리 테이프 매트릭스
  • 제어: Arduino + 멀티플렉서/시프트 레지스터 조합

영상 처리 시스템

  • 메인 컨트롤러: Raspberry Pi 4 (최종: Raspberry Pi 5)
  • 카메라: SONY IMX 219 8MP (최종: IMX-708 12MP 광각으로 업그레이드)
  • 해상도: 3280×2464 (최종: 4608×2592)

출력 시스템

  • 프로젝터: Viewsonic PJD8653ws (최종: XGIMI Halo+로 변경)
  • 해상도: 1280×800 (최종: 1920×1080)
  • 밝기: 3000 ANSI (최종: 더 높은 성능)

초기 게임 계획

1차 게임 - 4인 체스

  • 목적: 터치 시스템 정확도 및 딜레이 측정
  • 특징: 마우스 클릭을 터치로 대체하는 간단한 포팅
  • 상태: ✅ 완료 (계획대로 구현)

2차 게임 - 카드게임

  • 초기 계획: 유희왕 등 복잡한 카드게임
  • 변경 사유:
 * 유희왕: 뒷면 카드 규칙으로 전면 인식 시스템과 부적합
 * 매직: 동시 인식 카드 수 과다, 플레이 영역 초과
  • 최종 구현: Texas Hold'em Poker (프로토타입) + 포켓몬 카드게임 (개발 중)

3차 게임 - TRPG

  • 계획: LLM API 활용한 사회자 역할 AI
  • 목적: AI를 통한 게임 진행 관리, 공정한 랜덤성 제공
  • 상태: 📝 개발 중 (캐릭터 생성 시스템 완료, GPT API 연동 예정)

설계 변경사항

하드웨어 변경사항

터치 모듈

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

커버 설계

  • 초기: 미니리프트 2개 사용, 볼 조인트 방식 소형문
  • 변경: 미니리프트 1개 사용, 미니 경첩 부착 소형문
  • 사유:
 * 두 리드 스크류를 용접하여 하나로 연결하더라도 약 7kg에 달하는 프로젝터를 들어 올릴 수 있는 충분한 토크가 발생하는지 불확실
 * 용접 과정에서 리드 스크류의 길이가 미세하게나마 짧아질 경우, 리프트 작동 자체에 문제가 생길 수 있음
 * 실험적 경험에 비추어 볼 때, 한 개의 미니 리프트만으로도 프로젝터를 지지하고 높낮이를 안정적으로 조절할 수 있다는 점이 확인됨
 * 5mm 아크릴 재질에서 볼 조인트 소켓 가공 어려움

소프트웨어 변경사항

1차 게임 요소

  • 체스 게임: 변동 없음

2차 게임 요소

  • 초기 계획: 유희왕 등 카드게임
  • 변경: 포커 게임으로 선구현, 포켓몬 카드게임 개발 시도중
  • 카메라 모델 변경: imx219 → imx708 120도 광각
  • 사유:
 * 유희왕: 뒷면으로 카드를 내는 규칙이 존재하여 현재 시스템에서는 카드의 전면이 드러나야 카메라로 정보를 얻고 게임 로직을 수행할 수 있어 적용이 어려움
 * 매직 더 게더링: 동시에 인식해야하는 카드가 대부분 50장에 달해 라즈베리파이의 연산능력으로 객체인식을 수행함에 있어 어려움이 존재. 또한 플레이 영역이 터치패드와 프로젝션 범위을 넘어설 우려가 있어 제작 후보에서 제외
 * 포켓몬 카드 게임: 턴 선택, 카드의 효과, 데미지 등 PyQt UI로 대체가능한 요소가 다수 존재. 유희왕이나 매직 더 게더링과 달리 뒷면 규칙이 없으며 최대 인식 요구 갯수가 최대 13장으로 라즈베리파이의 연산성능으로 처리가 가능하다고 판단됨

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% 완료

주요 성과

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

주요 과제

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

예산 내역

총 예산 변화

  • 초기 계획 (2025.4): 183천원
  • 최종 예산 (2025.6): 404.8천원
  • 증액 사유: 카메라 업그레이드, 아크릴 판재, PCB 전문 제작

상세 내역 비교

구분 초기 계획 (천원) 최종 실제 (천원) 주요 변경사항
기본 부품 175 175 동일
카메라 업그레이드 - 54.2 IMX219 → IMX708
아크릴 판재 - 79.4 커버 제작
PCB 제작 - 60.0 전문 제작
기타 추가 부품 8 36.2 터치패드 보호재 등
총계 183 404.8 221.8천원 증액

기술적 상세사항

Velostat 압력 센서 기술

원리와 특성

  • 소재: 전도성 폴리에틸렌 수지 필름에 탄소 블랙 항정전기 플라스틱 침투
  • 표면 저항: 31,000 Ω/cm² (일반적으로 100,000Ω/□ 미만)
  • 물리적 특성: 열접착 가능, 유연성, 뛰어난 내마모성
  • 온도 범위: -45°C ~ +65°C (-50°F ~ 150°F)
  • 크기: 280mm × 280mm, 두께 4mil/0.1mm

매트릭스 구성

  • 구리 테이프: 5mm 폭으로 최적화 (실험적 검증)
  • 배치: 한 면에 구리 열(column), 다른 면에 구리 행(row)
  • 보호: 50μm PE(폴리에틸렌) 필름으로 방수 처리

터치 인식 회로

핵심 구성요소

  • SN74HC595: 반응 신호 제어, 하나의 활성 열(column) 스위칭
  • CD4051D: 터치 천의 반응 신호 제어, ADC 연결된 활성 행(row) 선택
  • 연산 증폭기: 미약한 신호 증폭
  • Arduino: 시프트 레지스터와 멀티플렉서 제어, 직렬 데이터 수신

PCB 설계 기준

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

카메라 인식 기술

하드웨어 사양

  • 센서: Sony IMX708 (12MP, 자동초점, 120도 광각)
  • 해상도: 최대 4608×2592
  • 인터페이스: CSI (Camera Serial Interface)

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

인식 정확도 향상 기법

  • 프로젝터 조명 환경 고려한 임계값 설정
  • 카드 크기 비율 검증 (63mm×88mm 기준)
  • 여백 포함 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장 데이터베이스

기술 참고 문헌

[1] M. Kciuk, Z. Kowalik, G. Lo Sciuto, S. Sławski, and S. Mastrostefano, "Intelligent medical Velostat pressure sensor mat based on artificial neural network and Arduino embedded system," Applied System Innovation, vol. 6, no. 5, p. 84, Sep. 2023, doi: 10.3390/asi6050084.

[2] L. Yuan, H. Qu, and J. Li, "Velostat sensor array for object recognition," IEEE Sensors Journal, vol. 22, no. 2, pp. 1692–1701, Jan. 15, 2022

팀 구성 및 역할 분담

구성원별 전문 분야

팀원명 주요 역할 세부 담당 업무
구효본 (팀장) 프로젝트 관리, 터치 시스템 일정 관리, 진행사항 관리, 터치 하드웨어 구현
김지호 터치 시스템, 통합 터치 시스템 설계 및 구현, input 시스템 통합
류정현 게임 소프트웨어 게임 포팅 및 플랫폼 구현
조수민 기구 설계, 통합 외장 디자인 설계, input 시스템 통합
전진형 AI/객체인식, API 객체인식 시스템, API 통합 구현

느낀점

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

부록

문제 해결 과정

터치 정확도 문제

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

카메라 성능 문제

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

게임 복잡도 문제

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

예산 관리

  • 초기 예산: 183천원
  • 최종 예산: 404.8천원
  • 주요 증액 요인: 성능 향상을 위한 부품 업그레이드

향후 확장 가능성

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

프로젝트 느낀점

  • 하드웨어 제약사항을 고려한 현실적 목표 설정의 중요성
  • 프로토타입을 통한 조기 검증의 필요성
  • 팀 내 소통과 역할 분담의 중요성
  • 오픈소스 활용을 통한 개발 효율성 증대