1 of 26

캡스톤디자인 2조 발표

강세민 박지인 온수옥 정서윤

IAmHere

CapstoneDesign

2 of 26

목차

  1. 프로젝트 소개
  2. 각 시스템 소개
  3. 프로젝트 데모
  4. Lessons Learned

IAmHere

CapstoneDesign

3 of 26

프로젝트 소개

1

4 of 26

프로젝트 개요

  1. 프로젝트 소개
  • 블루투스와 지문인식을 기반으로 한 이중 인증 출석 시스템

​

  • 학생의 모바일 기기 블루투스와 지문 정보를 활용하여 정확하고 자동화된 출석 관리를 목표로 함

​

  • 기존 수동 출석 방식의 대리 출석 문제를 해결 가능

IAmHere

CapstoneDesign

5 of 26

개발 동기

  • 프로젝트 소개
  • 첫 시작은 IoT 관련 프로젝트 개발을 목표

​

  • 학교 생활을 하면서 불편한 점을 개선하고자 아이디어 회의를 하던 중, 지문인식 출석이라는 생각을 도출

​

  • 단순한 출결 기록을 넘어서, 보안성과 신뢰성을 갖춘 출석 시스템이 필요하다는 점에 주목

IAmHere

CapstoneDesign

6 of 26

주요 기능

  • 프로젝트 소개
  • 강의자의 기기에 블루투스를 연결하여 강의 시작

​

  • 블루투스 스캔을 통해 학생의 위치 확인

​

  • 지문 데이터를 암호화하여 저장

​

  • 지문 인증을 통한 본인확인으로 대리출석 방지

​

  • 지문 출석 알림을 애플리케이션을 통해 받을 수 있음

​

  • 출석 통계도 확인 가능

​

IAmHere

CapstoneDesign

7 of 26

전체 시스템 다이어그램

  • 프로젝트 소개

IAmHere

CapstoneDesign

8 of 26

각 시스템 소개

2

9 of 26

출석 시스템

2. 각 시스템 소개

  • 라즈베리파이에서 동작하는 파이썬 기반 프로그램
  • 초기에는 CLI 기반으로 개발
  • 이후 Tkinter를 도입하여 GUI로 탈바꿈, MVC 패턴 적용

IAmHere

CapstoneDesign

10 of 26

출석 시스템의 지문 등록

2. 각 시스템 소개

  • 사용자가 지문을 등록하는 기능
  • 지문 인식 모듈과 연동됨
    • 등록 과정에서 지문을 스캔
    • 스캔한 지문 데이터를 암호화하여 사용자 데이터와 매핑해 DB에 저장
  • 향후 지문 출석 시 이 정보를 활용

IAmHere

CapstoneDesign

11 of 26

출석 시스템의 블루투스 기기 페어링

2. 각 시스템 소개

  • 강의자의 블루투스 기기를 시스템과 페어링하는 기능
  • 강의 ID를 통해 교수자의 MAC 주소를 가져옴
  • 백그라운드 스레드에서 페어링을 시도
    • bluetoothctl 명령어를 터미널에서 사용
  • 페어링이 완료되면 강의 시작 준비가 완료됨

IAmHere

CapstoneDesign

12 of 26

출석 시스템의 강의 시작

2. 각 시스템 소개

  1. 강의 정보 불러오기
  2. 강의자가 라즈베리파이에 블루투스 연결이 될 때까지 대기
  3. 출석 루프 실행
    1. 주기적으로(10초 간격) 블루투스 출석을 시도
    2. 학생들의 기기를 블루투스 스캔하여 자리에 있는지 확인
  4. 강의자의 블루투스 연결이 끊기면 강의 종료 여부를 확인
    • 강의를 종료 시, 지문 출석을 하여 블루투스 출석이 안 된 학생들의 출석을 마무리
    • 강의를 진행 시, 출석 루프를 재시작

IAmHere

CapstoneDesign

13 of 26

IAmHere 서비스

2. 각 시스템 소개

  • 강의를 듣는 학생들이 앱을 설치해 출석을 체크
    • Android 앱
    • 학생, 교수 페이지 분리
  • Android Studio로 개발

​

​

​

IAmHere

CapstoneDesign

14 of 26

IAmHere 서비스

2. 각 시스템 소개

  • 학생 로그인 / 교수 로그인
    • 기본은 학생 로그인
    • 클릭시 화면 하단에 학생 로그인 또는 교수 로그인이 선택됐다고 나타남

​

IAmHere

CapstoneDesign

15 of 26

IAmHere 서비스

2. 각 시스템 소개

  • 현재 수강중인 강의에 대한 출석 현황 확인
    • 출석/지각/결석

​

  • 한달 간의 출석통계
    • 원형 그래프로 표현

IAmHere

CapstoneDesign

16 of 26

IAmHere 서비스

2. 각 시스템 소개

​

  • 월별로 볼 수 있는 출석 통계
    • 달력으로 표현

IAmHere

CapstoneDesign

17 of 26

IAmHere 서비스

2. 각 시스템 소개

  • 교수 페이지
    • 현재 수업 중인 수업 표시
    • 출석, 지각, 결석자 수를 알 수 있음
    • 출석 수정 버튼 클릭시 학생 개개인마다 1차 출석 완료, 1차 출석 실패, 2차 출석 완료, 2차 출석 실패, 2차 출석 제외 항목이 나타나서 교수가 수정 가능

​

IAmHere

CapstoneDesign

18 of 26

알림 시스템

2. 각 시스템 소개

  • 2차 출석 전, 후 알림 전송

IAmHere

CapstoneDesign

19 of 26

데모 영상

3

20 of 26

영상 링크

3. 데모 영상

IAmHere

CapstoneDesign

21 of 26

느낀 점과 배운 점

4

22 of 26

정서윤 - 출석 시스템 및 영상 편집

4. 느낀 점과 배운 점

  • 라즈베리파이를 처음 다루어보아 부팅 방법부터 차근차근 익혀 나갔다.
  • 지문 인식 센서나 모듈이 작동하지 않는 문제도 종종 발생했지만, 그때마다 직접 원인을 찾아가며 해결해 나갔다.
  • 처음에는 GUI 기능을 추가할 계획이 없었다. 하지만 사용자 편의성을 고려해 도입을 결정했고, 그에 따라 프로젝트 구조 전반을 다시 설계했다.
  • 계획에 없던 일이라 조금 빠듯했지만, 결과적으로 확장성과 유지보수 측면에서 기존보다 나아졌다고 생각한다.
  • 웹 개발 외에 처음으로 만들어 본 프로젝트여서 여러 시행착오도 많았지만 그만큼 의미 있는 경험이었다(영상 편집 기술은 덤).

IAmHere

CapstoneDesign

23 of 26

박지인 - 지문인식 코드 + 로그인 화면

4. 느낀 점과 배운 점

  • 웹으로만 구현을 해보다가 처음으로 라즈베리파이를 이용해 프로젝트를 진행해 봐서 낯설었고 오랜만에 파이썬을 이용해서 다시 공부하면서 배우게 됨
  • 안드로이드 스튜디오를 이용해 화면을 구현하는게 기존의 자바 스크립트로 만들던것과는 다르게 정말 앱을 구현한다는 느낌을 받음
  • 블루투스와 데이터베이스와 알람시스템을 알맞게 연결한다는게 생각보다 쉽지 않다는것을 알게 됨

IAmHere

CapstoneDesign

24 of 26

온수옥 - 데이터베이스 설계 로그인 api 연동

4. 느낀 점과 배운 점

  • db설계에서 요구사항을 먼저 확실하게 정할 필요성을 느낌.�각 파트에서 필요한 데이터를 최우선으로 정해야한다.
  • 중간에 db구조를 바꿨는데 작은 설계 변경도 시스템에 큰 영향을�줄 수 있음을 배웠다.
  • 로그인 api를 도입하는 과정에서 다양한 http 오류를 봤는데, �문제가 어디에서 발생했는지 알려주는 로그가 개발에서 정말 중요하다고 생각하게 되었다.

​

IAmHere

CapstoneDesign

25 of 26

강세민 - 출석 알림 로직 구현 및 클라이언트 어플 제작

4. 느낀 점과 배운 점

  • Android Studio 개발 흐름에 대한 이해 -> 액티비티/프래그먼트 구조, 레이아웃 XML과 코드 연동 방식, RecyclerView, Intent, SharedPreferences 등의 기본 구성 요소
  • API 간 데이터 불일치로 출석 알람 전송 x -> 초기 API 설계의 중요성
  • 캘린더 연동의 아쉬움 -> 협업의 중요성 feat. github
  • 수작업 배포의 한계 -> CICD 필요함을 절실히 느낌

IAmHere

CapstoneDesign

26 of 26

발표를 들어주셔서 감사합니다!

마무리

한 학기 동안 모두 수고 많으셨습니다!

IAmHere

CapstoneDesign