TermProject Final Report

Slides:



Advertisements
Similar presentations
NO MORE LINE 1(일촌) 조. 목차목차 사업 목적 No More Line 이란? No More Line 분석 마 케팅 수 익구 조 제 작 비 용.
Advertisements

윤준혁 (12), 이주연 (13), 박혜원 (14), 안혜경 (15) 허니버터칩으로 알아본 SNS 의 영향 력.
학교폭력이란 ? 학교 내외에서 학생을 대상으로 발생한 상해, 폭행, 감금, 협박, 약취, 유인, 명예훼손, 모욕, 공갈, 강요, 강제적인 심부름 및 성폭력, 따 돌림, 사이버 따돌림, 정보통신망을 이용한 신체 · 정신 또는 재산상의 피해를 수반하는 행위 음란 · 폭력 정보.
대학생 서포터즈 운영국 활동 리뷰 2013 년 해외안전여행 주요 이슈사항 _ 개요 해외안전여행 서포터즈 6 기 주요 활동 개요 월별로 미션에 따라 홍보대상을 선정, 전체활동과 함께 팀별 홍보활동 진행 5월5월 6월6월 7월7월 8월8월.
일과 삶의 균형잡힌 조화를 통한 올바른 직업생활을 지원하는. CONTENTS 왜 인성교육인가 ? 01 인성교육 전문가 양성 교육과정 소개 02 인성교육 전문가 양성과정 특장점 / 기대효과 03.
1 ‘ 우리나라의 주요공업 ’ - 정도웅, 주민혁, 안수진, 백경민, 엄다운, 박경찬 -.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
■ 지도교사 : 박정희 광덕고등학교 동아리 –어벤져스-
5장. 시장 조사와 사업계획서 시장 조사는 창업을 하려는 사업가가 자신이 선택한 사업 아이템에 대하여 반드시 실시하여야 하는 것이다. 아무리 창조적인 제품이라 할지라도 시장에서 선택받지 못한다면 그러한 제품을 아무리 생산하여도 결국 사업에 실패할 수밖에 없기 때문이다.
청소년 범죄 손아영 오지연.
부천테크노파크1단지 제12회 정기총회 * 일시: 2012년 3월 20일 14시 * 장소: 1단지 구내식당.
한국신뢰성학회 퀴즈 세션 주제 공지 제목 : 인터넷(포럼 , 동호회, SNS)에서 현대/기아/경쟁사 고객불만항목 정량화 및 발췌 목적 : 사외데이터를 활용하여 현대/기아/경쟁사의 고객불만사항을 발췌하고 숨어 있는 항목을 찾는 방법 필요 선정사유 : 인터넷 고객 불만.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
공부할 내용 조상들이 살던 곳 자연과 잘 어울리는 한옥 지방에 따라 서로 다른 집의 모양 섬 지방의 집
사랑, 데이트와 성적 자율성 :데이트 성폭력!!! 성폭력예방교육 전문강사 / 여성학 전공 신 순 옥.
북한 교회의 과거(2) - 구한말 선교되는 교회에서 선교 하는 교회로
퇴계와 율곡의 사회사상 비교 남 일 재 동서대학교 교수/ 정치학 박사 1. 퇴계 이황과 율곡 이이의 약전(略傳)
제3장 사회 복지 발달사.
청소년문제와 보호 청소년문제의 개념과 범주.
2017 인권과 성평등교육 고려대학교 인권센터.
진행 공모사업 흐름도 ①약정체결 킥오프워크샵 ②사업비지급 공유,토론회 (수시) ③사업비지출관리 ④예산변경 ⑤중단이슈발생
프로젝트2 Web Programming 강의노트: vrlab.suwon.ac.kr/mwlee
페트병 및 캔 자동 분리 압축 파쇄기 페자원 회수비용 절감 안 2008年 03月20日 모션테크 재팬 주식회사.
501. 군인들의 세상 502. 민정 이양과 한일회담 이선용.
2015년 하반기 소방교육 자 유 전 공 학 부 (금) 안녕하십니까 자유전공학부 행정실 입니다.
일 시 : 2013년 11월 12일(화) 15:00 발표자 : 동대문구보육반장 최 길 숙
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
Arduino와 Led를 이용하여 Wearable Display 만들기
임베디드 프로그래밍 Lecture #
아동복지 제9장.
AJAX 커머스아이 박준열.
신소재 장비발표 [이동식 배연기] 광남119안전센터.
AVR - Chapter 15 황 지 연.
최용술 장 Thread 최용술
고등용 LED를 이용한 재미있는 표현.
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수.
컴퓨터 활용 및 실습 Chapter 3 수식과 함수 김 정 석
이름:강연주 학번: 담당교수님:박주형교수님
- 나는 내 마음의 주인공 – 집단상담프로그램 인제대학교 교육대학원 상담심리전공 하 정 선
사범 대학 05 사범 대학 01 하반기 공약사항
제13장 장애인 복지.
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
USB Door Lock System 공 민 표 강 정 이 권 경 곤
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
정치개혁의 가능성 논의 권력구조 개편을 통하여 본 -개헌을 통한 정부형태의 변화를 중심으로 [한국정치론] 윤성이 교수님
4. 아두이노로 LED 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ST모드에서 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
LOGIN할 때 아이디, 비번 입력 여부 체크하기
치료 레크레이션 프로그램 (지적 장애 대상) 과 목: 학 과: 학 번: 이 름: 제 출 일 자 담 당 교 수:
광고 모델의 영향력.
노년기 발달 장안대 행정법률과 세류반 정 오 손
태국 문학 욜라다 왓짜니 싸란차나 팟차라와라이 끼따야펀 르앙다우 타니다.
# 이렇게 2쁘조? 소소하지만 확실한 행복 #심창섭 #양윤석 #김민지 #김민경 #임지현 #김선우 #정연하.
코딩체험교실 아두이노 로봇 코딩 4차산업기술 체험 (SW코딩/자율주행기술).
평생 저축해도 강남 아파트 못산다 학 과 : 회계학과 1학년 B반 과 목 : 회계학원론 담당교수: 박성환 교수님
홈페이지 제작 HTML5 + CSS3 + Javascript.
정신보건 사회복지 제17장.
정부조직론 Team 1 발표 제5장 제1절, 제2절 공공정책학부 강철욱 권지호
경영학의 상황학파에 대해서… 경제학과 3학년 최준용 회계학과 4학년 진현빈
워밍업 실뭉치 전달게임.
아날로그일까? 디지털일까? -사용자 경험 기반 디지털 기술을 활용한 반응하는 액자 만들기-
DataScience Lab. 박사과정 김희찬 (화)
잡학다식, 디지털 집단지성과 미래직업 (3)SNS를 통한 집단지성의 이해.
2019 대교국제조형심포지엄 출품원서.
음파성명학 최종욱.
Report #3- 문제 1 Set(집합) 추상 데이터 타입을 정의하고, 다음과 같은 연산자들을 포함시켜라. 여기서 S, S1, S2는 집합을 나타내고, i는 집합 원소를 나타낸다. 연산 의미 create() Return {} insert(S, i) If i є S then.
3. Arduino 실습 – 아날로그 입력(1) 아날로그 입력 – 먼지 센서 먼지 센서 개요 먼지 센서 특징 먼지 검출 센서
Presentation transcript:

TermProject Final Report 유비쿼터스컴퓨팅및실습 SNS를 활용한 스마트 도어 시스템 TermProject Final Report 실습3조 Team : knocking on heaven’s door

CONTENTS 과제개요 개발 산출물 및 메뉴얼 아두이노 적재 코드 개발 기간 및 일정 업무분담 및 팀원별 소감

웹을 통해 원격지에서도 문을 모니터링 및 제어할 수 있다. 과제개요 “SNS를 활용한 스마트 도어 시스템” 아두이노를 통해 노크 패턴으로 문을 제어하고, 웹을 통해 원격지에서도 문을 모니터링 및 제어할 수 있다.

기술개발 산출물 및 메뉴얼 웹을 통한 관리 기능 노크 패턴 인식 기능 노크 패턴 저장 기능 알림 기능

기술개발 산출물 및 메뉴얼 ■ 노크 패턴 저장 기능 주인이 문에게 노크 패턴을 기억 시킨다. 정상적으로 패턴이 저장되면 LED가 번갈아 가며 깜박거린다. 버튼을 누르는 동시에 저장 하고자 하는 패턴으로 문을 두드린다. 주인이 문에게 노크 패턴을 기억 시킨다.

기술개발 산출물 및 메뉴얼 ■ 노크 패턴 인식 기능 노크 패턴을 인식한다. 저장해둔 패턴과 일치하면 빨간색 LED가 점등된다.

기술개발 산출물 및 메뉴얼 ■ 노크 패턴 인식 기능 노크 패턴을 인식해 문을 열고 닫는다. 저장해둔 패턴과 불일치하면 문고리가 작동하지 않는다. 저장해둔 패턴과 일치하면 문고리가 작동한다. 노크 패턴을 인식해 문을 열고 닫는다.

기술개발 산출물 및 메뉴얼 ■ 관리 기능 관리 웹페이지를 통해 문을 열고 닫을 수 있다. Open 버튼을 통해 제어 아래 상태를 통해 방문자 유 무를 알 수 있다. Open 버튼을 통해 제어 관리 웹페이지를 통해 문을 열고 닫을 수 있다.

기술개발 산출물 및 메뉴얼 ■ 알람 기능 – 일치 시에 노크 패턴이 일치할 시에 문이 열린다. 문이 열릴 시에 상태창에 ‘주인님 어서오세요!’ 라는 메시지가 뜬다. 노크 패턴이 일치할 시에 문이 열린다.

기술개발 산출물 및 메뉴얼 ■ 알람 기능 – 불일치 시에 노크 패턴이 불일치할 시에 문이 열리지 않는다. 노크 패턴이 틀릴 경우 문은 주인의 웹에 누군가 문을 두드린다고 알림. 노크 패턴이 불일치할 시에 문이 열리지 않는다.

아두이노 적재코드 ■ 웹 설계 부분 노크 패턴이 일치하거나 웹을 통해 문을 열어줄 경우 L값이 1이 된다. get 방식으로 보내온 값 L이 1이라면 도어를 여는 부분 if(readString.indexOf("L=1")!=-1) { Serial.println("==> L is 1"); triggerDoorUnlock(); } else {} L값이 1이 될 경우 triggerDoorUnlock()을 실행시킨다. 노크 패턴이 일치하거나 웹을 통해 문을 열어줄 경우 L값이 1이 된다.

아두이노 적재코드 ■ 웹 설계 부분 HTML 구조 부분 소스 코드 웹에 접속시 클라이언트에게 보여줄 부분 client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head><title>Smart Door System</title></head>"); client.println("<body background='http://210.118.64.151:8080/TJSSMSite/img/ubbg.png'>"); client.println("<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>"); client.println("<form method='get' name='LED' action='/'>"); client.println("<input type=checkbox name=L value=1> OPEN<br>"); client.println("<input type=submit value=확인></form>"); client.println("<br />"); client.println("<div id='mentBox'></div>"); client.println("<script src='http://code.jquery.com/jquery-latest.js' type='text/javascript'></script>"); client.println("<script type='text/javascript'>"); client.println("function myajax() {"); HTML 구조 부분 소스 코드

아두이노 적재코드 ■ 웹 설계 부분 Polling 변수를 이용하여 패턴 일치에 따라 나오는 메시지를 설정. 웹에 접속시 클라이언트에게 보여줄 부분 if(polling==1) { client.println("$('#mentBox').html('<h3>주인님 어서오세요!</h3>');"); polling = 2; } else if(polling == 0){ client.println("$('#mentBox').html('<h3>똑똑똑! 손님이 왔습니다! 문을 여시겠습니까?</h3>');"); } else{ client.println("$('#mentBox').html('<h3>No knock</h3>');"); } Polling 변수를 이용하여 패턴 일치에 따라 나오는 메시지를 설정. Polling 변수는 일치 할 경우 1, 불일치일 경우 0, 아무것도 아닌 경우 2로 설정

아두이노 적재코드 ■ 아두이노 부분 동작 구현부분 knockSensorValue = analogRead(knockSensor); if(digitalRead(programSwitch) == HIGH){ programButtonPressed = true; digitalWrite(redLED,HIGH); } else { programButtonPressed = false; digitalWrite(redLED, LOW); if(knockSensorValue >= threshold){ listenToSecretKnock(); 센서의 값을 읽어 스위치가 눌리면 빨간 LED를 켜주고 빨간 LED가 켜져 있지 않으면 꺼준다. 이 센서의 범위가 3값 이상이면 listenToSecretKnock() 함수를 실행시켜준다.

아두이노 적재코드 ■ 아두이노 부분 노크가 시작되고 노크되는 시간차를 이용하여 패턴을 배열에 저장 listenToSecretKnock() void listenToSecretKnock(){ Serial.println("Knock Starting"); int i = 0; for(i = 0; i < maximumKnocks; i++){ knockReadings[i] = 0; } int currentKnockNumber = 0; int startTime = millis(); int now = millis(); digitalWrite(greenLED, LOW); if(programButtonPressed == true){ digitalWrite(redLED, LOW); delay(knockFadeTime); digitalWrite(greenLED, HIGH); digitalWrite(redLED, HIGH); do { knockSensorValue = analogRead(knockSensor); if (knockSensorValue >= threshold){ Serial.println("knock"); now = millis(); knockReadings[currentKnockNumber] = now - startTime; currentKnockNumber++; startTime = now; digitalWrite(greenLED, LOW); if(programButtonPressed == true){ digitalWrite(redLED, LOW); } delay(knockFadeTime); digitalWrite(greenLED, HIGH); if (programButtonPressed == true){ digitalWrite(redLED, HIGH); }} while((now-startTime < knockComplete) && (currentKnockNumber < maximumKnocks)); if (programButtonPressed==false){ if (validateKnock() == true){ polling = 1; triggerDoorUnlock(); } else { Serial.println("Secret knock failed."); <중략> polling = 0; } } else validateKnock(); Serial.println("New lock stored."); 노크가 시작되고 노크되는 시간차를 이용하여 패턴을 배열에 저장 비밀번호가 유효하다면 문을 열어주고 유효하지 않다면 문을 열어주지 않는다. 단계별로 LED를 통해서 정상 작동 되는지 확인 할 수 있다. (중략부분)

아두이노 적재코드 ■ 아두이노 부분 비밀번호가 맞을 시에 문을 열어주는 함수이다. TriggerDoorUnlock void triggerDoorUnlock(){ Serial.println("Door unlocked!"); int i=0; digitalWrite(lockMotor, HIGH); digitalWrite(greenLED, HIGH); // And the green LED too. delay (lockTurnTime); // Wait a bit. digitalWrite(lockMotor, LOW); // Turn the motor off. // Blink the green LED a few times for more visual feedback. for (i=0; i < 5; i++){ digitalWrite(greenLED, LOW); delay(100); digitalWrite(greenLED, HIGH); }<중략> 비밀번호가 맞을 시에 문을 열어주는 함수이다.

아두이노 적재코드 ■ 아두이노 부분 비밀번호가 유효한지 판단하는 함수 각 노크 노드의 시간을 정하여 유효시간을 결정 validateKnock() boolean validateKnock(){ <중략> for (i=0;i<maximumKnocks;i++){ if (knockReadings[i] > 0){ currentKnockCount++;} if (secretCode[i] > 0){ secretKnockCount++; } if (knockReadings[i] > maxKnockInterval){ maxKnockInterval = knockReadings[i]; }} if (programButtonPressed==true){ secretCode[i]= map(knockReadings[i],0, maxKnockInterval, 0, 100); digitalWrite(greenLED, LOW); digitalWrite(redLED, LOW); delay(1000); digitalWrite(greenLED, HIGH); digitalWrite(redLED, HIGH); delay(50); for (i = 0; i < maximumKnocks ; i++){ digitalWrite(greenLED, LOW); digitalWrite(redLED, LOW); if (secretCode[i] > 0){ delay( map(secretCode[i],0, 100, 0, maxKnockInterval)); } return false; if (currentKnockCount != secretKnockCount){ int totaltimeDifferences=0; int timeDiff=0; for (i=0;i<maximumKnocks;i++){ // Normalize the times knockReadings[i]= map(knockReadings[i],0, maxKnockInterval, 0, 100); timeDiff = abs(knockReadings[i]-secretCode[i]); if (timeDiff > rejectValue){ // Individual value too far out of whack return false; } totaltimeDifferences += timeDiff; if (totaltimeDifferences/secretKnockCount>averageRejectValue){ 비밀번호가 유효한지 판단하는 함수 각 노크 노드의 시간을 정하여 유효시간을 결정 이를 통해서 노크의 패턴을 확인한다.

개발 기간 및 일정 일시 내용 1주차 (5/13 ~ 19) 아이디어 회의 및 주제 선정 2주차 (5/20 ~ 26) 아두이노 회로 설계 및 하드웨어 구성 3주차 (5/27 ~ 6/2) 하드웨어 프로그래밍 4주차 (6/3 ~ 9) SNS 연동 및 프로그래밍 5주차 (~6/17) 테스트 및 시연준비 (최종 마무리)

업무분담 서버 & 연동 이지은 최재건 송용권 정찬희 아두이노 & 기구제작

팀원별 소감 성명 내용 정찬희 늘 소프트웨어만 제작하던 컴퓨터 공학부라는 특성에서 벗어나 직접적으로 움직이고 사용될 법한 것을 만들게 되어 감회가 새로웠습니다. 수업 중에 배운 것을 통해 직접 무엇을 만든다는 것에 보람을 느꼈고 동시에 하드웨어 적인 부분들이 쉬운 것이 아님을 알게 되었습니다. 또한 수업 중에 배운 것만으로 만드는 것들이 실생활에 사용 될 수 있다는 것이 이제 곧 취업 문을 두드릴 상황에 있어서 자신감을 가지게 하는 계기가 되어 기쁩니다. 모쪼록 너무 고생한 우리 조원들에게 감사의 말씀을 드리고 싶습니다. 최재건 유비쿼터스를 배우면서 센서네트워크에 흥미를 가지게 되었습니다. 마이크로프로세서에 관심이 많아 아드이노를 배우기 위해 이 수업을 들었습니다. 텀프로젝트를 하기 시작하였고 문을 열기위해 아두이노 킷에 있는 피에조 부저를 이용하여 노크를 받아들였고, 이에 따라서 패턴도 바꾸고 시간 차이를 가지고 패턴을 만들 수 있는 것에 깨달았고, 웹 부분에서는 아직 미숙한 점이 많았기에 배우는게 더많은 텀프로젝트 이었던 것 같습니다. 앞으로도 더 많은 아이디어를 활용하여 개발할 수 있었으면 좋겠습니다. 송용권 유비쿼터스 과목을 통해 처음 접해본 아두이노를 이용하여 프로젝트를 진행하게 된것이 흥미로웠습니다. 노크를 통해 문을 열 수 있는 “문”을 만드는 주제를 설정하고 나서 과연 할 수 있을까? 하는 걱정을 많이 했지만 ‘아두이노’라는 도구와 팀원간의 협력으로 프로젝트를 진행해 나갔습니다. 비록 처음 생각했던 것처럼 Web부분이 완벽하게 완성되지 않았지만 만족할 만한 결과를 만들어 내어 성취감을 느꼈습니다. 이지은 먼저 유비쿼터스 과목을 통하여 아두이노를 접하고, 프로젝트를 진행할 수 있어서 기뻤습니다. 평소 웹에 관심이 많아서 아두이노에 웹 서버를 올릴 수 있다는 것이 흥미롭게 다가왔고, 이번 프로젝트를 통하여 직접 구현할 수 있어서 좋았습니다. 예전에 이미지를 불러오고 CSS, Javascript를 사용하는 것을 테스트했을 땐 가능했기 때문에 먼저 웹 클라이언트를 개발했지만, 도어 소스와 통합하면서 엄청나게 많은 제약이 생겨 개발한 웹 클라이언트를 적용하지 못해서 매우 아쉽습니다. 생각보다 간단한 웹 부분이 되어버렸지만 웹으로 아두이노를 제어할 수 있게 되었고, 시행착오를 겪으며 많은 것을 배울 수 있었습니다. 아쉬움과 동시에 배우는 즐거움을 느낄 수 있었던 프로젝트였습니다.

Thank you