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

MIE capstone
이동: 둘러보기, 검색
(개념설계 단계 내용 추가: 시스템 목적 계통도, 입력/제어/통신/출력장치 검토 및 평가, 부품 선정 과정 상세화)
(위키 기능 활용하여 가시성 및 통일성 개선 - 정보박스, 진행률 표시, 시각적 요소 추가)
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)
+
|-
 
+
! colspan="2" style="background-color: #eee; text-align: center; padding: 10px;" | '''테이블탑 프로젝터'''<br/>Tabletop Projector
===프로젝트 기간===
+
|-
2025.3~2025.6
+
! style="width: 40%;" | 프로젝트명
 
+
| 테이블탑 프로젝터
===팀 소개===
 
팀명: Imbedded<br/>
 
서울시립대학교 기계정보공학과 2020430001 구효본 (팀장)<br/>
 
서울시립대학교 기계정보공학과 2022430012 김지호 <br/>
 
서울시립대학교 기계정보공학과 2020430008 류정현 <br/>
 
서울시립대학교 기계정보공학과 2021430035 조수민 <br/>
 
서울시립대학교 기계정보공학과 2020430028 전진형 <br/>
 
 
 
===개발 소요 비용===
 
404.8천원 (초기 계획: 183천원)
 
 
 
==프로젝트 개요==
 
 
 
===초기 개발 컨셉===
 
'''프로젝트 비전'''
 
 
 
보드게임 화면을 책상에 투사하고 영상을 터치함으로써 상호작용이 가능한 장치를 제작하여, 여러 사람들이 개인용 기기로만 접할 수 있었던 게임을 함께 참여할 수 있게 공통된 책상에 투사해주는 시스템을 구현합니다. 전통적인 보드게임의 정적인 특성에서 벗어나, 사용자와 영상의 상호작용으로 동적인 보드게임이 가능해지며, 온라인 게임의 약점으로 꼽혀왔던 사람들과의 대면 부족이라는 문제를 해결할 수 있습니다.
 
 
 
'''핵심 가치'''
 
* '''확장 가능성''': 리눅스 플랫폼 특성상 개발 환경이 잘 갖추어져 있어 향후 추가 보드게임 개발 가능
 
* '''직관적 조작''': 빠른 터치 속도 및 영상인식을 통한 자연스러운 사용자 상호작용
 
* '''사회적 연결''': 대면 보드게임의 장점과 디지털 게임의 편의성 결합
 
 
 
===프로젝트 요약===
 
본 프로젝트는 프로젝터와 터치 센서를 결합하여 테이블 위에서 다양한 인터랙티브 게임을 즐길 수 있는 플랫폼을 개발하는 것을 목표로 합니다. 라즈베리파이를 중심으로 한 제어 시스템과 벨로스탯(Velostat)을 활용한 터치 모듈, 카메라를 통한 실물 카드 인식 시스템을 구현하여 디지털과 아날로그의 장점을 결합한 새로운 게임 경험을 제공합니다.
 
 
 
===프로젝트의 배경 및 기대효과===
 
'''배경'''
 
* '''기존 보드게임의 한계''': 종이 카드, 고정된 규칙, 제한된 게임 도구로 인한 정적인 플레이 방식
 
* '''온라인 게임의 한계''': 개인용 기기 중심으로 인한 대면 상호작용 부족, 사회적 단절 현상
 
* '''기술적 공백''': 프로젝터 활용 프로젝트는 있으나 터치 기능과 카메라 기반 객체 인식을 결합한 사례 부족
 
* '''시장 요구''': COVID-19 이후 소규모 모임 증가, 홈 엔터테인먼트 수요 증가
 
 
 
'''기대효과'''
 
* '''보드게임 혁신''': 기존 카드와 기물 중심에서 벗어나 복잡하고 다양한 규칙 적용 가능
 
* '''접근성 향상''': 플레이어가 복잡한 룰을 모두 숙지하지 않아도 시스템 보조로 원활한 게임 진행
 
* '''사회적 가치''': 온라인 게임의 사회적 단절 문제 보완, 공동 참여형 콘텐츠 발전
 
* '''콘텐츠 확장성''': 소프트웨어 업데이트를 통한 지속적인 새로운 룰 추가, 기존 IP 재활용
 
* '''상업적 가능성''': 보드게임 개발사에게 새로운 개발 방향성 제시
 
 
 
===프로젝트 개발 목표===
 
 
 
'''초기 목표 (2025.4 제안서 기준)'''
 
{| class="wikitable"
 
! 평가 항목
 
! 평가방법
 
! 초기 목표치
 
! 최종 목표치 (수정)
 
! 비중(%)
 
 
|-
 
|-
| 터치 정확도
+
! 팀명
| 터치 인식 간격 (mm)
+
| Imbedded
| < 30mm
 
| < 20mm
 
| 35
 
 
|-
 
|-
| 터치 응답시간
+
! 프로젝트 기간
| 20회 반복 측정 (ms)
+
| 2025.3 ~ 2025.6
| < 5ms
 
| < 100ms
 
| 20
 
 
|-
 
|-
| 카드 객체인식 정확도
+
! 예산
| 100프레임당 인식률 (%)
+
| 404.8천원
| > 50%
 
| > 90%
 
| 10
 
 
|-
 
|-
| 게임 응답속도
+
! 진행률
| 입력-반응 사이 시간 (ms)
+
| <div style="background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 5px; overflow: hidden;">
| < 100ms
+
<div style="background-color: #4CAF50; width: 80%; text-align: center; color: white;">80%</div>
| < 100ms
+
</div>
| 25
 
 
|-
 
|-
| 지원 게임 가짓수
+
! 주요 기술
| 빌드된 게임 개수
+
| • Velostat 터치센서<br/>• 카메라 객체인식<br/>• PyQt5 GUI
| 3+ 개
 
| 2+ 개
 
| 10
 
 
|-
 
|-
| 화면투사 선명도
+
! 지원 게임
| sharpness 계산 (%)
+
| • 4인 체스 ✅<br/>• Texas Hold'em ✅<br/>• TRPG 🔄
| > 70%
 
| > 70%
 
| 10
 
 
|}
 
|}
 +
</div>
  
'''목표 수정 사유'''
+
==프로젝트 소개==
* '''터치 정확도''': 30mm → 20mm (하드웨어 성능 향상으로 목표 강화)
+
'''테이블탑 프로젝터'''는 프로젝터를 이용하여 테이블 위에 게임 화면을 투사하고, 터치 센서를 통해 사용자와 상호작용할 수 있는 인터랙티브 게임 플랫폼입니다. 다양한 보드게임과 카드게임을 디지털화하여 여러 사용자가 함께 즐길 수 있는 새로운 형태의 게임 환경을 제공합니다.
* '''터치 응답시간''': 5ms → 100ms (하드웨어 한계를 고려한 현실적 조정)
 
* '''카드 인식률''': 50% → 90% (카메라 성능 향상과 알고리즘 개선으로 목표 강화)
 
* '''게임 가짓수''': 3개 → 2개 (프로젝트 기간 내 완성도 높은 구현을 위한 조정)
 
  
==개념 설계==
+
<div style="clear: both;"></div>
  
===시스템 목적 계통도===
+
==프로젝트 개요==
테이블탑 프로젝터는 다음 5가지 핵심 가치를 중심으로 설계되었습니다:
+
===프로젝트 비전===
 
+
<div style="background-color: #f0f8ff; border-left: 4px solid #1e90ff; padding: 15px; margin: 10px 0;">
'''편의성 (직관성, 조작감)'''
+
'''핵심 가치'''
* '''직관성''': 터치와 프로젝터의 빔을 이용하는 테이블탑 프로젝터는 간편한 UI를 제공하여 처음 사용하는 사용자에게도 직관적으로 사용법을 알 수 있도록 설계
+
* 🎯 '''직관적 조작''' - 스마트폰처럼 쉬운 터치 인터페이스
* '''조작감''': 뮤직 플레이어의 UI와 유사하게 구성하여 게임이 목록화되고, 각 게임마다의 사진과 설명을 화면 대부분에 할당하여 표시
+
* '''빠른 반응속도''' - 100ms 이내 응답시간 목표
* 터치라는 익숙한 입력 방식을 통해 스마트폰 사용 경험자들이 쉽게 장치를 조작하고 실행할 수 있도록 구현
+
* 🔧 '''확장 가능성''' - 새로운 게임 추가 가능한 플랫폼
 
+
* 🤝 '''사회적 연결''' - 대면 게임의 장점과 디지털 편의성 결합
'''성능 (신속성, 정밀성)'''
+
</div>
* '''신속성''': 터치 압력 감지용 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)
+
{| class="wikitable sortable" style="width: 100%; text-align: center;"
* '''장점''': 터치 장치에 별개로 연결되어 배선 길이를 줄여 모듈성 향상, 연산 소모를 분할하여 라즈베리파이 리소스 부담 절약
+
|+ 프로젝트 성능 목표
* '''적용성''': 높음
+
! 평가 항목 !! 초기 목표 !! 최종 목표 !! 현재 상태 !! 달성률
 
 
'''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 제품보다 높은 화질, 작은 사이즈로 소형화 가능
 
* '''단점''': 낮은 밝기 성능으로 주변 조명에 민감
 
* '''적용성''': 높음
 
 
 
===부품 평가 및 선정 결과===
 
 
 
다음은 개념설계 단계에서 수행한 부품별 평가 결과입니다:
 
 
 
{| class="wikitable"
 
! 분류
 
! 설계안
 
! 직관성
 
! 조작감
 
! 신속성
 
! 정밀성
 
! 확장성
 
! 내구성
 
! 경제성
 
! 합계
 
! 순위
 
|-
 
| rowspan="4" | '''입력장치'''
 
| Velostat
 
| -
 
| 중
 
| 중
 
| 중
 
| 상
 
| 상
 
| 상
 
| 15
 
| 1
 
|-
 
| 터치 패널
 
| -
 
| 중
 
| 중
 
| 상
 
| 하
 
| 하
 
| 하
 
| 10
 
| 2
 
|-
 
| IMX219
 
| -
 
| -
 
| -
 
| 상
 
| -
 
| -
 
| 중
 
| 5
 
| 1
 
|-
 
| OV5648
 
| -
 
| -
 
| -
 
| 하
 
| -
 
| -
 
| 상
 
| 4
 
| 2
 
|-
 
| rowspan="4" | '''제어장치'''
 
| 아두이노 우노
 
| -
 
| -
 
| -
 
| -
 
| 상
 
| 중
 
| 상
 
| 8
 
| 1
 
|-
 
| 아두이노 프로미니
 
| -
 
| -
 
| -
 
| -
 
| 하
 
| 중
 
| 중
 
| 5
 
| 2
 
|-
 
| 라즈베리파이4B
 
| -
 
| -
 
| 하
 
| 하
 
| 중
 
| -
 
| 상
 
| 7
 
| 2
 
 
|-
 
|-
| 라즈베리파이 5
+
| 터치 정확도 || < 30mm || < 20mm || style="background-color: #90EE90;" | '''✓ 달성''' || 100%
| -
 
| -
 
|
 
|
 
|
 
| -
 
|
 
| 11
 
| 1
 
 
|-
 
|-
| rowspan="3" | '''통신모듈'''
+
| 터치 응답시간 || < 5ms || < 100ms || style="background-color: #FFFFE0;" | 측정중 || -
| USB 유선
 
|
 
|
 
|
 
|
 
| 중
 
| 중
 
|
 
| 19
 
| 1
 
 
|-
 
|-
| 블루투스 무선
+
| 카드 인식률 || > 50% || > 90% || style="background-color: #90EE90;" | '''✓ 90%+''' || 100%
|
 
|
 
|
 
|
 
|
 
|
 
|
 
| 15
 
| 2
 
 
|-
 
|-
| HDMI
+
| 게임 응답속도 || < 100ms || < 100ms || style="background-color: #FFFFE0;" | 측정중 || -
|
 
| -
 
| -
 
|
 
|
 
|
 
|
 
| 15
 
| 1
 
 
|-
 
|-
| rowspan="2" | '''출력장치'''
+
| 지원 게임 수 || 3개 || 2개 || style="background-color: #90EE90;" | '''✓ 2개 완성''' || 100%
| PJD86533WS
 
| -
 
| -
 
| -
 
| 하
 
| 중
 
| 중
 
| 중
 
| 10
 
| 1
 
 
|-
 
|-
| HY450
+
| 화면 선명도 || > 70% || > 70% || style="background-color: #FFFFE0;" | 측정중 || -
| -
 
| -
 
| -
 
|
 
|
 
|
 
|
 
| 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 터치 모듈 (400×400mm)
* '''입력장치''': Velostat + IMX219
+
* 📷 IMX-708 카메라 (12MP, 120° 광각)
* '''제어장치''': Arduino Uno + Raspberry Pi 5 
+
* 🎯 20mm 터치 정확도
* '''통신모듈''': USB 유선 + HDMI 유선
 
* '''출력장치''': ViewSonic PJD86533WS (1차) / MAGCUBIC HY450 (대안)
 
  
==초기 시스템 설계==
+
| style="width: 50%; vertical-align: top;" |
 +
'''출력부'''
 +
* 📽️ XGIMI Halo+ 프로젝터
 +
* 🖼️ 1920×1080 해상도
 +
* 💡 고휘도 LED 광원
  
===초기 하드웨어 구성 (제안서 기준)===
+
'''구조부'''
'''터치 입력 시스템'''
+
* 🏗️ 아크릴 커버 (5mm 무광 검정)
* 크기: 120 × 90 cm² (최종: 400 × 400 mm로 축소)
+
* 🔧 미니 리프트 높이 조절
* 센서: Velostat 압력 센서 + 구리 테이프 매트릭스
+
* 🚪 미니 경첩 소형문
* 제어: Arduino + 멀티플렉서/시프트 레지스터 조합
+
|}
 
+
</div>
'''영상 처리 시스템'''
 
* 메인 컨트롤러: 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: 변동 없음
+
{| class="wikitable" style="width: 100%;"
 
+
! 구분 !! 기술 스택 !! 용도
==동작 시나리오==
 
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 카메라 케이블 준비 후 최종 위치 설정
 
* 캘리브레이션 코드 적용 테스트
 
* 전체 시스템 통합 테스트
 
 
 
===개발 일정표===
 
{| class="wikitable"
 
! 개발 내용
 
! 담당자
 
! 5월 1-2주
 
! 5월 3주
 
! 6월 1주
 
! 6월 2주
 
! 6월 3주
 
|-
 
| 터치 캘리브레이션 코드 추가
 
| 터치팀
 
| ■
 
| ■
 
|
 
|
 
|
 
|-
 
| 프로젝터 하우징
 
| 구효본, 조수민
 
| ■
 
| ■
 
|
 
|
 
|
 
 
|-
 
|-
| 1차 프로그램 통합 및 에러처리
+
| '''운영체제''' || Raspberry Pi OS || 시스템 기반
| 터치팀
 
|  
 
|
 
| ■
 
|
 
|  
 
 
|-
 
|-
| 1차 통합 테스트
+
| '''주 언어''' || Python 3.9, C++ || 애플리케이션 개발
| 터치팀
 
|  
 
|  
 
| ■
 
|
 
|  
 
 
|-
 
|-
| 2차 프로그램 통합
+
| '''GUI 프레임워크''' || PyQt5 || 사용자 인터페이스
| 터치팀, 전진형
 
|  
 
|  
 
|
 
| ■
 
|  
 
 
|-
 
|-
| 최종 통합 테스트
+
| '''영상처리''' || OpenCV 4.5 || 카메라 영상 처리
| 전체
 
|  
 
|  
 
|
 
| ■
 
|  
 
 
|-
 
|-
| Feedback 및 디버깅
+
| '''딥러닝''' || YOLO v5 || 카드 객체 인식
| 전체
 
|  
 
|  
 
|  
 
| ■
 
| ■
 
 
|-
 
|-
| 최종 프로젝트 발표 준비
+
| '''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">
 +
'''Velostat 압력 센서 사양'''
 +
* 표면 저항: 31,000 Ω/cm²
 +
* 온도 범위: -45°C ~ +65°C
 +
* 크기: 280mm × 280mm × 0.1mm
  
===현재 달성 성과===
+
'''회로 구성'''
'''하드웨어'''
+
* 74HC595 시프트 레지스터 × 10
* 터치 모듈: PCB 제작 완료, 마감천 선정 완료
+
* CD4051D 멀티플렉서 × 10
* 커버: 설계 변경 완료 및 제작 완료
+
* LMV324 연산증폭기 × 1
* 카메라: IMX-708로 성능 향상 완료
+
* PCB 설계: KiCad (3W rule 적용)
 +
</div>
 +
</div>
  
'''소프트웨어'''
+
===[[#게임 구현|게임 구현]]===
* 1차 게임(체스): 프로젝터 환경 최적화 완료
+
====✅ 1차 게임: 4인 체스====
* 2차 게임(포커): 완전 구현, 카드 인식률 90% 이상 달성
+
* '''상태''': <span style="color: green;">'''완료'''</span>
* 3차 게임(TRPG): 캐릭터 및 맵 생성 시스템 구현
+
* '''특징''':  
 +
  * 4명 동시 플레이 가능
 +
  * 프로젝터 환경 최적화 UI
 +
  * 터치 오차 보정 적용
  
===평가 항목 달성도===
+
====✅ 2차 게임: Texas Hold'em Poker====
* 터치 정확도: 20mm 달성 (목표치 충족)
+
* '''상태''': <span style="color: green;">'''완료'''</span>
* 터치 응답시간: 측정 예정
+
* '''주요 기능''':
* 게임 응답속도: 측정 예정 
+
  * YOLO 기반 카드 인식 (90%+ 정확도)
* 지원 게임 가짓수: 2개 구현 (체스, 포커) + 1개 개발중 (TRPG)
+
  * 2-5인 멀티플레이
* 화면투사 선명도: 측정 예정
+
  * 자동 배팅 및 승자 판별
 +
  * 애니메이션 효과
  
===미구현 내용 및 향후 과제===
+
====🔄 3차 게임: TRPG====
* 포켓몬 카드 게임 한국판 인식 모델
+
* '''상태''': <span style="color: orange;">'''개발중 (60%)'''</span>
* TRPG GPT API 연동
+
* '''구현 완료''':
* 터치 캘리브레이션 자동화
+
  * D&D 기반 12개 직업 시스템
* 카메라 최종 위치 확정
+
  * Polytopia 맵 생성기
* 전체 시스템 통합 테스트
+
  * 캐릭터 생성 UI
 +
* '''개발 예정''':
 +
  * GPT API 연동
 +
  * 동적 스토리 생성
  
==프로젝트 평가==
+
==진행 현황==
 
+
===개발 타임라인===
===중간 평가 (2025년 6월 1일 기준)===
+
<div style="background-color: #f5f5f5; border: 1px solid #ddd; padding: 15px; border-radius: 5px;">
'''진행률'''
+
{| class="wikitable" style="width: 100%;"
* 하드웨어: 90% 완료
+
! 단계 !! 기간 !! 주요 내용 !! 상태
* 소프트웨어: 75% 완료
+
|-
* 시스템 통합: 30% 완료
+
| '''1단계''' || 2025.3 || 개념 설계 및 부품 선정 || ✅ 완료
 
+
|-
'''주요 성과'''
+
| '''2단계''' || 2025.4 || 하드웨어 제작 및 1차 게임 || ✅ 완료
* 설계 변경을 통한 현실적 목표 재설정
 
* 터치 모듈 하드웨어 완성
 
* 카드 인식 시스템 성공적 구현
 
* 복수 게임 구현을 통한 플랫폼 확장성 입증
 
 
 
'''주요 과제'''
 
* 한국어 카드 인식 문제 해결
 
* 시스템 통합 및 안정성 확보
 
* 사용자 경험 최적화
 
 
 
==예산 내역==
 
 
 
===총 예산 변화===
 
* 초기 계획 (2025.4): 183천원
 
* 최종 예산 (2025.6): 404.8천원
 
* 증액 사유: 카메라 업그레이드, 아크릴 판재, PCB 전문 제작
 
 
 
===상세 내역 비교===
 
{| class="wikitable"
 
! 구분
 
! 초기 계획 (천원)
 
! 최종 실제 (천원)
 
! 주요 변경사항
 
 
|-
 
|-
| 기본 부품
+
| '''3단계''' || 2025.5 || 2차 게임 및 시스템 통합 || ✅ 완료
| 175
 
| 175
 
| 동일
 
 
|-
 
|-
| 카메라 업그레이드
+
| '''4단계''' || 2025.6 || 3차 게임 및 최종 테스트 || 🔄 진행중
| -
+
|}
| 54.2
+
</div>
| IMX219 → IMX708
+
 
 +
===주요 이슈 및 해결===
 +
{| class="wikitable mw-collapsible" style="width: 100%;"
 +
|+ 문제 해결 기록
 +
! 문제 !! 원인 !! 해결 방법 !! 결과
 
|-
 
|-
| 아크릴 판재
+
| 터치 정확도 부족 || 센서 간격과 손가락 크기 불일치 || UI 크기 조정으로 대응 || ✅ 해결
| -
 
| 79.4
 
| 커버 제작
 
 
|-
 
|-
| PCB 제작
+
| 카메라 성능 부족 || IMX219 화각/화질 한계 || IMX708 광각으로 업그레이드 || ✅ 해결
| -
 
| 60.0
 
| 전문 제작
 
 
|-
 
|-
| 기타 추가 부품
+
| 게임 복잡도 || 유희왕/매직 규칙 복잡 || 포커로 범위 조정 || ✅ 해결
| 8
 
| 36.2
 
| 터치패드 보호재 등
 
 
|-
 
|-
| '''총계'''
+
| 예산 초과 || 부품 업그레이드 필요 || 추가 예산 확보 || ✅ 해결
| '''183'''
 
| '''404.8'''
 
| '''221.8천원 증액'''
 
 
|}
 
|}
  
==기술적 상세사항==
+
==팀 구성==
 
+
{| class="wikitable" style="width: 100%; text-align: center;"
===Velostat 압력 센서 기술===
+
|+ Imbedded 팀원 소개
'''원리와 특성'''
+
! 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)
* 해결: UI 재설계를 통한 실용적 접근
+
* 🗺️ Polytopia Map Generator (GNU GPL)
 +
* 🃏 YOLO 카드 인식 모델 (MIT)
 +
* 📊 포켓몬 카드 DB API (Public)
 +
</div>
  
'''카메라 성능 문제'''
+
==향후 계획==
* 문제: IMX219 화질 및 화각 부족
+
===단기 목표 (2025.6)===
* 해결: IMX708 광각 카메라로 업그레이드
+
* [ ] 터치 캘리브레이션 자동화
 +
* [ ] 포켓몬 카드 게임 완성
 +
* [ ] GPT API 연동 완료
 +
* [ ] 시스템 통합 테스트
  
'''게임 복잡도 문제'''
+
===장기 확장 계획===
* 문제: 유희왕, 매직 더 게더링 구현 복잡도 과다
+
* 🎯 추가 게임 장르 지원
* 해결: 포켓몬 카드게임으로 범위 조정
+
* 🤖 AI 대전 상대 구현
 +
* 🌐 온라인 멀티플레이어
 +
* 📱 모바일 앱 연동
  
'''예산 관리'''
+
==갤러리==
* 초기 예산: 183천원
+
<gallery mode="packed" heights="200px">
* 최종 예산: 404.8천원
+
파일:Tabletop_projector_overview.jpg|전체 시스템 구성
* 주요 증액 요인: 성능 향상을 위한 부품 업그레이드
+
파일:Touch_module_pcb.jpg|터치 모듈 PCB
 +
파일:Chess_game_demo.jpg|4인 체스 실행 화면
 +
파일:Poker_card_recognition.jpg|카드 인식 시연
 +
</gallery>
 +
''※ 프로젝트 사진을 추가해주세요''
  
===향후 확장 가능성===
+
==참고문헌==
* 추가 게임 장르 지원
+
<references />
* AI 대전 상대 구현
+
# 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.
* 온라인 멀티플레이어 지원
+
# 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:27 판

틀:목차제한

프로젝트 정보
테이블탑 프로젝터
Tabletop Projector
프로젝트명 테이블탑 프로젝터
팀명 Imbedded
프로젝트 기간 2025.3 ~ 2025.6
예산 404.8천원
진행률
80%
주요 기술 • Velostat 터치센서
• 카메라 객체인식
• PyQt5 GUI
지원 게임 • 4인 체스 ✅
• Texas Hold'em ✅
• TRPG 🔄

프로젝트 소개

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

프로젝트 개요

프로젝트 비전

핵심 가치

  • 🎯 직관적 조작 - 스마트폰처럼 쉬운 터치 인터페이스
  • 빠른 반응속도 - 100ms 이내 응답시간 목표
  • 🔧 확장 가능성 - 새로운 게임 추가 가능한 플랫폼
  • 🤝 사회적 연결 - 대면 게임의 장점과 디지털 편의성 결합

개발 목표 및 달성도

프로젝트 성능 목표
평가 항목 초기 목표 최종 목표 현재 상태 달성률
터치 정확도 < 30mm < 20mm ✓ 달성 100%
터치 응답시간 < 5ms < 100ms 측정중 -
카드 인식률 > 50% > 90% ✓ 90%+ 100%
게임 응답속도 < 100ms < 100ms 측정중 -
지원 게임 수 3개 2개 ✓ 2개 완성 100%
화면 선명도 > 70% > 70% 측정중 -

시스템 구성

하드웨어 아키텍처

시스템 구성도

제어부

  • 🖥️ Raspberry Pi 5 (2.4GHz, 8GB RAM)
  • 🎮 Arduino Uno (터치 제어)
  • 🔌 USB/HDMI 인터페이스

입력부

  • 🖱️ Velostat 터치 모듈 (400×400mm)
  • 📷 IMX-708 카메라 (12MP, 120° 광각)
  • 🎯 20mm 터치 정확도

출력부

  • 📽️ XGIMI Halo+ 프로젝터
  • 🖼️ 1920×1080 해상도
  • 💡 고휘도 LED 광원

구조부

  • 🏗️ 아크릴 커버 (5mm 무광 검정)
  • 🔧 미니 리프트 높이 조절
  • 🚪 미니 경첩 소형문

소프트웨어 스택

구분 기술 스택 용도
운영체제 Raspberry Pi OS 시스템 기반
주 언어 Python 3.9, C++ 애플리케이션 개발
GUI 프레임워크 PyQt5 사용자 인터페이스
영상처리 OpenCV 4.5 카메라 영상 처리
딥러닝 YOLO v5 카드 객체 인식
API OpenAI GPT TRPG 스토리 생성

개발 내용

터치 시스템

🔧 기술적 상세 정보 (클릭하여 펼치기)

Velostat 압력 센서 사양

  • 표면 저항: 31,000 Ω/cm²
  • 온도 범위: -45°C ~ +65°C
  • 크기: 280mm × 280mm × 0.1mm

회로 구성

  • 74HC595 시프트 레지스터 × 10
  • CD4051D 멀티플렉서 × 10
  • LMV324 연산증폭기 × 1
  • PCB 설계: KiCad (3W rule 적용)

게임 구현

✅ 1차 게임: 4인 체스

  • 상태: 완료
  • 특징:
 * 4명 동시 플레이 가능
 * 프로젝터 환경 최적화 UI
 * 터치 오차 보정 적용

✅ 2차 게임: Texas Hold'em Poker

  • 상태: 완료
  • 주요 기능:
 * YOLO 기반 카드 인식 (90%+ 정확도)
 * 2-5인 멀티플레이
 * 자동 배팅 및 승자 판별
 * 애니메이션 효과

🔄 3차 게임: TRPG

  • 상태: 개발중 (60%)
  • 구현 완료:
 * D&D 기반 12개 직업 시스템
 * Polytopia 맵 생성기
 * 캐릭터 생성 UI
  • 개발 예정:
 * GPT API 연동
 * 동적 스토리 생성

진행 현황

개발 타임라인

단계 기간 주요 내용 상태
1단계 2025.3 개념 설계 및 부품 선정 ✅ 완료
2단계 2025.4 하드웨어 제작 및 1차 게임 ✅ 완료
3단계 2025.5 2차 게임 및 시스템 통합 ✅ 완료
4단계 2025.6 3차 게임 및 최종 테스트 🔄 진행중

주요 이슈 및 해결

문제 해결 기록
문제 원인 해결 방법 결과
터치 정확도 부족 센서 간격과 손가락 크기 불일치 UI 크기 조정으로 대응 ✅ 해결
카메라 성능 부족 IMX219 화각/화질 한계 IMX708 광각으로 업그레이드 ✅ 해결
게임 복잡도 유희왕/매직 규칙 복잡 포커로 범위 조정 ✅ 해결
예산 초과 부품 업그레이드 필요 추가 예산 확보 ✅ 해결

팀 구성

Imbedded 팀원 소개
이름 학번 담당 업무 세부 역할
구효본 2020430001 팀장, 터치 시스템 프로젝트 관리, 터치 하드웨어
김지호 2022430012 터치 시스템 터치 설계 및 통합
류정현 2020430008 게임 소프트웨어 게임 포팅 및 플랫폼
조수민 2021430035 기구 설계 외장 디자인 및 통합
전진형 2020430028 AI/객체인식 카메라 인식 및 API

기술 문서

관련 링크

오픈소스 활용

사용된 오픈소스 프로젝트

  • 🎮 체스 게임 엔진 (GNU GPL)
  • 🗺️ Polytopia Map Generator (GNU GPL)
  • 🃏 YOLO 카드 인식 모델 (MIT)
  • 📊 포켓몬 카드 DB API (Public)

향후 계획

단기 목표 (2025.6)

  • [ ] 터치 캘리브레이션 자동화
  • [ ] 포켓몬 카드 게임 완성
  • [ ] GPT API 연동 완료
  • [ ] 시스템 통합 테스트

장기 확장 계획

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

갤러리

※ 프로젝트 사진을 추가해주세요

참고문헌

  1. 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.
  2. L. Yuan et al., "Velostat sensor array for object recognition," IEEE Sensors Journal, vol. 22, no. 2, pp. 1692–1701, Jan. 2022.