[39호]SHUSS (Smart Home Umbrella Stand System)
2016 ICT 융합 프로젝트 공모전 참가상
SHUSS (Smart Home Umbrella Stand System)
글 | 한국해양대학교 이승민, 김남훈, 이동준, 최우성
심사평
뉴티씨 간단한 내용이지만, 실제로 비가 온다거나 할 때에 우산을 가지고 나갈 것을 알람 등을 통하여 확인할 수 있도록 하는 아이디어를 구현한 것인데, 학습하는 데에는 좋은 작품으로 보인다. 그리 어렵지 않게 구현할 수 있지만 실용적인 것으로, 이 작품을 만든 학생은 앞으로도 생활 속작품을 많이 만들 수 있을 것으로 생각된다.
칩센 쉬운 주제지만 실제 생활에 도움이 될만한 주제다. 좋은 아이디어 라고 생각한다.
위드로봇 우산꽂이가 날씨를 파악하여 우산을 챙길 수 있도록 알려주는 아이디어가 재미있다. 하드웨어 구현에 치중하다보니 전체 서비스 관점에서 빠진 부분을 채우지 못한 것 같다. 사람 인식 부분을 좀 더 강화하면 더 재미있는 서비스를 제공할 수 있을 것으로 보인다.
작품 제목
SHUSS(Smart Home Umbrella Stand System)
비나 눈이 오는 날씨에는 비를 맞지 않기 위하여 우산이나 우비가 필수적으로 필요합니다. 아래의 사진들은 비를 맞지 않기 위해서 연잎이라도 사용하여 비를 피하려는 사람들의 의지를 보여줍니다. 저희는 우산이 필요한 날에 우산을 챙기지 못하여 발생하는 불상사를 방지하기 위하여 IoT의 일종인 SHUSS를 만들었습니다.
작품 개요
사람들은 아침에 뉴스를 통해 하루의 날씨를 접합니다. 최근에는 스마트폰의 어플과 스마트 미러 등을 통하여 날씨정보를 접하게 되었습니다. 하지만 날씨정보를 외출하기 전에 꼬박꼬박 확인하는 사람이 있는 반면에 날씨정보에 별로 관심을 가지고 있지 않은 사람들도 있습니다. 보통 이러한 사람들은 소나기나 급작스러운 날씨변화에 직면하게 되면 대게 손해를 보게 됩니다. 그래서 저희는 이러한 사람들을 위하여 비나 눈 등의 자연현상이 발생하였거나 그 날의 날씨 중에 조짐이 보이면 낭패를 당하지 않게 하기 위한 장비를 개발하게 되었습니다. 비나 눈 등 우산이라는 도구를 필요로 하는 날씨에 대해서는 자동으로 우산을 준비할 수 있도록 하는 스마트 우산꽂이를 개발하기로 하였습니다.
작품 설명
주요 동작 및 특징
(가) 주요 동작
저희 작품은 날씨 정보를 받아와 눈과 비 등의 날씨에 우산을 갖추고 외출할 수 있도록 하는 시스템입니다.
와이파이는 아두이노 윤을 사용하여 연결하게 되는데 한번 전원과 WIFI에 연결하여 놓으면 지속적으로 사용가능 합니다. WIFI가 연결되면 기상청에서 RSS를 받아 pty(날씨)값을 받아들여 적외선센서가 작동합니다.
사람인식은 적외선 센서 2개(A,B) 사용하여 A(앞쪽)가 먼저 인식하고 B(뒤쪽)를 두 번째로 인식하면 집에서 나가는 것으로 판단, B(뒤쪽)을 먼저 인식하고 A(앞쪽)을 두 번째로 인식하면 집으로 들어오는 것으로 판단합니다. 우산꽂이 안에도 적외선 센서를 부착하여 출입을 판단하고 우산이 계속 감지되면 부저가 작동하게 됩니다. 그리고 우산을 가지고 가게 되면 소리가 꺼집니다.
사용자에게 알림을 주는 방법은 부저를 이용하여 소리로 인지시켜 주는 방법을 사용했다.
(나) 특징
시중에서 볼 수 없는 아이템이며 저렴한 가격과 실생활에 매우 유용하게 쓰일 수 있습니다. 또한 실생활에 매우 밀착되어 있는 작품이기에 활용도가 매우 높습니다.
집집마다 와이파이를 대부분 갖고 있기 때문에 연동하기도 매우 쉽고, 자동 알림 서비스이므로 편리성이 높습니다. 또한 입출을 판단하여 나갈 때에만 센서가 작동하게 했습니다. 만약에 이 상품이 시중에 나오게 된다면 현대 사회에 필요한 필수품이 될 것 같습니다.
단계별 제작 과정
부품 설명
초기
WIFI연결 방법( 아두이노 윤 or 아두이노 와이파이 쉴드 ), 출입 감지 방법, 알람
중반 (예비 실험)
모의실험으로 LED를 연결하여 각각의 센서 인식 후 불이 들어오는지 확인 작업을 했으며 아두이노 윤으로 와이파이 연결을 하여서 pty 값 즉, 없음(맑음), 비, 눈의 값이 들어오는지 확인을 하는 작업을 동시에 이루었습니다. 또한 적외선센서 역시 거리를 감지를 해보니 원하는 값들이 나오는 것을 확인할 수 있었습니다.
여기서는 적외선 센서를 달아보아서 직접 사람이 움직여서 거리를 감지할 수 있는지 체크와 우산이 통에 들어있다는 것에 대한 인식을 실험을 실행해보니 저의 의도와 맞게 잘 작동을 했다는 것을 확인할 수 있었습니다.
후반 (제작 과정)
작품을 만들기 전 부품 준비 : 적외선 센서, 브레드 보드, 우산꽂이, LED
우산 꽂이의 외관을 위해서 뒤에 브레드 보드를 장착하였습니다. 그래야지 우산을 꽂을 때도 방해가 되지 않고 비를 맞은 우산에 대해 전선에 물이 들어가지 않기 때문입니다.
우산 꽂이 앞 편에는 실질적인 역할을 하는 적외선 센서의 위치를 선정하고 부착하는 모습입니다.
뒤쪽에는 LED부착과 적외선 센서 선을 연결하는 모습입니다. LED의 부착은 앞서 말하듯이 센서의 동작 인식 확인과 소스코드에서 나온 듯이 LED의 불의 유무로 동작을 시키기 때문에 연결을 하는 것입니다.
아두이노 윤을 연결한 후에 각각의 전선을 적외선에는 아날로그 쪽, LED 및 LED는 디지털 핀 쪽에 알맞게 넣어줬습니다. 그 후에 아두이노 윤에는 소스코드를 코딩을 해주고 외부 전압을 연결한 후 부착해서 완성했습니다.
기타(회로도, 소스코드, 참고문헌 등)
회로도
소스코드
int pinNum0 = A0;
int pinNum1 = A1;
int pinNum2 = A2;
// 적외선 입력 핀 설정
int distance0 = 0;
int distance1 = 0;
int distance2 = 0;
// 거리 값 정수형 설정
int led1 = 11;
int led2 = 12;
int led3 = 13;
// led 3개 아날로그 핀 설정
int speakerPIN = 13;
// 부저 쪽 핀 설정
int numTones = 20;
// 20개 값 설정
int c = 0;
int d = 0;
// 적외선 출입 시스템 제어 위한 변수 설정
int tones[] = {262, 294, 330, 349, 392, 440, 494, 262, 294, 330, 349, 392, 440, 494}; // 각 주파수 별 소리 설정 (도 레 미 파 솔 라 시) * 2
#include <Bridge.h>
#include <HttpClient.h>
void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Bridge.begin();
digitalWrite(13, HIGH);
Serial.begin(9600);
pinMode (pinNum0, INPUT);
pinMode (pinNum1, INPUT);
pinMode (pinNum2, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
while (!Serial); // serial접속을 기다린다.
}
void loop() {
// 클라이언트라는 변수를 설정하여 주어서 인터넷 접속 시 데이터를 받아올 수 있게끔 해준다.
HttpClient client;
int data = analogRead(pinNum0);
int data1 = analogRead(pinNum1);
int data2 = analogRead(pinNum2);
int volt = map(data, 0, 1023, 0, 5000);
int volt1 = map(data1, 0, 1023, 0, 5000);
int volt2 = map(data2, 0, 1023, 0, 5000);
distance0 = (21.61/(volt-0.1696))*1000;
distance1 = (21.61/(volt1-0.1696))*1000;
distance2 = (21.61/(volt2-0.1696))*1000;
// 적외선 거리 감지
Serial.print(“distance0 : “);
Serial.println(distance0);
delay(100);
Serial.print(“distance1 : “);
Serial.println(distance1);
delay(100);
Serial.print(“distance2 : “);
Serial.println(distance2);
delay(100);
// 각 센서별 거리 시리얼 모니터에 띄우기
// 인터넷으로 기상청에 접속하여 날씨정보에 관한 RSS값을 받아온다.
client.get(“http://www.kma.go.kr/wid/queryDFSRSS.jsp?zone=2620065000”);
// 들어오는 바이트들을 사용가능한 동안 동작하며 구문을 반복하게 된다.
while (client.available()) {
//라인을 기준으로 문자열을 저장한다.
String line = client.readStringUntil(‘\n’);
//pty는 날씨 정보 코드이므로 파싱한 데이터들중에서 날씨 정보만 판단한다.
int temp11= line.indexOf(“</pty>”);
if(temp11>0) {
String tmp_str=”<pty>”;
String wt_hour = line.substring(line.indexOf(tmp_str)+tmp_str.length(),temp11);
//pty에서 0이 날씨 맑음 코드이므로 0이 아닐때는 비와 눈 등의 날씨 정보를 나타내는 것으로 pty가 0이 아닐 때, 즉 비나 눈이 올 때 구문이 동작하도록 설정해 준다.
//wt_hour은 string형으로 선언되어져 있으므로 이 것과 비교하기 위하여 comp라는 변수를 char배열형, 즉 문자열로 선언해주어 비교가 가능하게 해준다.
char comp[] =”0”; //wt_hour의 값, 즉 pty 의 값이 0이 아니면 if구문 안에 있는 구문들을 동작하여 준다.
if(wt_hour!=&comp[0]){
if(distance0 < 18) // 적외선 센서 1 거리를 감지해 우산의 존재여부를 파악한다.
{
digitalWrite(led1, HIGH);
c = 1;
}
//c라는 값은 우산이 우산꽂이에 존재할 시에 할당되어 있는 값이므로 이 값이 1인 경우 사람이 우산 꽂이 앞을 지나가는 것을 인식하도록 설정해 주었다.
if(c == 1)
{
if(distance1 < 20) // 적외선 센서 2 거리 감지
{
digitalWrite(led2, HIGH);
d = 1;
}
// 우산의 존재여부를 알려주는 변수 c와 사람이 첫 번째 센서를 지나가는 것을 인식하는 변수 d를 사용하여 우산이 존재할 때 사람이 첫 번째 센서를 지나 두 번째 센서에 도달하였을 시에 움직임을 감지하는 센서를 작동시키고 부저를 울려 사람에게 알려준다.
if(c == 1 && d == 1)
{
if(distance2 < 18) // 적외선 센서 3 거리 감지
{
digitalWrite(led3, HIGH);
for (int i = 0; i < numTones; i++)
{
tone(speakerPIN, tones[i]);
delay(500);
}
// 소리 출력
noTone(speakerPIN);
}
// 변수 초기화
else
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
c = 0;
d = 0;
}
}
}
}
}
}
Serial.print(“회차종료”);
//3초마다 동작을 반복한다.
delay(3000);
}
· 밝은 미래 사회구현, ‘스마트 홈’의 기술 세계
· 아두이노 윤 와이파이 연결하기 (https://www.arduino.cc/en/Guide/ArduinoYun)
· 스마트폰의 블루투스 통신을 이용한 다중 오브젝트 제어방법 및 장치에 관한 융합연구
· 스마트 object에 관한 논문( WBAN(Wireless Body Area Network)기반 스마트 오브잭트 설계)
작동영상 : https://youtu.be/m8Mabt70N1A
설명영상 : https://youtu.be/6FnzJuXGNQk