국내 하루 평균 길에 버려지는 담배꽁초가 무려 1250만 개비라고 합니다.
담배가 그대로 하수구를 통해 바다에 유입돼 바다오염이 되고
그렇게 바다에서 분해된 미세플라스틱은 오롯이 인간이 먹게됩니다..
├─main
│ │
│ ├─java
│ │ └─com
│ │ └─ssafy
│ │ └─project
│ │ ├─config # CORS 및 암호화 설정 폴더
│ │ ├─controller # 각 도메인별 컨트롤러 있는 폴더
│ │ ├─domain # 각 DB 테이블 을 설정한 도메인 폴더
│ │ ├─Function # 추가적인 기능을 모아둔 폴더
│ │ ├─Repository # 도메인별 JPA Repository 설정한 폴더
│ │ └─Service # 도메인별 기능을 정의해둔 폴더
│ └─resources
└─test
└─java
└─com
└─ssafy
└─project # 테스트 케이스 있는 폴더
───src
├─api # 백엔드 통신과 필요한 api들을 모아놓은 폴더
├─db # 백엔드와 통신전에 미리 가상DB를 만들어 테스트를 하는 폴더
├─Pages # 랜더링되는 페이지가 모아져있는 폴더
│ ├─Admin # 관리자 페이지가 들어 있는 폴더
│ │ ├─AdminComplain # 불만사항 관련한 관리자 폴더
│ │ ├─AdminNotice # 공지사항 관련한 관리자 폴더
│ │ └─components # 관리자 페이지에서 랜더링되는데 필수적으로 필요한 요소들이 있는 폴더
│ ├─Auth # 회원가입, 로그인 등 인증, 권한과 관련된 페이지가 있는 폴더
│ ├─Loading # 로딩페이지 폴더
│ ├─Main # Client단의 모든 페이지가 있는 폴더
│ ├─Nav # Client단의 Nav바가 있는 폴더
│ └─Sub # Client단에서 부수적으로 필요한 페이지가 있는 폴더
├─picture # 화면의 사진이 저장돼있는 폴더
├─styles # 여러가지 style component들이 있는 폴더
└─ui # 간단한 modal이 있는 폴더
- 담배와 관련된 서비스이기 때문에 보다 확실한 성인인증 절차를 위해 외부인증 API(iamport)를 이용하여 휴대전화에 등록된 정보에 기반한 성인인증 서비스를 구현하였습니다.
- 포인트 환전시 현금을 지급해 주어야하기에 본인인증 정보에 기반한 계좌인증 절차를 만들어 확실한 본인의 계좌로 회원가입이 되게 만들었습니다.
- 저희 서비스를 이용하기 위해선 주변에 있는 디바이스를 찾아야합니다. 주변에 있는 디바이스를 탐색하기 위해 지도 API를 이용하여 가장 가까운 디바이스의 위치를 파악하게 하였습니다.
- 지도에 띄워진 사용하기 버튼을 누르면 바로 사용할 수 있게 QR체크 화면으로 넘어갑니다.
- 디바이스를 사용하기 위해 디바이스에 부착된 QR을 찍으면 디바이스 고유번호를 인식하여 디바이스가 열리게 하였습니다.
- 디바이스가 열리고 담배를 투입하면 디바이스 내부로직을 통해 담배여부를 확인하고 결과를 넘겨주게 만들었습니다.
- 담배가 맞다면 "성공페이지"로 아니라면 "실패페이지"로 이동합니다.
- 담배가 맞다면 유저의 최근담배핀 시간이 갱신되게 되고 포인트가 적립이 됩니다.
- 홈화면으로 이동시 다음 이용 가능시간(마지막으로 피고 40분 후)까지 체크를 위해 타이머기능이 있습니다.
- 40분이 지났다면 이용가능, 40분이 지나지 않았다면 타이머가 시작됩니다.
- 담배를 넣어서 포인트가 적립되었다면 포인트 전환신청을 할 수 있습니다.
- 전환신청 내역은 관리자 페이지에 올라가게 되고 관리자가 승인을 해주면 계좌에 돈 입금과 동시에 알림이 가게 됩니다.
- 불편사항 발생시 글과 내용(이미지 첨부도 가능)을 적게 됩니다. 적힌 글은 관리자 페이지에 올라가게 됩니다.
- 고장사항 발생시에는 글과 내용뿐만 아니라 어디 디바이스인지에 관한 정보가 있어야하기 때문에 QR체크로 디바이스 등록까지 마쳐야 글을 작성할 수 있습니다. 역시 작성된 글을 관리자 페이지로 올라가게 됩니다.
- 고장신고된 디바이스는 관리자가 글을 보며 즉석에서 디바이스 고장상태로 변환시킬 수 있고 고장상태로 변환된 디바이스는 기기정보창에서 빨간색으로 표시가 됩니다.
- 문제가 생긴디바이스나 고장난 디바이스를 관리하게 위해 지도상에 설치된 디바이스를 볼 수 있습니다.
- 문제가 생긴디바이스가 있다면 최적경로로 이동하기 위해 네이버지도 api를 통해 최단경로시간을 안내합니다.
- 디바이스 주변동네를 구체적으로 보고 싶다면 로드뷰 기능을 활용할 수도 있습니다.
- 디바이스를 잘 조치했다면 고장상태를 변경할 수 있습니다.
- 사용자가 디바이스 상단에 위치한 QR코드를 인식합니다. 사용자 인것이 DB측과의 지속적인 GET요청을 통하여 확인이 되면 내부의 모터가 작동하며 투입구와 내부 덮개가 열리게 됩니다. 이후 담배 인식이 되면 개폐구는 닫히게 됩니다.
- 인식부에서는 CDS 조도 센서를 사용하여, 물체가 입구를 통과 할 경우 낮아지는 조도량을 측정하여 물체 통과를 인식합니다. 인식되지 않을경우 5초후 다음 과정은 생략됩니다.
- 판별부에서는 정확도를 높이기 위해 3가지 센서를 사용하여 담배인지 아닌지를 판별합니다.
- 비접촉 온도센서에서는 적정 설정온도를, 가스 센서에서는 일정량 이상의 가스를, 공기질 센서에서는 미세먼지 량을 측정하여 3가지 판별 프로세스 중 하나라도 통과하면 담배로 인식됩니다.
- 판별부에서 담배로 인식이 된다면 곧바로 분쇄하게 됩니다. 분쇄된 담배는 일반 쓰레기와 분리되어 수거됩니다.
- 판별이 끝난 후 담배 인것이 확인되면 이를 DB측으로 송신합니다.
- DB에서는 이를 포인트로 적립시킵니다.
- 1시간 마다 기기의 정보를 업로드합니다.
- 위의 이미지 처럼 DB의 Table에 해당되는 JSON 형식으로 POST요청을 보냅니다. 기기 ID, 사용자 이름, 기기 상태, 쓰레기 통 용량, 배터리 등의 정보를 관리자 측으로 송신합니다.
![]() 👑 김도원 (Embedded) |
![]() 🙂 김강현 (Front-End) |
![]() 😆 권덕민 (Front-End) |
😁 유승우 (Back-End) |
![]() 🙄 윤성한 (Embedded) |
Firmware 3D Modeling |
UI/UX React |
UI/UX React |
REST API CI/CD Infra |
Firmware |
- 기획 및 설계 : 22.7.11 ~ 20
- 프로젝트 구현 : 22.7.21 ~ 22.8.16
- 버그 수정 및 산출물 정리 : 22.8.17 ~ 19
구분 | 링크 |
---|---|
와이어프레임 | 웹 와이어프레임 바로가기 / 디바이스 와이어프레임 바로가기 |
프로젝트 노션 | 프로젝트 노션 바로가기 |
DB덤프 | DB덤프 바로가기 |
ERD | ERD 바로가기 |
빌드/배포 | 빌드/배포 바로가기 |
외부서비스 정보 | 외부서비스 정보 바로가기 |
시연 시나리오 | 시연 시나리오 바로가기 |
발표자료 | 발표자료 바로가기 |