캡스톤디자인 2조 중간 발표 2
강세민 박지인 온수옥 정서윤
IAmHere
CapstoneDesign
목차
목차 소개
IAmHere
CapstoneDesign
트러블슈팅
1
라즈베리파이 관련 이슈들
IAmHere
CapstoneDesign
지문인식 관련 이슈들
IAmHere
CapstoneDesign
블루투스 관련 이슈들
enable_uart=1
dtoverlay=pi3-miniuart-bt
ttyS0와 ttyAMA0가 모두 사용 중
IAmHere
CapstoneDesign
블루투스 관련 이슈들
IAmHere
CapstoneDesign
출석 시스템 수정
2
수정된 시스템 소개
2. 출석 시스템 수정
기존 시스템 | 비교 | 수정된 시스템 |
없음 | 강의자 블루투스 연결 | 강의자의 핸드폰에 블루투스 연결하면 강의 시작 |
1차 출석 시에 사용 | 블루투스 출석 | 강의가 시작하면 10분마다 확인 |
2차 출석 시에 무작위의 학생을 선별해 사용 | 지문 출석 | 강의가 종료되면 블루투스 출석이 안 된 학생들을 골라서 지문 인식 진행 |
IAmHere
CapstoneDesign
블루투스 페어링
2. 출석 시스템 수정
expect(string): 출력에 해당 문자열이 뜰 때까지 대기
expect에 문자열 리스트를 넘겼을 경우, 매칭된 인덱스를 반환
(여기선 문자열을 하나만 넘겼기에 정상적인 경우 0을 반환)
IAmHere
CapstoneDesign
수정된 시스템 영상
2. 출석 시스템 수정
IAmHere
CapstoneDesign
지문 데이터 암호화
3
암호화 개요
목차 3
CBC MODE의 암호화/복호화 과정
IAmHere
CapstoneDesign
aes128
목차 3
대칭키 블록 암호화 알고리즘
IAmHere
CapstoneDesign
aes128
목차 3
간단한 암호화 과정
IAmHere
CapstoneDesign
aes128
목차 3
간단한 암호화 과정
subBytes 표
IAmHere
CapstoneDesign
aes128
목차 3
간단한 암호화 과정
MixColumns-행렬곱
이전 행렬과 xor연산
IAmHere
CapstoneDesign
encryption.py
목차 3
init, encrypt,decrypt 함수
128 고정 비트 길이의 키를 전달
무작위 iv를 생성
->패딩 추가
->CBC모드로 암호화를 진행�->IV와 암호문을 함께
Base64로 인코딩하여 반환
class Encryption:
def __init__(self, key: bits):
self.key = key
def encrypt(self, data: str) -> str:
try:
iv = os.urandom(AES.block_size)
cipher = AES.new(self.key, AES.MODE_CBC, iv)
padded_data = pad(data.encode(), AES.block_size)
ct_bytes = cipher.encrypt(padded_data)
return base64.b64encode(iv + ct_bytes)
decode('utf-8')
except (ValueError, KeyError) as e:
print(f"Encryption error: {e}")
return None
IAmHere
CapstoneDesign
encryption.py
목차 3
init, encrypt,decrypt 함수
class Encryption:
def __init__(self, key: bits):
self.key = key
def encrypt(self, data: str) -> str:
try:
iv = os.urandom(AES.block_size)
cipher = AES.new(self.key, AES.MODE_CBC, iv)
padded_data = pad(data.encode(), AES.block_size)
ct_bytes = cipher.encrypt(padded_data)
return base64.b64encode(iv + ct_bytes)
decode('utf-8')
except (ValueError, KeyError) as e:
print(f"Encryption error: {e}")
return None
CBC
IAmHere
CapstoneDesign
encryption.py
목차 3
-decrypt()함수
복호화 시 저장된 IV를 분리해서 사용�CBC 모드로 다시 원본 데이터 복원
def decrypt(self, encrypted: str) -> str:
try:
encrypted_data = base64.b64decode(encrypted.encode())
iv = encrypted_data[:AES.block_size]
ciphertext = encrypted_data[AES.block_size:]
cipher = AES.new(self.key, AES.MODE_CBC, iv)
decrypted_data = unpad(cipher.decrypt(ciphertext), AES.block_size)
return decrypted_data.decode()
except (ValueError, KeyError) as e:
print(f"Decryption error: {e}")
return None
IAmHere
CapstoneDesign
암호화/복호화 적용
목차 3
-fingerprint.py
encrypt()함수로 등록 / decrypt()로 비교
fingerprint_json = json.dumps(fingerprint_data)
encrypted_data = encrypt(fingerprint_json)
encrypted_template = result['fingerprint_template']
decrypted_json = decrypt(encrypted_template)
stored_fingerprint = json.loads(decrypted_json)
IAmHere
CapstoneDesign
알림 시스템 서버
4
서비스 개요 소개
4. 알림 시스템 서버
IAmHere
CapstoneDesign
아키텍처 흐름
4. 알림 시스템 서버
[학생 스마트폰] ←→ [라즈베리파이: 블루투스 스캔]
↓
[라즈베리파이] → 출석 API 호출 (FastAPI)
↓
[출결 DB(MySQL)] ← 출석 기록 저장
↓
[알림 모듈] → FCM으로 출석 알림 전송
IAmHere
CapstoneDesign
4. 알림 시스템 서버
IAmHere
CapstoneDesign
DB연동
4. 알림 시스템 서버
DB_CONFIG = {
"host": "34.22.92.10",
"user": "teamuser",
"password": "******",
"database": "iamhere",
"charset": "utf8mb4"
}
IAmHere
CapstoneDesign
향후 계획
4. 알림 시스템 서버
완료한 항목
IAmHere
CapstoneDesign
제공하는 서비스 및 향후계획
5
IAmHere로 제공하는 서비스
5. 제공하는 서비스
IAmHere?
학생들이 스마트폰에
설치해 블루투스와
지문인식을 통해 출석을
체크하는 Android 앱
현재 Figma를 통해
화면기획 및 UI/UX 설계 중
+ Android Studio로
개발 진행 중
IAmHere
CapstoneDesign
IAmHere로 제공하는 서비스
5. 제공하는 서비스
실시간 출석 현황 확인 기능
👆 학생들이 현재 듣고있는 강의에 대해
출석 현황을 한눈에 파악 가능
💬 현재 듣고있는 강의 표시
💬 (출석 완료 / 지각 / 결석) 3가지 분류
IAmHere
CapstoneDesign
IAmHere로 제공하는 서비스
5. 제공하는 서비스
월별 / 주별 출석 통계 기능
👆 월별로 출석 통계를 알 수 있음
💬 (출석 완료 / 지각 / 결석) 을
원형그래프로 표현, 직관적으로 알
수 있는 색상 사용
💬 학생 스스로 관리 가능
IAmHere
CapstoneDesign
IAmHere로 제공하는 서비스
5. 제공하는 서비스
출석 알림 기능
👆 수업 시작 전, 출석 완료 후 알림을
보내서 출석 여부를 바로 확인 가능
💬 수업 시작 전에 곧 어떤 과목을
들어야 하는지 알림을 보내서
지각하거나 결석하지 않도록 도움
IAmHere
CapstoneDesign
IAmHere로 제공하는 서비스
5. 제공하는 서비스
관리자 페이지
👆 관리자 페이지에서 교수님들이
학생들의 출석현황을 파악 가능
✌ 수동으로 학생 출석 상태를 변경 가능
IAmHere
CapstoneDesign
IAmHere
CapstoneDesign
IAmHere의 향후 계획
향후 계획
현재
지문 데이터 암호화
알림 시스템 서버 수정
Figma를 통한 화면 구성 완료
Android Studio를 깃허브와 연동해 개발 중
IAmHere
CapstoneDesign
감사합니다.
끝