Ⅰ. 서론
스마트 기기와 기술의 발전에 따라 사물들을 인터넷에 연결하여 다양한 정보를 공유하는 사물인터넷( IoT : Internet of Things) 서비스들이 확대되고 있으며 다양한 응용 연구가 진행되고 있다[1,2,3,4].
IoT 응용의 대표적인 스마트 홈은 주거환경에 IT를 융합하여 편익과 복지증진, 안전한 생활이 가능하도록 하는 이용자 중심적인 스마트 라이프 환경을 제공한다. 예를 들어 에어컨, 선풍기와 같은 여러 가지 장치들과 연결하여 온도 조절, 집 밖에서 방문객 확인이나 실내 온/습도 모니터링 등 실내/외에서 별도의 이동이나 움직임 없이 집안의 기기들을 제어하고 모니터링하여 사용자의 일상생활의 편의성과 만족도를 높일 수 있다.
본 논문에서는 집안의 기기들을 네트워크로 연동하고 관리하여 편의성과 만족도를 높이는 스마트 홈 시스템을 구현하였다.
본 논문에서 구현한 스마트 홈 시스템은 아두이노를 이용하여 실내외에서 온도와 습도를 모니터링 할 수 있고 그에 따라 에어컨, 난방 등을 수동 혹은 자동으로 작동하여 온도 조절이 가능하다. 카메라가 부착된 스마트 도어록을 통해서 스마트폰에서 방문객을 확인하고 문 앞까지 가지 않더라도 원격으로 문 개폐가 가능하다. 또, 일정을 등록하여 여러 기기들을 한 번에 자동화할 수 있다. 예를 들어 취침 시 침대에 누워 스위치를 끄고 에어컨을 작동하고, 다음날 기상 시간에 맞춰 전원을 키고 창문을 열어 환기를 시키는 것까지 가능하다.
본 논문에서는 사용자가 원격에서 스마트홈 기기들을 제어할 수 있도록 안드로이드 앱을 개발하였으며 IoT 기기들에서 생성되거나 제어를 위한 데이터는 AWS IoT 서비스를 이용하여 관리하도록 구현되었다. 또한 스마트 홈 서버인 아두이노와 ASW IoT 서버 사이의 데이터 통신과 제어는 MQTT 프로토콜을 이용하여 구현되었다.
본 논문의 구성은 다음과 같다. 2장에서는 본 논문의 연구 배경을 설명하고, 3장에서는 스마트홈 전체 시스템의 설계에 대해 설명한다. 4장에서는 구현된 내용을 소개하며, 5장에서는 결론을 맺는다.
Ⅱ. 연구 배경
1. AWS IoT
AWS IoT는 IoT 시스템을 구성하는 센서들과 어플리케이션들을 AWS 클라우드 기반으로 안전한 양방향 통신을 제공한다[6]. IoT 응용 시스템은 AWS IoT 서비스를 통해 여러 디바이스에서 원격 측정 데이터를 수집하고 해당 데이터를 저장 및 분석할 수 있다. 또한 휴대전화또는 태블릿에서 이러한 디바이스를 제어하는 어플리케이션을 쉽게 개발할 수 있다. AWS IoT를 사용하여 모든 장치가 인터넷에 연결하고 원하는 작업을 빠르고 안정적으로 쉽게 수행할 수 있으며, 통합된 스마트 홈 환경을 위해 단독으로 또는 다른 장치와 함께 작동할 수 있다.
2. 아두이노
아두이노 보드는 라즈베리파이 보드와 함께 IoT 데이터 수집용으로 널리 사용되는 디바이스이다[7][8]. 라즈베리파이에 비해 성능은 낮지만 간단한 하드웨어로 여러개의 아날로그 및 디지털 입/출력이 가능하기 때문에 온도, 습도 센서와 같은 아날로그 센서와 스텝모터와 같은 디지털 기기를 연결하여 다양한 형태의 IoT 기기를 구성할 수 있다. 또한 MQTT Client가 실행될 수 있으므로 MQTT Broker와 구성하여 IoT 시스템 구현이 용이하다.
3. MQTT
MQTT는 (Message Queue Telemetry Transport)는 소형 기기의 제어와 센서 정보 수집에 유리하며 통신 장비, 모바일, 스마트폰 기기에 최적화된 경량 메시징 프로토콜로 현재 IoT 장비에 많이 사용되고 있다[9].
MQTT 구조는 그림 1과 같이 Topic을 기반으로 메시지를 중계해주는 MQTT Broker를 사이에 두고 양단에는 MQTT 클라이언트가 있다. MQTT 구조의 장점은 Client들이 Topic을 이용하여 간단하게 데이터를 전달하고 받을 수 있다는 점이다. 그림 1에서 Client-A는 Topic1으로 데이터를 Publish하면 Broker가 Subsribe한 다른 Client에게 데이터를 전달하기 때문에 Client-A는 그 데이터가 어떤 Client에게 전달이 되는지 관여할 필요가 없으므로 통신 부담이 줄어들게 되는 것이다. 또 다른 장점은 Topic을 이용하여 Multicasting 또는 Broadcasting이 가능하다는 점이다. 그림 1에서와 같이 Client-A와 Client-B는 Topic1에 한번만 Publish함으로써 Client-D와 Client-E 모두에게 데이터를 전달할 수 있다.
그림 1. MQTT Topic 과 Publish/Subscribe 데이터 흐름
Fig. 1. MQTT Topic and Publish/Subscribe Data Flow
본 논문에서는 AWS IoT 서버에 MQTT Broker를 사용하였으며 아두이노에 MQTT Client를 구현하였다. 아두이노는 Publisher 모드로 센서 데이터를 AWS IoT 서버에 전송하고 Subscriber 모드로 제어 명령어를 수신하여 IoT 기기들을 동작시킨다.
Ⅲ. 시스템 설계
1. 시스템 구성
본 연구에서 구현한 전체 시스템은 그림 2와 같다. 구현된 스마트 홈 시스템은 MQTT Broker가 실행되는 AWS IoT 서버와 MQTT Client로 동작하는 아두이노시스템. 아두이노가 제어하는 온도센서, 모터, 카메라 그리고 사용자 앱으로 구성되어 있다.
그림 2. 전체 시스템 구성
Fig. 2. System View
아두이노는 AWS IoT 서버에 MQTT 프로토콜 Publish를 이용해 센서값과 기기들의 상태 정보 데이터를 JSON(JavaScript Object Notation) 형식으로 전달한다. 사용자 앱에서는 MQTT Subsriber 모드로 AW IoT 서버로부터 온도와 같은 센서 정보를 수신하여 화면에 표시하고 전등과 도어록 모터 제어를 위한 명령어를 MQTT Publisher 모드로 AWS IoT 서버에 전달한다. AWS IoT 서버는 사용자 앱에서 받은 제어 명령을 데이터베이스에 저장하고 다시 MQTT Publish 방식으로 아두이노 MQTT Client에게 전달한다. 아두이노 Client는 MQTT Subsriber 모드로 수신한 제어정보를 인식하여 전등과 도어록 모터, 선풍기 모터 및 카메라를 제어한다.
2. 제어 모듈 설계
가. 하드웨어
센서와 IoT 기기를 제어하는 제어 장치로 Arduino MEGA 보드를 사용하였다. 본 논문에서는 아두이노 MEGA 보드를 사용하였으며 MEGA 보드에 서버와의 TCP 통신을 위한 WiFi 모듈을 추가하였다. 아두이노 MEGA 보드는 총 54개의 디지털 입/출력 핀과 16개의 아날로그 입력핀을 갖고 있다. 본 논문에서는 온도 측정을 위한 온도센서와 도어록과 에어컨 제어를 위한 모터 제어 모듈, 방문자 확인을 위한 카메라 모듈을 사용하였다.
나. 아두이노 제어 프로그램
그림 3과 같이 아두이노 보드에서 작동하는 스마트홈 IoT 제어 시스템은 다음과 같은 두 부분으로 구성된다.
그림 3. 아두이노 내 제어 모듈 구성
Fig. 3. Control Modules in Arduino
(1) 하드웨어 제어 모듈
온도센서로부터 데이터를 수집하고 LED 전등, 모터 및 카메라와 같이 연결된 IoT 하드웨어를 제어한다.
(2) MQTT Client
IoT 기기로부터 수신된 데이터를 MQTT Publish 형식으로 AWS IoT 서버에 전달하고 사용자 앱으로부터 ASW IoT 서버를 통해 전달된 IoT 기기 제어 명령어를 MQTT Subscriber 모드로 수신하여 하드웨어 제어 모률에 전달한다.
다. AWS IoT Core 와 아두이노 연결
AWS IoT 서비스와 아두이노를 연결하기 위해서는 다음과 같은 절차가 필요하다
(1) AWS IoT Core에 인증 등록 : X.509 인증서를 사용하여 아두이노 보드를 인증하여 사용하였다. X. 509 인증서를 생성하려면 아두이노 보드에서 CSR(Certificat Signing Request)를 생성한 후 이를 AWS 콘솔에 업로드 하여야 한다.
(2) AWS IoT 정책 생성 : 디바이스가 MQTT Topic Subscriber 또는 Publish와 같은 AWS IoT 작업을 수행할 수 있는 권한을 부여해야 한다.
3. 통신 설계
아두이노 IoT 제어 시스템과 AWS IoT 서버 그리고 사용자 앱 사이에 전달되는 데이터는 JSON 형식을 사용하였으며 전체 시스템에서 사용된 MQTT Topic은 표 1과 같다.
표 1. MQTT 세시지 토픽
Table 1. MQTT Message Topics
가. 센서 값 전송
아두이노는 매 5초마다 온도 센서 값과 LED 전등의 On/Off 상태를 다음과 같은 JSON 형식으로 Topic은 SENOR를 사용하여 AWS IoT 서버에게 전달한다. 센서값들은 서버 데이터베이스에 저장이 되고 MQTT Publish 프로토콜을 통해 동시에 안드로이드 앱으로도 전송이 된다.
{
"SENSOR" : {
"REPORTED" : {
"TEMPERATURE" : "25.20",
"LED" : "ON"
}
}
}
나. 제어 명령 전송
안드로이드 앱에서 AWS IoT 서버를 거쳐 아두이노 MQTT Client에게 전달되는 제어 명령어 형식은 다음과 같다.
{
"CONTROL" :
{
"DESIRED" :
{
"LED" : "ON", // 또는 OFF
"AIR" : "ON", // 또는 OFF
"DOOR" : "OPEN" // 또는 CLOSE
}
}
}
다. 카메라 이미지 전송
방문자가 현관에서 벨을 누르면 카메라가 이미지를 캡쳐해서 CAM Topic으로 서버에 Publishing 한다. 전송된 이미지는 서버에 저장되면서 동시에 안드로이드 앱까지 전달되어 안드로이드 화면에 방문자의 사진이 표시된다.
4. 안드로이드 앱
안드로이드 앱은 2개의 토픽 SENSOR, CAM 에 Subscriber로 등록되어 있고 CONTROL 토픽에 Publish 하도록 설계되어 있다. 안드로이드 앱은 2개의 액티비로 구성되어 있으며 각 액티비티는 그림 4와 같다.
그림 4. 안드로이드 앱의 구조
Fig. 4. Software modules in Android App
Ⅳ. 구현 및 실험
1. 스마트 홈 집 모형
그림 5는 스마트 홈이 적용된 집 모형을 보여준다. 모형 집에는 거실에 온도 센서, 에어컨 (실제로는 선풍기 형태), 거실과 침실에 LED 등, 현관에는 카메라와 도어록이 설치되어 있다.
그림 5. 스마트 홈 모형 집
Fig. 5. Smart Home Model House
2. 안드로이드 앱
그림 6은 구현된 안드로이드 앱을 실행한 화면이다. 그림 6에서 (a)는 스마트홈 앱 메인 화면이다. 이 화면에서 현관에 있는 카메라 영상을 확인하고 도어록을 열거나 닫을 수 있고 거실 LED 전등과 에어컨을 제어할 수 있다. (b)와 (c)는 에어컨과 전등의 On/Off 스케쥴 설정 화면과 설정된 내용 확인 화면이다. 설정된 내용은 AWS IoT 서버에 저장되고 서버는 스케쥴에 따라 아두이노 보드에 제어 명령어를 전달하여 IoT 기기들을 On/Off 하게 된다. (d)는 온도 센서 값들의 변화를 날자와 시간별로 확인하는 화면이다.
그림 6. 안드로이드 앱 실행 화면
Fig. 6. Android Application
그림 7은 현관의 도어락의 실험 화면이다. 방문자가 초인종을 누르면 스마트폰에 방문자가 왔다는 알림이 뜨고 알림을 누르면 스마트 홈 앱이 실행되고 화면에 방문자 얼굴이 보인다. 사용자는 화면을 통해 방문자를 확인하고 도어록을 열어주도록 버튼을 누르면 문이 열리게 된다.
그림 7. 도어락 실험 화면
Fig. 7. Door Lock Test
그림 8은 침실 에어컨 제어 실험 화면이다. 스마트폰앱에서 냉방 버튼을 On 하면 에어컨 모터가 돌아가게 된다.
그림 8. 에어컨 제어 실험 화면
Fig. 8. Aircon Test
Ⅴ. 결론
본 논문에서는 AWS IoT 와 아두이노를 이용한 스마트 홈 시스템을 구현한 구현한 사례를 소개하였다. IoT 기기와 서버 그리고 안드로이드 앱 사이의 통신은 IoT 응용 시스템에 최적화 된 MQTT 프로토콜을 이용하였다.
스마트홈이 적용된 모형 집을 이용하여 IoT 기기들이 잘 동작하고 앱을 이용하여 잘 제어가 되는 것을 검증하였다. 효율적인 IoT 시스템 관리를 위해 AWS IoT 서비스를 이용하였으며 스마트홈 사용자 앱을 통해 사용자는 편리하게 IoT 기기들의 정보를 확인할 수 있고 비대면 도어록 제어와 전등, 에어컨 조절과 같은 스마트홈 서비스를 편리하게 이용할 수 있음을 확인하였다.
본 연구에 이은 향후 연구는 다양한 센서와 IoT 기기들을 연결하여 스마트 홈에서 제어 가능한 기기들을 확장하는 것과 도어록 제어에 딥러닝 기법을 이용한 방문자 자동 인식 기능을 추가하는 것이다. 이를 위해 아두이노 대신 라즈베리파이 보드를 사용할 계획이다.
References
- C. Na, Y. Chio, S. Kim, J. Seo, K. Hwang, An Implementation of Smart Flowerpot made with 3D Printer and NodeMCU, The Journal of the Institute of Internet, Broadcasting and Communication, Vol. 17, No. 5, pp .231-237, Oct 2017 https://doi.org/10.7236/JIIBC.2017.17.5.231
- K. Hwang, H. Park, J. Kim, T. Lee, I. Jung, An Implementation of Smart Gardening using Raspberry pi and MQTT, The Journal of the Institute of Internet, Broadcasting and Communication, Vol. 18, No. 1, pp. 151-157, Feb 2018 https://doi.org/10.7236/JIIBC.2018.18.1.151
- Jong-Ho Lee, Jae-Wook Lee, Dong-Goo Seo, Eun-Kyoung Hwang. (2022). Analysis of research trends in the service sector for revitalization of Smarthome: Focusing on overseas research trends and registered academic journals. Journal of the Korea Academia-Industrial cooperation Society, 23(4), 238-251. https://doi.org/10.5762/KAIS.2022.23.4.238
- Hyung-Kyu Kang, Yung-Cheol Byun, Chul-Ung Kang. (2018). A Smart Door Lock System Using Low-Power Long-Range Wireless Technology. The Journal of Korean Institute of Information Technology, 16(2), 93-100. http://dx.doi.org/10.14801/jkiit.2018.16.2.93
- SeoHyung Kim, IoT : Internet of Things Technology, IEIE Magazine, Vol. 43, No.3, pp. 64-71, 2016
- https://aws.amazon.com/ko/iot/ (AWS IoT Service)
- https://www.arduino.cc/ (Arduino)
- https://en.wikipedia.org/wiki/Raspberry_Pi (Raspberry Pi)
- https://en.wikipedia.org/wiki/MQTT (MQTT)