졸업작품 2 차보고서 Graduation Project 내자전거를지켜줘! 이름학번연락처이메일 이주희 김민선 지도교수 :

Similar documents
Motor


PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

< 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1

AL181N,ÇѱÛ,Ù+An+pip[D¿ë

02 C h a p t e r Java

슬라이드 1

Microsoft PowerPoint - es-arduino-lecture-09

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

졸업논문 되어자전거의현재정보를알려주게된다 시스템의동작절차그림 3-1 리더에서의자전거정보조회동작절차위에동작절차에서알수있듯이리더에서하는동작절차에서는크게 부분으로나눌수있다 리더에서에너지를보내 로부터데이터가전송되면자전거의정보를확인한다 여기서도난당한자전거인

[ 정보 ] 과학고 R&E 결과보고서 Monte Carlo Method 를이용한 고교배정시뮬레이션 연구기간 : ~ 연구책임자 : 강대욱 ( 전남대전자컴퓨터공학부 ) 지도교사 : 최미경 ( 전남과학고정보 컴퓨터과 ) 참여학생 : 박진명 ( 전

Chapter #01 Subject


Microsoft PowerPoint - 04-UDP Programming.ppt

Arduino- 서보모터 서울과학기술대학교기계시스템디자인공학과 교수김성환


ÀüÀÚÇö¹Ì°æ-Áß±Þ

Microsoft PowerPoint - RMI.ppt

신림프로그래머_클린코드.key

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - 03-TCP Programming.ppt

자바-11장N'1-502

서현수

슬라이드 1

rmi_박준용_final.PDF

Microsoft PowerPoint - es-arduino-lecture-03

FileMaker ODBC and JDBC Guide

고객 카드

Week13

<4D F736F F F696E74202D E6F312D BCB3C4A12C20C4DAB5F920B1E2C3CA2C20BDC3B8AEBEF3C5EBBDC5>

[8051] 강의자료.PDF

untitled

MasoJava4_Dongbin.PDF

FileMaker ODBC and JDBC Guide

PowerPoint Presentation

03장

사용하기 전에 2

기술문서 기초부터프로젝트완성까지, 아두이노 첫걸음 을위한 Arduino Bluetooth Car Control Project 작성자 : 인천대학교 OneScore 임승한

PowerPoint 프레젠테이션

Microsoft PowerPoint - es-arduino-lecture-08

Microsoft PowerPoint - 4_Wii눈척.ppt [호환 모드]

歯JavaExceptionHandling.PDF

vi 사용법

아두이노로만드는인형뽑기장치

RaspberryPi 시리얼통신 1 제 08 강 시리얼통신제어 시리얼통신시리얼모니터링루프백시리얼통신 Win. PC와의시리얼통신가상머신과의시리얼통신아두이노보드와의시리얼통신 KUT51보드와의시리얼통신

4S 1차년도 평가 발표자료

슬라이드 1

10.

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft PowerPoint - polling.pptx

JMF3_심빈구.PDF

초보자를 위한 C# 21일 완성

12-file.key

DTS-L300-V2 Specification Page 1 of 14 비접촉온도측정 원거리온도측정 High Accuracy Digital Interface : SPI Arduino UNO 예제코드제공 제품설명 DTS-L300-V2는접촉을하지않고원하는물체표면에온도를 50

Java

( )부록

JMF2_심빈구.PDF

01-OOPConcepts(2).PDF

[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 )

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

03-JAVA Syntax(2).PDF

초보자를 위한 자바 2 21일 완성 - 최신개정판

개인정보보호의 이해 및 안전한 관리 - 개인PC 및 스마트폰 개인정보보호-


2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

hd1300_k_v1r2_Final_.PDF

NodeMCU 입문하기 목차 1. NodeMCU란? 2. NodeMCU로할수있는프로젝트 3. NodeMCU 개발환경구축하기 4. NodeMCU를사용하여 HELLO WORLD! 웹에출력하기 5. NodeMCU로 Blink 예제실행하기 6. 원격으로 LED 제어하기 7.

자바로

C++-¿Ïº®Çؼ³10Àå


Microsoft PowerPoint - lec2.ppt

Chapter_02-3_NativeApp

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

도큐멘트3

쉽게 풀어쓴 C 프로그래밊

<4D F736F F F696E74202D20BAEDB7E7C0CCB3EB3220B1E2BABBC7FC20BBE7BFEBBCB3B8EDBCAD2D E >

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

Secure Programming Lecture1 : Introduction

고급 프로그래밍 설계

오토10. 8/9월호 내지8/5

fundamentalOfCommandPattern_calmglow_pattern_jstorm_1.0_f…

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

API 매뉴얼

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

Microsoft PowerPoint - 2강

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft Word - KPMC-400,401 SW 사용 설명서

F120L(JB)_UG_V1.0_ indd

Transcription:

내자전거를지켜줘! 이름학번연락처이메일 이주희 201011357 010-5043-9053 da2468@naver.com 김민선 201011312 010-9086-9037 mieeu@hanmail.net 지도교수 : 김기천교수님 ( 인 ) Computer Science & Engineering 1/18

1. 프로젝트소개 1.1 배경및목적 1.2 시나리오 1.3 프로젝트기능 2. 개발 2.1 프로그램구성 2.2 아두이노 2.3 안드로이드 3. 진행상황 3.1 개발진행방향 4. 개발계획 4.1 개발및테스트환경 Computer Science & Engineering 2/18

1. 프로젝트소개 1.1 배경및목적 개인의취미생활, 건강, 다이어트등을위해자전거를타는 자전거족 이점점늘어나고있다. 다양한이유만큼다양한종류의자전거, 다양한가격대의자전거가출시되고있고, 점점그가격 도고가화되고있다. 이러한문화에맞춰자전거에관련된다양한어플리케이션도개발되고있다. 하지만그에따라많은문제들도발생하고있는데, 그중하나는자전거도난 / 분실이다. 개인의취미생활과건강을위한다양한기능 / 기종의자전거가출시되고있고, 나만의유니크한자전거를원하는고객에맞춰주문제작되는자전거도많아지고있다. 이에따라자연스럽게자전거가격은상승하고있지만, 시중에나와있는자전거락는단순한자물쇠기능을벗어나지못하고있다. 따라서자전거도난이큰문제로대두되고있다. 이러한상황에대비해여러해결책이나오고있지만, 그효과는미비하게나타나고있다. 이에우리는자전거를지킬수있는근본적인것에접근하기로하였고, 현재아주단순한잠금기능을하는자전거락를효과적으로개선하고자한다. 따라서우리는이러한상황에대처하여자전거를효과적으로관리하고보호하기위해휴대폰어 플리케이션과연동되는자전거락앱을개발하는것이목적이다. 1.2 시나리오 자전거운행시에는운행모드이므로움직여도아무알림이없지만, 자전거에락를걸어두면자전 거가움직이는진동이감지되면사용자의핸드폰으로알림이온다. 또한운행모드시에사용자가 이동한경로, 거리, 시간등을기록하여저장해둘수있다. 1.3 프로젝트기능 - 사용자의휴대폰애플리케이션을통해자전거락을잠금 - 사용자의휴대폰애플리케이션을통해자전거락을해제함 - 락이잠긴상태에서진동이발견될시, 사용자휴대폰으로알림 ( 트위터연동 ) - 자전거운행시, 운행경로 / 거리 / 시간을저장함 Computer Science & Engineering 3/18

2. 개발 2.1 프로그램구성 (1) 자전거도난방지 1 진동감지 장치의진동센서를통해진동이감지된다. 2 자전거의트위터계정으로알림, 3 사용자계정을태그 @ 사용자 진동이감지되면, 장치에등록해놓은자전거의트위터계정으로글이올라가게된다. 이때, 글 에사용자의계정을태그한다. 4 사용자트위터에등록해놓은휴대폰으로알림 태그된사용자에미리등록해놓은휴대폰으로트위터알림이오게되고, 사용자는자신의자전거 에움직임이발생했다는것을알게된다. Computer Science & Engineering 4/18

(2) 자전거락 / 해제 자전거락장치와휴대폰은블루투스를통해상호작용한다. Computer Science & Engineering 5/18

2.2 아두이노 2.2.1 움직임감지시부저로알림 const unsigned int X_AXIS_PIN = 2; const unsigned int Y_AXIS_PIN = 1; const unsigned int Z_AXIS_PIN = 0; const unsigned int BAUD_RATE = 9600; const int buzzerpin = 2; void setup() { Serial.begin(BAUD_RATE); void loop() { int init_x = analogread(x_axis_pin); int init_y = analogread(y_axis_pin); int init_z = analogread(z_axis_pin); delay(1000); int x = analogread(x_axis_pin); int y = analogread(y_axis_pin); int z = analogread(z_axis_pin); if(init_x-x > 100 init_y-y > 100 init_z-z > 100 init_x-x < -100 init_y-y < -100 init_z-z < -100) { tone(buzzerpin, 131, 200); Serial.print(init_x - x); Serial.print(" "); Serial.print(init_y - y); Serial.print(" "); Serial.println(init_z - z); delay(1000); Computer Science & Engineering 6/18

( 사진 1) 움직임감지시부저로알림 2.2.2 움직임감지시트위터에글을올림 import processing.serial.*; final int LINE_FEED = 10; final int BAUD_RATE = 9600; final String CONSUMER_KEY = ""; final String CONSUMER_SECRET = ""; final String ACCESS_TOKEN = ""; final String ACCESS_TOKEN_SECRET = ""; Serial arduinoport; void setsup() { tweetalarm(); println(serial.list()); arduinoport = new Serial(this, Serial.list()[0], BAUD_RATE); arduinoport.bufferuntil(line_feed); void draw() { void serialevent(serial port) { Computer Science & Engineering 7/18

//tweetalarm(); final String arduinodata = port.readstringuntil(line_feed); if(arduinodata!= null) { final String[] data = split(trim(arduinodata), ' '); if(data.length == 2 && (data[1].equals("c") data[1].equals("f"))) { float temperature = float(data[0]); println(temperature); int sleeptime = 5 * 60 * 1000; if(temperature > MAX_WORKING_TEMP) { tweetalarm(); sleeptime = 120 * 60 * 1000; try { Thread.sleep(sleepTime); catch(interruptedexception ignoreme) { void tweetalarm() { TwitterFactory factory = new TwitterFactory(); Twitter twitter = factory.getinstance(); twitter.setoauthconsumer(consumer_key, CONSUMER_SECRET); AccessToken accesstoken = new AccessToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET); twitter.setoauthaccesstoken(accesstoken); try { Status status = twitter.updatestatus("someone, please, take me to the beach!"); println("successfully updated status to '" + status.gettext() + "'."); catch(twitterexception e) { Computer Science & Engineering 8/18

2.2.3 서보모터작동 #include <Servo.h> const unsigned int MOTOR_PIN = 9; const unsigned int MOTOR_DELAY = 15; const unsigned int SERIAL_DELAY = 5; const unsigned int BAUD_RATE = 9600; Servo servo; void setup() { Serial.begin(BAUD_RATE); servo.attach(motor_pin); delay(motor_delay); servo.write(1); delay(motor_delay); void loop() { const int MAX_ANGLE = 3; char degrees[max_angle + 1]; if(serial.available()) { int i = 0; while(serial.available() && i < MAX_ANGLE) { const char c = Serial.read(); if(c!= -1 && c!= '\n') degrees[i++] = c; delay(serial_delay); degrees[i] = 0; Serial.print(degrees); Serial.println(" degrees."); servo.write(atoi(degrees)); delay(motor_delay); Computer Science & Engineering 9/18

( 사진 2) 서보모터연결 2.2.4 휴대폰과아두이노의블루투스연결 ( 아두이노 ) (1) 아두이노에블루투스실드연결 #include <SoftwareSerial.h> int bluetoothtx = 2; int bluetoothrx = 3; SoftwareSerial bluetooth(bluetoothtx, bluetoothrx); void setup() { //Setup usb serial connection to computer Serial.begin(9600); //Setup Bluetooth serial connecti/on to android delay(100); bluetooth.begin(9600); void loop() Computer Science & Engineering 10/18

{ //Read from bluetooth and write to usb serial if(bluetooth.available()) { //char tosend = (char)bluetooth.read(); //Serial.print(toSend); byte data = bluetooth.read(); Serial.print((char)data); //Read from usb serial to bluetooth if(serial.available()) { char tosend = (char)serial.read(); Serial.println("Send: "+tosend); bluetooth.print(tosend); ( 사진 3) 아두이노에블루투스연결 Computer Science & Engineering 11/18

(2) 휴대폰이블루투스를통해아두이노의서보모터작동시킴 #include <SoftwareSerial.h> #include <Servo.h> int bluetoothtx = 2; int bluetoothrx = 3; const unsigned int MOTOR_PIN = 9; const unsigned int MOTOR_DELAY = 15; const unsigned int SERIAL_DELAY = 5; const unsigned int BAUD_RATE = 9600; SoftwareSerial bluetooth(bluetoothtx, bluetoothrx); Servo servo; void setup() { //Setup usb serial connection to computer //Serial.begin(9600); //Setup Bluetooth serial connecti/on to android Serial.begin(BAUD_RATE); delay(100); bluetooth.begin(baud_rate); servo.attach(motor_pin); delay(motor_delay); servo.write(1); //initial value delay(motor_delay); void loop() { //Read from bluetooth and write to usb serial if(bluetooth.available()) { //char tosend = (char)bluetooth.read(); //Serial.print(toSend); byte data = bluetooth.read(); char motor = (char)data; Computer Science & Engineering 12/18

Serial.print(motor); if(motor == 'a') { servo.write(30); delay(motor_delay); servo.write(1); delay(motor_delay); ( 사진 4) 아두이노에연결된블루투스실드와서보모터 Computer Science & Engineering 13/18

2.3 안드로이드 2.3.1 휴대폰과아두이노의블루투스연결 ( 안드로이드 ) 아두이노로락잠금 / 해제메시지를전달한다. public void write(byte[] buffer) { try { mmoutstream.write(buffer); // Share the sent message back to the UI Activity mhandler.obtainmessage(mainactivity.message_write, -1, -1, buffer).sendtotarget(); catch (IOException e) { if(d) Log.e(TAG, "Exception during write", e); Computer Science & Engineering 14/18

2.3.2 안드로이드어플리케이션실행화면 (1) 어플리케이션실행초기화면 (splash) (2) 블루투스연결장비목록화면 Computer Science & Engineering 15/18

(3) 장비연결실패화면 (4) 장비연결성공 Computer Science & Engineering 16/18

(5) 휴대폰의입력이아두이노로전달 Computer Science & Engineering 17/18

3. 진행상황 3.1 개발진행방향 - 아두이노의모든기능통합적연동 - 애플리케이션사용자 UI 개선 - 자전거락장치구성 4. 개발계획 4.1 개발및테스트환경 - 시스템 : 마이크로소프트윈도우환경 - 개발언어 : JAVA, 안드로이드 SDK - 개발 Toll : Android SDK with Eclipse (Java), 아두이노 IDE, Processing - 테스트기기 : GALAZXY S III, NOTE III - 아두이노보드, 센서, 케이블등 Computer Science & Engineering 18/18