독서실 좌석 공부시간 측정기
하드웨어 · 펌웨어 · 서버 · 웹2021.01
책상에 넣는 타이머 기기를 만들어 좌석별 이용 시간을 자동으로 재고, 관리자 웹에서 통계로 봅니다.

과제 배경
공부 시간을 사람이 적으면 빠뜨리거나 부정확합니다. 운영자도 좌석별 사용 현황을 파악하기 어려워 보고서를 손으로 썼습니다.
주요 설계 결정
버튼 입력 처리
polling 대신 인터럽트로 받았습니다
눌렀는데 반응이 늦으면 사람이 한 번 더 누릅니다. 그러면 측정이 시작됐다가 바로 멈춥니다.
부품 선정
상용 MCU 대신 ESP12-E 와 TM1637 로 짰습니다
좌석 수만큼 만드는 물건이라 단가가 그대로 도입 대수를 정합니다.
케이스
금형을 파지 않고 3D 프린팅으로 만들었습니다
책상 모양이 독서실마다 다릅니다. 금형을 파면 한 모양만 나옵니다.
서버 보안
SQL 인젝션과 XSS 와 XXE 를 막는 코딩 기준을 적용했습니다
학생 이름과 이용 기록이 들어갑니다. 규모가 작다고 다르게 다룰 데이터가 아닙니다.
제공 기능
| 기능 | 내용 |
|---|---|
| 공부 시간 자동 측정 | 버튼을 누르면 시작하고 다시 누를 때까지를 잽니다. 현재 시간은 FND 로 보여줍니다. |
| REST API 서버 연동 | 측정값을 서버로 보내 사용자별 누적 시간과 일자별 기록을 조회합니다. |
| 관리자 웹 대시보드 | 기기 상태와 사용자별 기록을 보고 엑셀로 내려받습니다. |
수행 결과
- 좌석에서 잰 시간이 서버로 바로 올라가 손으로 옮기는 단계가 없습니다.
- 일간, 주간, 월간 보고서를 엑셀로 내려받습니다.
- 관리자 한 사람이 여러 대의 기기 상태를 원격으로 봅니다.
화면 구성
화면의 구조와 기능을 보여주는 시안이며, 색과 서체를 포함한 디자인은 다음 단계에서 정합니다.
좌석이용자보고서
이용 중 18 / 50
좌석이용자경과 시간기기 상태
좌석 현황
지금 어느 좌석이 쓰이는지 봅니다
보고서
이용자누적 시간평균
엑셀로 내려받기
보고서
기간별 이용 기록을 내려받습니다
시스템 구성도
점선은 외부 서비스를 사용하는 항목입니다.
설계 원칙
| 원칙 | 적용 방법 |
|---|---|
| 눌렀는데 반응이 없어 두 번 누르는 일이 없다 | polling 대신 인터럽트로 버튼을 받습니다 |
| 손으로 옮겨 적는 단계가 없다 | 측정값이 바로 서버로 가고 엑셀로 나옵니다 |
| 규모가 작아도 입력을 믿지 않는다 | SQL 인젝션과 XSS 와 XXE 방어를 코딩 기준으로 걸었습니다 |
적용 기술
ESP12-ETM1637CC++FlaskEC2REST APIEagle CADFusion 360Git


