본문 바로가기

테이크아웃 컵 재활용을 통한 기부시스템, 기부 한 잔

  • 김동민
  • 인하대학교
  • 작품구분일반형
  • 공개여부비공개
  • 카테고리기계, 웹/앱, 생활
  • 등록일2019-07-29
  • 팀원(공동개발자)백혜연(컴퓨터공학과,12161596), 전다현(컴퓨터공학과,12161649)
  • 출품 경진대회제11회 인하종합설계경진대회

상세설명

<프로젝트 요구사항>
가. 기능적 요구사항 • 휴대폰 NFC태깅을 통해 사용자 계정을 인식한 후 컵을 버린다.
• 컵을 기계 위에 놓으면 카메라 센서를 통해 테이크아웃 컵이 맞는지, 비워져있는지, 컵의 재질 이 무엇인지 판단하고 분별된 기준에 따라 컵이 자동으로 버려지게 된다.
• 컵이 버려진 후에는 컵의 종류에 따른 포인트가 처음에 인식한 계정에 적립된다.
• (donation)이후에 앱을 통해 적립된 포인트만큼 원하는 기부단체에 기부를 진행할 수 있다.
• (detail)앱에서 포인트의 적립, 사용내역을 확인할 수 있다.
• (location)자신의 현재위치에서 가장 가까운 기계를 알 수 있다.
나. 비기능적 요구사항 1. 사용성 요구사항(usability requirement) • (h/w & s/w) 기계와 앱을 이용할 때 사용자에게 일관적인 이미지를 줄 수 있도록 moebius 대표색인 베이지를 이용하도록 한다.
• (h/w) 기계를 이용할 때는 누군가 설명해주지 않아도 바로 사용방법을 알 수 있도록 최대한 간단한 인터 페이스를 구성해야 한다. 
• (s/w) 가장 필요한 정보를 메인에 가장 눈에 띄게 배치하고, 텍스트보다는 아이콘과 포인트 색상을 활용 해 사용자가 고민없이 앱을 이용할 수 있도록  구성해야 한다.
• (s/w) nfc태깅시 필요한 uid는 회원가입 시, 앱에서 자동제공하는 고유번호로 사용자 스스로가 잘모르 는 정보에 대한 고민을 없게 한다.
2. 효율성 요구사항(efficiency requirement) • 기계를 이용함에 있어서는 모든 과정이 30초내에 이루어질수 있도록 가장 필요하고 간단한 기능만을 제 공한다.
• 방대한 양의 데이터셋으로 학습시킨 머신러닝을 통해 컵 판별시간을 3초내에 가능하게 한다.
3. 신뢰성 요구사항(reliability requirement) • 사용자 본인이 블록체인을 통해 기부한 내역을 앱뿐만 아니라 Etherscan을 통해서도 확인할 수 있도록 블록번호를 제공한다.
• 방대한 양의 데이터셋으로 학습과저을 거친 머신러닝을 컵 판별오류를 최소화하도록 한다.

<소프트웨어 설계및 개발 >
가.  프로젝트 기능
 1. S/W • Raspberypi와의 소켓통신 - 하드웨어 센서들의 동작을 기계 모니터에서 확인 수 있도록 하는 기계용 어플리케이션과 소켓통신을 통 해 컵이 버려지고 포인트가 적립되는 과정을 진행한다.
• app을 통한 적립및 기부내역 확인 등 다양한 기능 탑재 - 사용자들은 자신들의 컵 수거및 포인트 적립내역을 상세하게 볼 수 있는 휴대폰 어플리케이션을 통해 서  현재 보유하고 있는 포인트를 이용해 기부를 할 수 있다.
- App이 설치된 터치스크린 모니터 를 내장하고 있어 컵 수거및 포인트 적립이 실시간 확인가능하다.
• Oracle database를 이용해 회원정보와 포인트내역 관리 - 사용자들은 앱을 통해 회원가입을 한 후에 기계를 사용하게 되면, 스마트폰 NFC기능으로 사용자 인증 을 할 수 있게 된다. 이 두 정보를 매칭시켜 NFC 통신을 하면 회원가입 한 사용자 ID와 이름을 불러와 스크린 모니터에 실시간으 로 출력하여 컵을 수거한 후 지금까지 적립된 포인트를 기계 모니터를 통해 확인할 수 있다.
• 이더리움 기반 Block-chain 활용 - Ethereum기반의 Solidity언어를 사용 하여 개발하다. 이더리움 플랫폼 상에 Smart Contract를 작 성하여 데이터베이스에 저장된 기부내역을 불러와 사용자 이름으로 블록체인 상에 올라갈 수 있도록 개 발을 진행했다.
2. H/W 
• Arduino NFC와 Raspberypi와의 Serial통신 
- 사용자의 핸드폰과 기계가 NFC통신을 하기 위해 NFC쉴드 연결 및 Raspberypi와의 통신환경을 설 정한다. 이를 이용해 Arduino에서 측정된 센서 값들을 우선적으로 Raspberypi로 전송하게 되고 이값 을 Arduino가 받아 Apache Server를 통해 DB나 App으로 전송하여 기능을 구현하게 된다. 
• Weight sensor와 Servo Motor 
- 컵의 내용물 유무는 카메라 센서뿐만 아니라 무게센서를 통한 측정도 함께 진행하여 정확도를 높이도록 했다.
- 버려질 수 있는 컵으로 판정이 난 후 재질에 따라 분류가 되는데 이를 Servo Motor가 각도를 조절하여 버릴 수 있도록 했다. 
• Raspberypi camera를 이용한 Machine-learning
 - 우선적으로 컵이 맞는지, 내용물은 비워져 있는지, 어떤 컵인지를 가장 빠르게 판단할 수 있는 방법으로 카메라 센서를 통한 머신러닝을 선택했다. 크롤링을 통해 수천개의 데이터셋을 구해서 학습시키며 정확 도를 높인 상태에서 오류없이 컵을 판별할 수 있도록 개발을 진행했다.

나.  주요 적용 기술
1. 간편하고 빠른 사용 - 스마트폰 하나로 사용할 수 있게 NFC통신 기술 구현. 아두이노의 NFC쉴드를 Raspberypi와 연동하 여 스마트폰 태깅 시, 본인인증 및 기계 모니터를 통해 본인 ID확인 가능하다. 
2. 컵 인식및 자동판별 - 수많은 데이터로 학습된 머신러닝이 탑재된 Raspberypi와 연결된 카메라 센서를 통해 컵의 모양과, 상 태를 파악한 후, 컵의 재질을 판별해 수거함에서 자동 분리수거가 가능하다.
3. 하드웨어와 휴대폰용 어플리케이션 제작 - Android Studio를 통해 개발을 진행하여 사용자가 스마트폰으로 설치 할 수 있는 App으로 오늘 버린 컵의 개수, 오늘 적립한 포인트, 오늘까지 버린 컵의 개수, 오늘까지 적립한 포인트 확인이 가능하고 적 립된 포인트로 본인인증을 거친 후 빠르고 간단하게 기부가 가능하다. 
- 기계 모니터에서 사용하는 어플리케이션으로 위와 마찬가지로 Android Studio를 통해 개발을 진행하 고, 기계를 작동하는데 사용되는 프로그램으로 컵을 버리고 포인트가 적립되는 것을 확인할수 있다.
4. 이더리움기반의 오픈소스 플랫폼을 통한 투명한 기부 실현 - Solidity언어를 이용하여 개발했으며, Remix 개발 Tool을 사용한다. Testnet서버에서 실험하며,      서비스에 맞추어 SmartContract를 개발하음. SmartContract와 사용자 에게 편리한 UI를         제공해주는 Web서비스를 제공하여 Dapp 개발을 진행하다.

- 적립된 포인트로 앱을 통해 기부를 하게 되면 Transaction발생 및 다른 노드들과 검증을 거쳐 블록체 인으로 올라가게 된다.

 

다. 작품개발환경

1.S/W개발환경 

-OS: Macintosh

-개발환경(IDE): 안드로이드 스튜디오, 아두이노IDE, Visual Studio

-개발도구: Oracle db, Remix, web3, metamask

-개발언어: Java, jsp, Solidity, C ,C++,Python ,node.js

2.H/W개발환경

-디바이스: Arduino uno, Raspberrypi3

-센서: PN532, HS-311, hx711, camera v2.1

-통신: NFC, Serial, TCP/IP Socket

-언어: C, C++,Python 

소개 영상

소개 슬라이드

정보가 없습니다.

기타자료

댓글