[59호]스마트홈 플랫폼
2019 ICT 융합 프로젝트 공모전 참가상
스마트홈 플랫폼
글 | 건양대학교 강현욱, 김준혁
1. 심사평
칩센 개발 작품에 적용된 기술이나 제품은 현재 이미 상용화 단계를 넘어 판매되고 있는 제품들도 많이 있습니다만, 시제품의 형태라 하더라도 작품 개발의 범위에 있어 2인 개발을 진행했다는 것에 조금 놀랐습니다. 전원플러그, 블라인드, 조명 제어등은 생활에 있어서 늘상 접하게 되어 익숙함에 의하여 소홀할 수 있지만, 그래서 더 편리하고 안전하되 효율적으로 사용할 수 있는 방안이 늘 고민되어야 합니다. 전원 플러그 control에 대하여 기본적인 사전 학습이 많이 되었을 것으로 보이고, 모터 컨트롤과 조명 제어 등에도 여러가지 시행착오를 겪었으리라 예상됩니다만, 최소한의 결과를 잘 도출해 낸 것 같습니다.
무선 기술과 networking을 연결하는 것이 가장 기본적인 IoT의 기능인데, 이 부분까지 접목이 되어 있습니다, 보고서에서 언급된 일부 미흡한 부분등에 대하여 추가적인 고민이 이루어진다면 제품화를 고려할만한 좋은 작품이 나올수 있을듯 합니다.
뉴티씨 여러가지 IoT장치를 실제로 만들어서 적용하고자 한점에서 매우 좋은 시도로 보입니다. 또한, 여러가지 CPU들을 사용하고, 기술들도 여러가지를 사용하여 테스트해보고자 한 점이 돋보입니다. 하지만, 한가지에 좀더 집중했다면, 뭔가 작품성이 높은 작품을 만들 수 있었을 것이라는 아쉬움이 남습니다. 기술적으로 많은 학습을 했을 것이라고 생각되며, 앞으로 좋은 작품으로 다음에 다시 보기를 바랍니다.
위드로봇 시중에 나와있는 유사 제품과 다른 차별성을 보여 주면 더 좋은 제품이 될 것 같습니다.
펌테크 스마트홈 구현에 사용 가능한 다양한 응용분야를 미니어처 형태로 짜임새 있게 잘 구성하였다고 생각합니다. 다만 스마트홈 제어를 스마트폰을 통하여 제어하는 방식으로 구현하었다면 더욱더 완성도 높은 작품이 되지 않았을까 생각해봅니다. 학부과정의 학생이 구현하기에 적정한 난이도를 가진 작품이라고 생각합니다.
2. 작품 개요
우리 팀이 설계한 스마트홈 플랫폼은 스마트 멀티탭, 스마트 블라인드, 스마트 무드등, 온습도계, 라즈베리파이 서버로 구성되어 있으며, 무선통신기술을 이용하여 웹 또는 앱으로 원격 제어가 가능하고, 각 기기의 상태를 확인할 수 있다.
3. 작품 설명
3.1. 주요 동작 및 특징
3.1.1. 스마트 멀티탭
위 그림은 블라인드 내부 외부 하드웨어 사진이다. 3구 멀티탭을 분해하여서 릴레이 모듈과 전류센서를 연결하여 각각 원격 제어가 가능하도록 제작하였다. 와이파이 모듈을 사용하여 WiFi망을 통해 원격 통신을 가능하게 하였다. 220V 정격전압은 5V AC-DC 컨버트를 통해 변환시켜 아두이노에 5V를 안정적으로 넣을 수 있었다.
각각의 멀티탭을 ON/OFF 해주기 위해 3개의 이미지 버튼을 만들어서 작동을 할 수 있게 만들었다. HTML의 테이블 태그를 이용해서 디자인을 하였고 이미 켜있는 상태는 붉은색, 꺼있는 상태는 회색으로 버튼이 눌렸음을 사용자에게 알려주었다. 현재시간을 볼 수 있는 코드는 구현하였으나, 이후 현재 시간을 이용해 예약 후 꺼질 수 있도록 해야 한다.
HTML에서 버튼을 누르면 이미 설정해 놓은 버튼 ID가 IP주소를 따라 ESP8266에 명령을 주고 ESP8266에서는 IPD에 버튼 명령을 받으면 read()명령어를 통해 아두이노에 동작 시행 명령을 준다.
getVPP 함수를 통해 인위적으로 만든 전류값을 실효값과 mA단위로 변경해주었다. 그 값을 이용해서 대기모드 상태외 구현코드를 만들었다.
정상적으로 HTML에서 명령어가 전달되었고 휴대폰을 충전했다가 빼고 난 뒤 수 초 후 릴레이가 OFF되는 모습도 볼 수 있었다. 실시간 전력을 측정하여 과전류 방지 및 대기전력 낭비를 줄이는 초기 모델이다.
3.1.2. 스마트 블라인드
그림 3.6은 블라인드를 제어하는 컨트롤러의 케이스 사진이다. 솔리드웍스를 사용하여 원하는 규격의 케이스를 3D 프린터로 출력하려고 했지만, 프린터에 문제가 발생하여 차선책으로 아크릴을 이용하여 케이스를 제작하였다.
아크릴 판들을 고정하기 위해 순간접착제를 이용하니 무언가 하얀 흔적이 생겨서 보기에 좋지 않았다. 그래서 가죽 질감의 시트지를 붙여 깔끔한 느낌이 들도록 했고강력한 네오디뮴 자석을 이용하여 커버를 확실하게 여닫을 수 있게 하였다.
그림 3.9는 부품들을 납땜한 회로를 케이스 안에 넣은 모습이다. 블라인드를 동작시키기 위한 모터, 그 모터를 제어하기 위한 모터드라이버(DMC-50), 무선 통신을 위한 Wi-Fi 모듈(esp-01), 웹 서버로부터 수신한 명령을 처리하는 아두이노(NANO), 모터 작동을 위해 인가되는 DC24V 전압을 아두이노를 위한 DC5V 전압으로 변압시키는 레귤레이터 부분으로 구성되어있다.
모터를 제어하기 위해 10, 11, 12번의 디지털핀을 설정하였다. 이 핀들은 웹 코딩을 통해 각각 정지, 올림, 내림으로 설정되어있다. 그리고 sendData함수를 통해 Wi-Fi와 연결하고, IP주소, 다중연결설정, 서버 연결을 실행하고, 시리얼 모니터에 출력한다.
Wi-Fi 모듈(esp-01)을 사용하여 아두이노와 Apache 서버를 연결하고 Wi-Fi를 통해 받은 명령을 판별하여 모터를 동작시킨다.
사용자가 버튼을 통해 블라인드를 동작시키는 부분이다. 또한 이미지 파일에 하이퍼링크 기능을 넣어서 이전 페이지로 돌아갈 수 있다. 각 컴포넌트는 div태그를 이용하여 깔끔하고 명확하게 구분하였다. UP, STOP, DOWN 버튼에는 onClick 함수를 적용하여 버튼을 누르면, 해당 명령을 Wi-Fi를 통해 블라인드 컨트롤러로 전송한다.
그림 3.12에 있는 기타 기능들은 실제로 기능하지 않는다. 적혀있는 값도 임의로 넣은 것이다. 실제로 기능하지 않음에도 추가한 이유는 우리가 생각하는 시나리오를 위해서이다. 지금은 디자인 부분만 구현했지만 앞으로 기능을 추가할 것이다.
제어 버튼을 누르면 Wi-Fi를 통해 블라인드 컨트롤러로 전송하는 자바스크립트이다. 서버에 연결되어 있는 여러 가지 장치들을 구분하기 위해 블라인드 컨트롤러의 IP주소를 이용한다. 해당 IP주소를 가진 장치로 명령을 보낸다.
버튼을 누르면 눌렀다는 상태를 색깔로 표시하기 위한 이벤트를 발생시키는 자바스크립트이다. 어떤 버튼을 누르면 회색으로 변하여 누른 상태, 동작 중인 상태를 나타내며, 만약 다른 버튼이 눌러져 있으면, 그 버튼은 원래 색깔인 흰색으로 돌아간다.
그림 2.13는 스마트 블라인드를 설치한 모습이다. 블라인드를 동작시키려면 상당한 힘이 필요하고, 안정적으로 동작시키기 위해서는 컨트롤러가 벽에 잘 고정되어 있어야 한다. 가장 확실한 고정 방법은 못으로 벽에 고정시키는 것이지만 임시 설치이기에 양면테이프를 이용하였다. 접착력이 뛰어나 잘 고정되기는 하였으나, 블라인드를 동작시킬 때 발생하는 진동으로 인해 조금씩 부착이 약해지는 것을 볼 수 있었다.
3.1.3. 스마트 무드등
사용자 화면을 다음과 같이 사용자의 감정, 분위기에 맞추어 선택할 수 있도록 설정 했으며 정열-빨강, 진정-초록, 청량-파랑, 낙천-노랑, 환상-무지개, 공허-하양 그리고 밝기는 3단계로 분류 했다. 아두이노 코딩을 통해 일정 숫자 값을 받을 때 원하는 색상을 나타낼 수 있도록 만들었다. 기본적인 빨강, 초록, 파랑부터 무지개까지 나오도록 만들었다.
무드등의 회로는 상용전원 220V를 어댑터를 통해 9V로 변압시키고, 아두이노에 인가하여, 아두이노에서 네오픽셀로 전압을 주고, 아두이노의 3.3V 출력 핀에서 Wi-Fi 모듈(esp-01)로 전력을 공급하는 방식이다.
케이스는 초기에 원이나 구 형태로 구상했지만 많은 자료 조사와 여러 도안들을 통해 그림 3.15과 같은 형태로 색상을 표현했을 때, 분위기 있는 무등등이 될 것이라고 생각하여 디자인을 결정하였다.
3.1.4. 스마트 온습도계
이번 프로젝트를 진행하면서 하드웨어와 소프트웨어를 직접 만들며 제품을 실제로 제작했다.
하드웨어 측면으로는 아두이노 UNO와 ESP8266(esp-01), DHT22를 사용하였다. 소프트웨어 측면으로는 아두이노 IDE를 이용해 코딩을 했으며, ESP8266을 조작하기 위한 SoftwareSerial 헤더 파일과 DHT22를 사용하기 위해서 DHT 헤더 파일을 import하였다.
Serial 모니터 확인 부분과, DHT22 시작, ESP8266로 와이파이를 통한 IP 주소 획득 부분에 들어간 코드로 AT명령어를 사용했다. 아두이노 loop 함수 부분은 다른 제품과 달리 아두이노 자체가 서버가 되어 웹 페이지를 생성하고 IP주소를 메인 웹 서버에서 하이퍼링크로 접근하게 했다.
다른 제품과 달리 JAVA Script를 사용하지 않고 아두이노 자체를 서버로 만들었기 때문에 <a>태그로 하이퍼링크를 사용해 아두이노 서버의 IP를 추가하고 통일성을 위해 프레임을 나누어 볼 수 있게 하였다.
3.1.5. 라즈베리파이 서버
서버 구축을 위해 내장 WI-FI 기능이 있는 라즈베리파이3 B+ 모델을 사용하였으며, 라즈베리파이에는 아파치2를 설치하였다. 포트포워딩을 해준다면 외부에서도 접속할 수 있다. 아파치 서버에 우리가 만든 HTML 관련 파일을 넣으면, 웹에서 항상 서버가 가동하기 때문에 언제든지 접속할 수 있었다. 차후 MySql을 이용해 DB값을 활용할 예정이다.
3.2. 전체 시스템 구성
3.3. 개발 환경
· HardWare : Arduino, Apache, Linux
· SoftWare : HTML, CSS, BootStrap, JavaScript
· Tools : atom, Arduino IDE, frizing, RaspberryPi, Telnet, Putty, Filezila
4. 단계별 제작 과정
원활한 제작을 위해 IoT 장치 시제품을 분석하여 필요한 센서에 대해 학습하였다. 아두이노를 기반으로 제어하기 때문에 아두이노에서 사용가능한 센서를 이용하였다. 각 센서의 datasheet를 통해 사양을 확인하고 규격에 맞게 회로를 구성하였다. 처음에는 브레드보드판과 점퍼선을 이용해서 테스트를 시행하였고 테스트가 완료되면 PCB기판에 납땜을 통해서 모듈화를 시켰다. 납땜 시 전선을 사용하였고 경우에 따라서 wrapping도 하였다. Smart Multitap, Smart Blind, Smart Mood Light, Smart Hygrometer 총 4 가지의 IoT 장치를 제작하였다. 모형으로 된 집을 제어하는 것이 아닌 실제 집에서 사용하는 것을 목표로 했기 때문에 각 제품은 상용 전원(220V)을 사용할 수 있게 제작하였다.
서버는 라즈베리파이와 아파치를 이용하였다. 외부접속을 용이하기 위해 라즈베리파이 아파치2 서버를 가동시켜 언제든 웹에 접속할 수 있도록 하였다. 아두이노에는 Wi-Fi 모듈(esp-01)을 부착하여 Wi-Fi를 통해 라즈베리파이와 연결할 수 있도록 하였다. 각 제품에 고정 IP 주소를 할당하여 전원을 껐다가 켜더라도 IP 주소를 다시 할당하는 불편함이 없도록 하였다. 웹은 bootstrap을 이용해 CSS로 디자인하였고, 전원 ON/OFF 동작 및 LED 제어 버튼은 JSP를 이용해서 구현하였다.
4.1.1. 스마트 멀티탭
멀티탭 블록도 다이어그램
실제 멀티탭 분해 및 릴레이 모듈 연구
전류센서 부착 및 esp8266 모듈 연결
전체 회로도 구상 및 제작
케이스 제작 및 모듈화
웹 페이지 설계 및 통신
웹 디자인 및 실시간 전류 모니터링 구현
4.1.2. 스마트 블라인드
설계도 구상 및 사용할 부품, 부품의 치수를 확정
프로그램한 대로 모터가 잘 구동하는지 시험하기 위한 Testtype 제작
블라인드 줄에 맞는 기어를 3D프린터로 제작, 모터와 아두이노의 동작 전압을 조정하기 위한 레귤레이터 설계
Wi-Fi 연결 및 회로 납땜. 케이스 제작
웹 페이지 설계, 서버 연결, 원격 제어
4.1.3. 스마트 무드등
System Blockdiagram, Flowchart 작성
frizing을 활용한 회로도 및 케이스 설계 도면 작성
하드웨어 모듈화
4.1.4. 통합(라즈베리파이 서버, 웹 페이지)
웹 서버
5. 참고문헌
[1] 금별맘 “삶의 질을 높여주는 LG스마트홈 IoT 기기”
[2] I-DB “전기요금 주범! 가전제품 대기전력 소모량”
[3] 다음블로그 “전기 1w당 요금은 얼마나 될까?”
[4] apkpure “스마트 멀티탭 원격제어 APK”
[5] 에듀이노 오픈랩 “5V동작 20A 전류 센서 모듈”
[6] “DMC-50”, 모터뱅크, 모터관련 쇼핑몰
[7] just4you, “전원설계 기본원칙”, 전자회로, 네이버블로그
[8] Wkim, “LM7805동작설명”, 전자부품, 네이버블로그
[9] 원동현, “Play! SolidWorks 2014 Master”, 초판, 청담북스
[10] 원동현, “솔리드웍스 기본과정”, SolidWorks Korea, 유튜브 강의
[11] 사용법어찌, “HTML 태그사용법”, 구글
[12] 솜피IoT블라인드, “블라인드 웹디자인”, LGU+ 홈피
[13] ev art, “esp8266 LED 제어”, 다음 블로그
[14] 제타의 IOT 세상나들이, “ESP-01, ITEADLIB Wee 라이브러리를 사용하여 온,습도를 전달해주는 웹서버” 네이버 블로그
[15] ESP8266 AT Command Set, PDF
[16] Hard Copy Arduino, “온습도 센서 (DHT22, DHT21)”, 블로그
[17] MakeWith, “아두이노를 이용한 미니 웹 서버 만들기 : 예제 분석”, 블로그
[18]kokoafab,”조도센서(모듈)로 어두워지면 켜지는 LED 만들기”
[19]Makeshare,“네오픽셀 RGB LED WS2812에 대해 알아보기/아두이노 조명”