Transcript PPT

유비쿼터스 컴퓨팅 및 실습
Final Report
I Pig
01. 과제명
02. 과제개요
03. Arduino 적재 프로그램 코드
04. 데이터 관리 및 Viewer
05. 개발 산출물 메뉴얼
06. 개발 기간 및 일정
07. 업무분담
CopyrightⓒSunRiver leehyekang.blog.me
One
과제명
I Pig(Intelligent Pig)
CopyrightⓒSunRiver leehyekang.blog.me
two
과제개요(1)
SNS
저금통
Intelligent
저금통
Sensor
CopyrightⓒSunRiver leehyekang.blog.me
two
과제개요(2)
100
500
CopyrightⓒSunRiver leehyekang.blog.me
three
프로그램 코드
#include <SPI.h>
#include <WiFi.h>
#include <EEPROM.h>
#define CYCLE_MINUTE 1
#define SUM_ADDRESS 10
char ssid[] = "JJangLab";
char key[] = "emsysjang";
char token[] = "1522334322-kEW8L7zXKiraIYNuhIIgSK7hm2wWe441yeOWJSA";
char server_adr[] = "arduino-tweet.appspot.com";
unsigned long time = 0;
unsigned long m = 60000;
int status = WL_IDLE_STATUS;
WiFiClient twtclient;
String txt ="";
int sumcoin=0;
int coin=0;
int
int
int
int
int
int
int
int
int
flag=0;
pin1=0;
pin2=1;
pin3=2;
pin4=4;
pin5=7;
pin6=8;//tailmoto
pin9 =9;
pin10=10;
CopyrightⓒSunRiver leehyekang.blog.me
three
프로그램 코드
int incoin=0;
int timecount=0;
int beak=0, oship=0, obeak=0;
int coinflag=0;
void checktime();
void insertcoin();
void spinTail();
void destroymode();
void sparkEyes();
void setup(void){
Serial.begin(9600);
pinMode(pin4,OUTPUT);
pinMode(pin5,OUTPUT);
pinMode(pin6,OUTPUT);
pinMode(pin9,OUTPUT);
pinMode(pin10,OUTPUT);
digitalWrite(4,LOW);
digitalWrite(7,LOW);
analogWrite(9,10);
analogWrite(10,10);
while (!Serial) {
}
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
while(true);
}
CopyrightⓒSunRiver leehyekang.blog.me
three
프로그램 코드
void loop(){
checktime();
Serial.print(timecount);
Serial.print(" ");
Serial.print(incoin);
Serial.println("");
if(timecount>=2000 && incoin==0){
destroymode();
}
insertcoin();
}
void checktime(){
timecount++;
delay(1);
}
void sparkEyes(){
int value = random(100,300);
for(int i=0;i<4;i++){
analogWrite(9,255);
delay(value);
analogWrite(9,10);
delay(value);
analogWrite(10,255);
delay(value);
analogWrite(10,10);
delay(value);
delay(100);
}
}
CopyrightⓒSunRiver leehyekang.blog.me
three
프로그램 코드
void insertcoin(){
String temptxt;
int read1 = analogRead(pin1);
int read2 = analogRead(pin2);
int read3 = analogRead(pin3);
if(read1<200 && coinflag == 0){ coinflag = 1; Serial.println("50won input");
timecount=0; coin +=50; spinTail(); }
if(read2<200 && coinflag == 0){ coinflag = 1; Serial.println("100won input");
timecount=0; coin +=100; spinTail();}
if(read3<200 && coinflag == 0){ coinflag = 1; Serial.println("500won input");
timecount=0; coin +=500; spinTail();}
if(incoin==1 && timecount>=1000){
//sumcoin=EEPROM.read(SUM_ADDRESS);
sumcoin+=coin;
//EEPROM.write(SUM_ADDRESS,sumcoin);
temptxt="";
temptxt+=coin;
temptxt+="W Deposited! Total balance:";
temptxt+=sumcoin;
temptxt+="W";
postTwt(temptxt);
incoin=0;
timecount=0;
coin=0;
flag=0;
}
}
oship = 1; incoin = 1;
beak=1; incoin = 1;
obeak = 1; incoin = 1;
CopyrightⓒSunRiver leehyekang.blog.me
three
프로그램 코드
void spinTail(){
sparkEyes();
digitalWrite(pin6,HIGH); // spin tail
delay(2000);
digitalWrite(pin6,LOW);// stop spin tail
oship = 0; beak = 0; obeak = 0;
timecount=0;
Serial.println(incoin);
coinflag = 0;
}
void destroymode(){
txt = "I'm hungry give me coin!!!!!";
if(flag == 0){
postTwt(txt);
flag = 1;
}
int value = random(100,300);
insertcoin();
if(!(incoin)){
digitalWrite(4,HIGH);
delay(value);
digitalWrite(4,LOW);
delay(value);
digitalWrite(7,HIGH);
delay(value);
digitalWrite(7,LOW);
delay(value);
}
}
CopyrightⓒSunRiver leehyekang.blog.me
three
프로그램 코드
void printWifiStatus() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
void postTwt(String tweet) {
Serial.print("tweet: ");
Serial.println(tweet);
if (twtclient.connect(server_adr, 80)) {
Serial.println("connected");
twtclient.println("POST http://arduino-tweet.appspot.com/update HTTP/1.0");
twtclient.print("Content-Length: ");
twtclient.println(tweet.length()+strlen(token)+14);
twtclient.println();
twtclient.print("token=");
twtclient.print(token);
twtclient.print("&status=");
twtclient.println(tweet);
}
CopyrightⓒSunRiver leehyekang.blog.me
three
프로그램 코드
// if the server's disconnected, stop the twtclient:
if (!twtclient.connected()) {
Serial.println();
Serial.println("disconnecting from server.");
twtclient.stop();
// do nothing forevermore:
while(true);
}
Serial.println("twt finished");
}
CopyrightⓒSunRiver leehyekang.blog.me
four
Viewer
CopyrightⓒSunRiver leehyekang.blog.me
four
Viewer
CopyrightⓒSunRiver leehyekang.blog.me
four
Viewer
CopyrightⓒSunRiver leehyekang.blog.me
five
개발 산출물 메뉴얼
설정 시간에 저금 하지 않음
I Pig
I’m hungry give me coin
CopyrightⓒSunRiver leehyekang.blog.me
five
개발 산출물 메뉴얼
동전 입력
100
500
진동 중단
LED 켬
CopyrightⓒSunRiver leehyekang.blog.me
five
개발 산출물 메뉴얼
500
동전 입력
100
적외선
Sensor
50
50
r
100
500
CopyrightⓒSunRiver leehyekang.blog.me
five
개발 산출물 메뉴얼
동전 입력 완료
100
500
동전 판별
CopyrightⓒSunRiver leehyekang.blog.me
five
개발 산출물 메뉴얼
동전 입력 완료
I Pig
100\ deposited
Total money : 5200 \
CopyrightⓒSunRiver leehyekang.blog.me
six
개발기간 및 일정
5월 3주차
5월 4주차
5월 5주차
6월 1주차
6월 2주차
아이디어 및 주제선정 회의
하드웨어 개발
SNS 관련 API 연구
소프트웨어 개발
저금통과 아두이노의 연결
수정 및 보수
최종 발표 준비
CopyrightⓒSunRiver leehyekang.blog.me
seven
업무분담
상규
기존 Coretex 마이크로프로세서를
네트워크 기반 SNS를 이용하여 프
로그래밍하였더니 신기하였다.
종민
기존의 마이크로프로세서를 이용하
는 것보다 간단하게 하드웨어를 구
성할 수 있다는 점이 흥미로웠다.
희성
새로운 하드웨어를 접해보고 거기에
기능들을 여러가지 구현해보는게 굉
장히 재미있었다.
성혁
아두이노를 처음 만져 봐서 재밌었고 앞으로
취미로 이용학 싶다는 생각을 하였습니다.처음
목표했던 기능을 모두 구현하지 못해
많이 아쉬웠고.안식년 가시기 전에
좋은 수업 감사합니다.~~~
현경
아두이노가 오픈소스하드웨어라곤 했지
만 안드로이드처럼 많은 소스를 찾기 힘
들었다. 아두이노를 공부해서 내가 만든
소스를 공유해야겠다.
CopyrightⓒSunRiver leehyekang.blog.me
Q&A
CopyrightⓒSunRiver leehyekang.blog.me