osamhack2020 / iot_kookmoban_ponjohmnaimann Goto Github PK
View Code? Open in Web Editor NEWUntact Phone Return Service For ROK Military
License: Other
Untact Phone Return Service For ROK Military
License: Other
반납기 틀로 사용가능한 3D 모델링 추가.
라즈베리파이에서는 작동하지 않는 임시 코드(ex. ImageGrab)를 삭제 및 수정하는 작업.
반납기의 상태를 간단히 알려줄 수 있는 상태 표시 LED를 회로도에 추가하자.
@ckswjd99 찬정님 서버에서 adminId를 받아야지 나중에 관리자가 정한 휴대폰 사용시간인지를 검증할수 있을것 같아서 QRCode에 adminId정보를 추가해 생성하도록 변경해서 아래 이슈 참고해서 제작해주시면 감사하겠습니다
원래는 기존 형식의 QR코드에서 totp값을 추출하여 서버 검증 단계에서 마스터 값을 확인하였으나,
조금 더 수월한 테스트를 위해 QR코드 자체를 마스터키로 사용하는 방안을 고안하였음.
폼보드로 반납기 실물을 제작.
설계도와 결과물을 사진으로 올리자.
지금까지 찍은 시연영상을 정리하여 업로드하자.
README.md 파일에 대회 양식 적용, 간단한 내용 첨가
반납기 회로를 productPhoto/circuit.jpg 파일과 같이 작성하고,
main.py 코드에 라즈베리파이의 GPIO를 적용시켜 실제 작동을 확인한다.
라즈베리파이에 근접센서를 장착한다.
그리고 테스트 파이썬 코드를 작성하여 근접센서가 작동하는 것을 확인한다.
(궁극적으로는 자동 이미지 매칭을 구현하고자 함)
라즈베리파이에 로드셀과 측정 컨버터 모듈(HX711)을 장착한다.
테스트 파이썬 코드를 작성하여 그 값을 읽어본다.
서버 API를 통해 TOTP를 검증할 때, 조건문 처리를 바보같이 해서 검증되면 안되는 경우에 검증되었다는 처리가 되는 경우가 발생함.
반납기 회로도 첨부
서버에 반납 기록을 전송할 때 보내는 사진이 phone_autoCut 함수를 거치지 않고서 서버로 전송됨.
또한 반납 기록을 전송하는 함수인 server_returnLog 함수가 phone_autoCut보다 먼저 정의되어있음.
순서를 정리한 뒤, 사진이 phone_autoCut함수를 거치고 서버에 전달되도록 수정하여야 함.
아두이노와 연결하는데 사용하기 위해 usb 포트를 지정하는 전역변수를 추가하자.
Repository
osamhack2020/Sample_Technology_ProjectName_TeamNamelicense.md
에서 license.md 파일 그대로 추가 (MIT 라이센스)
QR코드 읽으면 그 값을 출력하도록 함.
APP에서는 QR코드에 정보를 담을 때, JSON의 key값으로
deviceID, adminID
를 쓴다.
나는 서버에 맞춰서
deviceId, adminId
로 썼었는데 오류가 난다. 내가 중간에 적당히 바꿔서 보내주자.
발표용 PPT 업로드.
핸드폰 반납 기록을 서버에 전송할 때, 핸드폰의 사진을 전송하기 위해서는 이미지를 Base64의 형태로 인코딩해야 한다.
카메라가 찍는 QR코드를 읽고 아래 항목에 대한 정보를 각각 추출한다.
그리고 서버에 아래와 같은 JSON 데이터를 POST 방식으로 전송하여 응답으로 성공 여부를 받는다.
{
'timeInMillis': 현재 시간의 ms단위 값,
'deviceId': QR코드에서 읽은 기기의 고유 Id,
'expectedTOTP': QR코드에서 읽은 기기가 생성한 TOTP값
}
팀 로고 제작
서보모터는 하나만 쓴다.
소스코드는 src 폴더에,
문서 관련은 doc 폴더에 집어넣고
알아보기 힘든 파일 이름은 알아보기 쉽게 정리하자.
상태표시 LED 제어 코드가 엉망이다.
복사 붙여넣기를 대충 해서 BLED만 제어하고 가관이다.
수정하자!
코드 전체에서, 사진에서 핸드폰 영역만 잘라주는 함수인 phone_autoCut의 인자로서 주는 것들이 중구난방임.
따라서 함수를 실행시키면 가장 처음으로 인자의 type을 확인하여 numpy.ndarray형식으로 변환한 뒤 기존의 과정을 수행하도록 하여야 한다.
또한 함수에서 오류가 발생하는 경우, 함수가 False가 아닌 원본 사진에 해당하는 numpy.ndarray를 반환하도록 하는 것이 유리할 것임.
반납기의 상태에 대한 몇 가지 정보를 파이썬 내장 모듈인 pickle을 활용하여 외부 파일로 저장하도록 한다.
저장하는 항목은 다음과 같다.
저장은 반납시, 불출시에 한 번씩 진행한다.
OpenCV를 통해 다루는 mat형식의 이미지를 jpeg형식으로 변환하고, 이를 다시 Base64로 인코딩하여 서버에 전송함.
서버에 요청을 보내서 현재 시간이 핸드폰 사용 시간인지 True/False값을 응답으로 받는다.
반납기가 핸드폰을 보관중인 상태에서, 누군가 핸드폰 불출받기 버튼을 눌렀을 경우 시간을 확인받고 불출하기 위함.
#53 참조 그거대로 만들음
Calibration 진행.
라즈베리파이 반납기 기능
사용 라이브러리
핸드폰 사용 시간이 되어 불출 버튼을 누르면, 문이 열리면서 내부조명이 켜진다.
그런데 핸드폰을 가져가서 무게 센서가 0이 되고 다시 메인 루프로 복귀해도, 내부조명이 꺼지지 않는다.
끄는 코드를 넣자.
현재 사용하고 있는 팀 로고(어두운 배경)를 흰색 배경 버전으로 제작하자.
압력센서로 핸드폰의 무게를 AnalogRead하여 라즈베리파이에 전송하는 코드를 업로드하자.
이제야하누;
문을 잠가야 할 때 문이 제대로 닫혀있는지를 확인하여 제대로 된 잠금이 이루어질 수 있도록 확인한다.
회로도에 저항 사용에 대해 적어두지 않았음.
상태표시에 사용되는 LED는 정격전압 2.2V, 정격전류 30mA이므로 이에 맞는 회로를 구성하여야 함.
또한 문 닫힘의 확인을 위해 KW-10 스위치를 사용하기로 계획하였으나, 서보모터가 예상보다 확실하게 잘 작동하여서 KW-10 스위치는 사용하지 않아도 괜찮을 것 같음.
마스터 QR코드를 설정하여, 해당 QR코드가 인식되면 무조건 옳은 반납으로 처리하여 반납을 완료시킨다.
테스트를 위한 마스터키임.
특정 색상으로 암호화된 QR코드를 Decoding 하기 위해, 특정 색상의 RGB값을 Key Vector로 하여 이미지 전체를 변환한다.
변환 과정은 아래와 같다.
올바른 Key Vector를 통해 위 과정을 진행한다면, 특정 색상으로 암호화된 QR코드 이미지는 선명한 흑백의 QR코드가 된다.
SketchUp으로 반납기 실물을 간단히 설계한다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.