홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭 · 712...

11
홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭 711 †† ††† 비 회 원 비 회 원 비 회 원 : : : 동국대학교 전자공학과 [email protected] (Corresponding author) 동국대학교 게임멀티공학과 [email protected] 동국대학교 전기공학과 [email protected] [email protected] [email protected] [email protected] †††† 종신회원 논문접수 심사완료 : : : 동국대학교 컴퓨터공학과 교수 [email protected] 20125162012717Copyright2012 한국정보과학회ː개인 목적이나 교육 목적인 경우, 이 저작 물의 전체 또는 일부에 대한 복사본 혹은 디지털 사본의 제작을 허가합니다. 이 때, 사본은 상업적 수단으로 사용할 수 없으며 첫 페이지에 본 문구와 출처 를 반드시 명시해야 합니다. 이 외의 목적으로 복제, 배포, 출판, 전송 등 모든 유형의 사용행위를 하는 경우에 대하여는 사전에 허가를 얻고 비용을 지불해야 합니다. 정보과학회논문지: 컴퓨팅의 실제 및 레터 제18권 제10(2012.10) 2012년도 학생논문 경진대회 수상작 홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭 (Smart Multiple-Tap for Home Automation over Home Networks) 민주성 이소현 †† 송인우 ††† 김옥주 ††† (Juseong Min) (Sohyun Lee) (In-u Song) (Okju Kim) 최윤걸 ††† 정요한 ††† 안종석 †††† (Yoongul Choi) (Yohan Jung) (Jongsuk Ahn) 홈 네트워크상에서 동작하는 스마트 멀티탭은 기존 홈을 스마트 홈으로 변환 시키는 기기이다. 스마트 멀티탭은 기존 멀티탭에 Bluetooth 통신모듈을 부착하여 서버용 PCBluetooth 통신하여 원격에 서 가전기기를 제어 할 수 있는 기기이다. 참고로 PC 서버는 Wifi 망을 통해 스마트 핸드폰과 연결되어 있다. 스마트 멀티탭은 스마트 멀티탭에 꽂아진 전자기기의 전원의 ON/OFF 제어를 하고, 추가적으로 스 마트 멀티탭에서 발생할 수 있는 화재 위험을 미리 감지하여 화재에 대처할 수 있도록 설계 되었다. 스마 트 멀티탭 내부에는 전력를 제어하기 위한 릴레이(Relay) 소자와 증폭 회로, 화재 감지를 위한 온도센서, Bluetooth 통신 모듈 그리고 신호 처리를 위한 마이크로컨트롤러(Micro-controller)로 구성되었다. 제작된 스마트 멀티탭의 특징으로는 저렴한 가격으로 기존 홈에서 스마트 홈으로 변경 할 수 있는 장점을 있으며 스마트 핸드폰에서 변경된 정보는 1초 안으로 스마트 멀티탭의 전원을 관리하고, 화재에 대한 경고 메시 지를 전송할 수 있다. 키워드 : 홈 네트워크, 안전, 편리성, 통신 Abstract A smart multi-tap which is being operated on the home network is the device that improves the existing home into the smart one. Smart multi-tap with the additional Bluetooth communication module has a Bluetooth communication with PC for server, which is connected with smart phone Wi-fi. Smart multi-tap controls ON/OFF of electronic equipment power which is put in it. It is also designed to deal with fire through sensing the danger in advance. The inner parts of it consist of Relay element for controlling the power, amplifying circuit, temperature sensor for fire, Bluetooth communication module and Micro-controller for handling the signal. Smart multi-tap is a

Upload: others

Post on 26-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • 홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭 711

    ††

    †††

    비 회 원

    비 회 원

    비 회 원

    :

    :

    :

    동국대학교 전자공학과

    [email protected]

    (Corresponding author임)

    동국대학교 게임멀티공학과

    [email protected]

    동국대학교 전기공학과

    [email protected]

    [email protected]

    [email protected]

    [email protected]

    †††† 종신회원

    논문접수

    심사완료

    :

    :

    :

    동국대학교 컴퓨터공학과 교수

    [email protected]

    2012년 5월 16일

    2012년 7월 17일

    CopyrightⒸ2012 한국정보과학회ː개인 목적이나 교육 목적인 경우, 이 저작

    물의 전체 또는 일부에 대한 복사본 혹은 디지털 사본의 제작을 허가합니다.

    이 때, 사본은 상업적 수단으로 사용할 수 없으며 첫 페이지에 본 문구와 출처

    를 반드시 명시해야 합니다. 이 외의 목적으로 복제, 배포, 출판, 전송 등 모든

    유형의 사용행위를 하는 경우에 대하여는 사전에 허가를 얻고 비용을 지불해야

    합니다.

    정보과학회논문지: 컴퓨팅의 실제 및 레터 제18권 제10호(2012.10)

    ■ 2012년도 학생논문 경진대회 수상작

    홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭

    (Smart Multiple-Tap for Home Automation over

    Home Networks)

    민 주 성 † 이 소 현 †† 송 인 우 ††† 김 옥 주 †††

    (Juseong Min) (Sohyun Lee) (In-u Song) (Okju Kim)

    최 윤 걸†††

    정 요 한†††

    안 종 석††††

    (Yoongul Choi) (Yohan Jung) (Jongsuk Ahn)

    요 약 홈 네트워크상에서 동작하는 스마트 멀티탭은 기존 홈을 스마트 홈으로 변환 시키는 기기이다.

    스마트 멀티탭은 기존 멀티탭에 Bluetooth 통신모듈을 부착하여 서버용 PC와 Bluetooth 통신하여 원격에

    서 가전기기를 제어 할 수 있는 기기이다. 참고로 PC 서버는 Wifi 망을 통해 스마트 핸드폰과 연결되어

    있다. 스마트 멀티탭은 스마트 멀티탭에 꽂아진 전자기기의 전원의 ON/OFF 제어를 하고, 추가적으로 스

    마트 멀티탭에서 발생할 수 있는 화재 위험을 미리 감지하여 화재에 대처할 수 있도록 설계 되었다. 스마

    트 멀티탭 내부에는 전력를 제어하기 위한 릴레이(Relay) 소자와 증폭 회로, 화재 감지를 위한 온도센서,

    Bluetooth 통신 모듈 그리고 신호 처리를 위한 마이크로컨트롤러(Micro-controller)로 구성되었다. 제작된

    스마트 멀티탭의 특징으로는 저렴한 가격으로 기존 홈에서 스마트 홈으로 변경 할 수 있는 장점을 있으며

    스마트 핸드폰에서 변경된 정보는 1초 안으로 스마트 멀티탭의 전원을 관리하고, 화재에 대한 경고 메시

    지를 전송할 수 있다.

    키워드 : 홈 네트워크, 안전, 편리성, 통신

    Abstract A smart multi-tap which is being operated on the home network is the device that

    improves the existing home into the smart one. Smart multi-tap with the additional Bluetooth

    communication module has a Bluetooth communication with PC for server, which is connected with

    smart phone Wi-fi. Smart multi-tap controls ON/OFF of electronic equipment power which is put in

    it. It is also designed to deal with fire through sensing the danger in advance. The inner parts of it

    consist of Relay element for controlling the power, amplifying circuit, temperature sensor for fire,

    Bluetooth communication module and Micro-controller for handling the signal. Smart multi-tap is a

  • 712 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제 18 권 제 10 호(2012.10)

    good way to improve the original home into a smart one despite a low price. Additionally, the changed

    information of the smart phone can manage the power of it within 1 second and send the message

    of fire warning.

    Key words : Home Network, Safe, Convenience, Communication

    1. 서 론

    여러 해 홈 네트워크에 대한 대규모 컨퍼런스가 개최

    되고 연일 관련 이슈가 전문가들에 의해 논의되고 있으

    나 홈 네트워크에 대한 일반 소비자의 인식은 그에 미

    치지 못한다. 홈 네트워크 아파트나 사이버 아파트가 미

    디어에 등장한 지도 꽤 시간이 흘렀음에도 불구하고 고

    급 아파트의 프리미엄을 덧붙이는 서비스라거나 이상적

    인 이미지로 남아있을 뿐 현실에서의 홈 네트워크는 그

    실체를 쉽게 떠올리기가 쉽지 않다는 문제점이 있다[1].

    시스템 아파트 거주자들의 홈 디지털 서비스 사용빈

    도는 가전제어의 경우 80%이상의 사람들이 거의 사용

    하지 않는다고 조사되었고 가스 수도 전기 등의 원격제

    어부분의 경우에는 85% 이상의 사람들이 미래의 홈 네

    트워크 필요성에 대해서 긍정적인 입장인 것으로 조사

    되었다[2].

    일반 주택은 프리미엄 아파트와 달리 단순하게 전열

    기구, 전등, 가스 등을 대중들이 손쉽게 제어하는 홈 인

    프라가 필요하다. 또한 홈 네트워크를 구축하는 비용이

    저렴하고, 간단한 설비와 간편한 조작방식이 요구됨에

    따라 스마트 멀티탭은 사용자에 요구에 부합하는 제어

    방식을 택하였다.

    2010년 소방방재청 통계결과에 따르면 종목별 화재

    발화 요인에 1순위가 부주의 2순위가 전기적 요인으로

    조사되었다. 그 중 전기적 요인의 주요 원인은 합선과

    과전류에 의한 발화가 대부분을 차지하였다[3]. 과전류

    에 대한 화재를 방지하기 위하여 스마트 멀티탭 내부에

    온도센서를 부착하여 화재에 대비하였다.

    조사에 따르면 국내 대기전력의 연간 소모량은

    206kWh로 이는 대상가구의 소비전력의 10.6%에 해당

    한다[4]. 특정 시간대에 사용하지 않는 가전기기의 대기

    전력을 차단을 위해 스마트 핸드폰의 어플리케이션에

    추가적으로 타이머 기능을 추가하여 대기전력 차단을

    감소시켰다.

    스마트 멀티탭의 구성은 스마트 핸드폰과 서버 PC

    그리고 스마트 멀티탭으로 구성 되어있다. 스마트 멀티

    탭의 하드웨어는 송수신부, 중앙처리부, 제어부 안전장

    치부로 나눠져 있다.

    스마트 멀티탭의 소형화를 하기위하여 마이크로컨트

    롤러가 사용되었으며 회로의 안정화를 위하여 증폭용

    소자(L298N)가 사용되었다. 화재예방을 위한 온도센서

    (LM35DZ)가 사용되었고 온도센서의 출력을 ADC(Analog

    to digital converter)를 이용하여 수식적으로 온도를 계

    산하였다.

    2. 본 론

    2.1 스마트 멀티탭의 구성

    개발한 스마트 멀티탭의 구성품은 스마트 멀티탭과

    스마트 멀티탭에서 보낸 데이터를 받아주는 PC와 스마

    트 핸드폰으로 구성된다. 개발한 스마트 멀티탭은 그림 1

    과 같이 스마트 핸드폰과 PC사이의 통신 방법인 Wi-fi

    (Wi-fi Alliance)와 PC와 스마트 멀티탭 간의 Bluetooth

    통신으로 구성되어 있다. 여기서 스마트 핸드폰으로부터

    전송된 Wi-fi신호를 PC에서 스마트 멀티탭이 인식할

    수 있는 Bluetooth 신호로 변경하여 스마트 멀티탭에

    전송하는 역할을 한다.

    그림 1 스마트 핸드폰과 스마트 멀티탭의 통신 단계

    2.2 스마트 멀티탭의 하드웨어 구조

    스마트 멀티탭의 내부는 그림 2와 같이 ①송수신부,

    ②중앙처리부, ③제어부, ④안전 장치부로 총 4가지 부분

    으로 구분된다.

    2.2.1 송수신부

    송수신부란 스마트 멀티탭과 서버 역할을 하는 PC

    사이에 데이터 전송과 전송된 데이터를 MCU(Micro-

    controller Unit)에 보내주는 역할을 한다.

    스마트 핸드폰에서 PC로 전송된 신호를 Bluetooth

    통신 기법으로 변환하여 스마트 멀티탭의 송수신부에서

    수신하도록 하는 역할을 하고 있다. 또한 측정된 온도

  • 홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭 713

    그림 2 스마트 멀티탭의 하드웨어 구성

    값을 스마트 멀티탭의 송수신부를 통해 PC로 전송하는

    역할을 담당하고 있다.

    Processor와 Bluetooth 모듈은 Rx와 Tx핀을 이용한

    UART통신을 바탕으로 하고 있으며, Boud rate는 115200bps

    사용하고 있다.

    2.2.2 중앙처리부

    중앙 처리부는 그림 3이 보여주는 알고리즘을 수행한

    다. 안전부에 해당하는 온도센서로부터 나온 값으로 온

    도계산과 Bluetooth 통신으로부터 들어온 데이터를 처

    리하며, 릴레이를 제어를 통해 신호에 따라 스마트 멀티

    탭의 전력을 차단하거나 통과시키는 역할을 한다.

    제어부에는 마이크로컨트롤러가 사용되었으며 참고로

    마이크로컨트롤러란 칩 위의 컴퓨터를 말한다. PC에 쓰

    이는 일반 목적의 마이크로프로세서와는 다르게 높은

    집적, 낮은 전력 소비, 비용 절감, 자동 처리를 강조하는

    마이크로프로세서의 일종이다. 일반 목적의 마이크로프

    로세서의 일반 산술, 논리 요소뿐 아니라 데이터 저장을

    위한 읽기 쓰기 메모리, 코드 저장을 위한 플래시와 같

    은 읽기 전용 메모리, 계속적인 데이터 저장을 위한

    EEPROM, 주변 기기, 입출력 인터페이스 등의 부가 요

    소를 통합한다. 낮은 소비전력을 통한 대기전력의 감소

    와 저렴한 가격을 통한 개발비용을 줄이는 목적으로 마

    이크로컨트롤러가 사용하였다.

    사용된 마이크로컨트롤러는 myMCU-AVR128로 ATMEL

    그림 3 중앙처리부의 흐름도

    표 1 데이터에 따른 스마트 멀티탭의 ON/OFF

    콘센트 번호

    Socket number

    데이터

    Data

    스마트 멀티탭 상태

    State of Smart multiple-tap

    10 OFF

    1 ON

    22 OFF

    3 ON

    34 OFF

    5 ON

    46 OFF

    7 ON

    1, 2, 3, 4 8 OFF

    사의 마이크로 컨트롤러인 ATmega128을 테스트 할 수

    있는 소형 모듈형태의 보드이다.

    블루투스 모듈로부터 MCU에 전송된 데이터 중 0~7

    까지의 숫자는 스마트 멀티탭의 고유의 콘센트를 제어

    하며, 숫자 8은 모든 콘센트를 OFF시키도록 설계되었

    다. 각 숫자에 따른 스마트 멀티탭의 상태의 변화는 표 1

    과 같다.

    안전부로부터 받은 온도센서 값은 20차 Average

    filter를 통하여 노이즈를 제거하였다.

    2.2.3 제어부

    제어부는 릴레이를 사용하여 220V를 제어한다. 콘센

    트의 전원을 ON 또는 OFF하여 가전기기의 전력을 공

    급 또는 차단 실제적인 역할을 하는 부분이다.

    제어부에는 증폭용 소자인 L298N이 사용되었고,

    220V제어용 5V릴레이 소자인 HR90이 사용되었다.

    릴레이란 계전기로 정해진 전기량이나 물리량에 반응

    하여 전기회로를 제어하는 전기기기이다. 동작하는 방식

    에 따라 전자기계형과 디지털형, 2가지 종류로 분류가

    가능하다. 이번에 사용하게 된 것은 그 중 첫 번째인 전

    자기계형 계전기(Electromechanical Relay)인데 이것은

    계전기 내부 가동부인 코일에 전류가 흘러 생긴 자력에

    의해 발생한 힘으로 접점을 개폐하는 방식을 사용한다.

    디지털형의 경우 전자기계형보다 수십배의 가격차이

    가 남에 따라 스마트 멀티탭은 전자기계형으로 제작되

    었다.

    증폭소자는 중앙처리부에서 발생하는 신호의 High

    Voltage값이 3.3V로 계전기를 작동시키는데 많은 오차를

    발생시키므로 5V로 전압을 증폭하는 역할을 하고 있다.

    그림 4에서 보여지는 회로는 ①릴레이 회로, ②증폭회

    로, ③MCU 회로로 구성된다. ①릴레이 회로는 220V를

    제어하기 위하여 총 4개의 릴레이를 220V와 병렬로 연

    결하였다. ②증폭회로는 MCU에서 들어오는 3.3V를 릴

    레이에 5V로 전달해 주는 역할을 하며 4개의 MCU에

    서 들어오는 4개의 Input과 릴레이에 전달해주는 4개의

  • 714 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제 18 권 제 10 호(2012.10)

    그림 4 중앙처리부와 제어부 회로도

    Ouput을 확인할 수 있다. ③MCU회로는 MCU의 PORTA

    를 사용하며 PINA.0, PINA.1, PINA.2, PINA.3을 사용

    한다. 콘센트의 전원을 관리하기 위해 ON일 경우는

    MCU PIN으로부터 3.3V가 출력되고, OFF일 경우 0V

    가 출력된다.

    2.2.4 안전부

    안전부는 멀티탭의 도선에 과전류가 흘렀을 경우 도

    선의 온도가 올라간다는 것에 착안하여 온도를 계속적

    으로 측정하여 MCU로 온도에 대한 데이터를 보내주는

    역할을 한다.

    안전부는 온도센서(LM-35DZ)가 사용되었으며 온도

    측정 범위는 -55~150도이다. 온도센서의 Output은

    Analog 값인 Voltage 값으로 MCU의 ADC(Analog to

    digital convertor)를 통하여 Digital 값으로 바꿔 주었

    다. ADC의 Resolution은 10bit로 설정하였으며, 0~3.3V

    까지 1024개의 Digital 값을 가지고 있다. 이는 3.22mV

    의 Resolution을 가지고 있음을 말한다. 전압에 따른 온

    도의 변화율은 0.2V/1ºC이므로 온도의 측정범위가 소수

    점 자리까지 측정 가능하다는 것을 알 수 있다.

    안전부의 온도센서로부터 측정된 ADC값의 온도로서

    의 환산공식은 식 (1)과 같다.

    현재온도=(3.3/1024)*10*온도센서의ADC값 (1)

    2.3 스마트 멀티탭 서버의 소프트웨어 구조

    2.3.1 스마트 멀티탭 서버 개발 환경

    스마트 멀티탭과 스마트 핸드폰과 통신의 중계자 역

    할을 하는 통신 서버는 자바환경에서 개발되었다.

    Java Communications(COMM) API의 경우 Java 2

    플랫폼의 옵션 패키지에서 제공하는 API를 사용하였으

    며, 이는 컴퓨터 주변기기와 직렬, 병렬 포트를 이용 쌍

    방향 통신할 수 있는 기능을 제공한다. 멀티탭과 컴퓨터

    표 2 서버 개발환경

    운영체제 Windows XP

    프로그래밍 툴Eclips Indigo

    JAVA EE

    Software

    development kitJAVA JDK 1.6

    Library

    JAVA java communications

    API Library

    JAVA APNS Library

    간의 Bluetooth pairing이 된 상태에서 JAVA java

    communicaions API Library를 이용하여 serial port를

    개방하고 컴퓨터와 멀티탭 간의 통신이 가능하도록 하

    였다. 서버의 개발환경은 표 2와 같다.

    스마트 멀티탭 서버의 입력에 대한 신호의 흐름은 그

    림 5와 같다. 스마트 멀티탭과 블루투스 통신을 위해 소

    캣을 열고, 스마트 멀티탭과 블루투스를 페어링 시킨다.

    또한 스마트 핸드폰과 연결되었는지 확인을 하며, 스마

    트 핸드폰으로부터 전송된 데이터를 블루투스를 통하여

    스마트 멀티탭에 전송하며, 스마트 멀티탭으로부터 전송

    그림 5 스마트 멀티탭 서버 흐름도

  • 홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭 715

    된 온도값을 스마트 핸드폰에 전송해주며, 프로그램을

    종료할 때까지 지속된다.

    2.3.2 컴퓨터-휴대기기간 통신

    PC와 휴대기기의 통신에서 휴대용 통신기기로 사용

    한 것은 아이폰이다. 아이폰과 PC를 iOS에서 사용되어

    지는 CFSocket이용하여 통신이 가능하도록 하였다. 아

    이폰 어플리케이션의 개발환경은 iOS4.1에서 제작되었

    으며, 컴파일러는 Xcode4.3이 사용되었다.

    2.3.3 다자간 통신

    가정의 여러 대의 스마트 멀티기기의 사용의 경우에

    대비하여 다자간 통신을 할 수 있도록 어플리케이션을

    제작하였다.

    타기기와 communication은 Apple APNS Server를

    이용하여 통신할 수 있다. 개발된 스마트 핸드폰은 사용

    자 PC 뿐만 아니라 Apple APNS Server와 통신을 하

    게 된다. 변경된 Apple APNS Server의 Data는 타기

    기의 스마트 핸드폰에 Push를 주어 변경된 정보를 알리

    는 방법이다. 스마트 핸드폰의 통신은 그림 6과 같다.

    그림 6 다자 간 통신방법

    2.3.4 서버 코드에 사용된 클래스

    1) PRCServerClass

    서버 컨트롤러.서버의 모든작업을 통제한다.

    2) APNSClass

    서버에서 발생하는 특정 이벤트를 유저에게 알리기

    위해서 클라이언트로 데이터를 전송한다. JAVA APNS

    Library를 사용하여 애플 서버에 데이터를 보낸 후, 애

    플 서버에서 유저 클라이언트에 푸쉬를 보내어 유저가

    특정이벤트에 대한 정보를 알 수 있도록 설정하는 클래

    스이다.

    3) AlramDataClass

    클라이언트에서 알람을 설정할 경우 서버데이터에 보

    내어 저장을 하고 스레드로 스케쥴러를 만들어 알람을

    감지하여 특정이벤트를 실행하는 클래스이다.

    4) ButtonStateClass

    클라이언트내에서 버튼이 현재 ON/OFF상태인지를

    서버가 판단하기 위해서 그에 해당하는 데이터를 저장

    하는 클래스이다.

    5) ServerThreadClass

    서버로 들어오는 다중 데이터의 처리를 하기 위해서

    새로운 프로세스를 만들어내는 클래스.

    해당 클래스가 존재하지 않으면 서버는 한가지 일처

    리를 끝내기 전까지는 아무것도 할 수 없게 된다.

    2.3.5 서버 코드에 사용된 함수

    1) startSocket

    서버실행 시 메인함수에서 처음으로 부르는 함수이다.

    포트를 열어 멀티탭과 블루투스로 연결을 하고, 소켓을

    열어 클라이언트와 연결을 한다.

    소켓과 연결하여 데이터를 받으면 ServerThread

    Class로 스레드를 생성하여 일을 처리한다.

    boolean socketState = true

    try {

    boolean d_strTimerState = true

    Timer d_strTimer = new Timer();

    while (socketState) {

    //bluetooth conneting to device

    try{

    System.out.println("BT conneting");

    ports=(1)CommPortIdentifier

    .getPortIdentifier("COM5");

    port=(2)(SerialPort)ports.

    open( "RS232C", 1000 );

    (3)port.setSerialPortParams( 115200,

    SerialPort.DATABITS_8,

    SerialPort.STOPBITS_1, SerialPort

    .PARITY_NONE );

    port.setFlowControlMode(Serial

    Port.FLOWCONTROL_NONE );

    out = port.getOutputStream();

    }

    catch( Exception e ) {

    System.out.println( "Error:" +

    e.getMessage() );

    }

    socket = (3)serverSocket.accept();

    is = socket.getInputStream();

    reader = new InputStreamReader(is);

    os = socket.getOutputStream();

    writer = new OutputStreamWriter(os);

    bw = new BufferedWriter(writer);

    }

    }

    (1) CommPortIdentifier

    .getPortIdentifier

  • 716 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제 18 권 제 10 호(2012.10)

    PC내에 있는 포트를 가져오는 함수이다. 이 함수는

    JAVA java communications API Library 내에 존재

    한다. 자신이 사용하고 있는 포트를 getPortIdentifier

    를 통하여 가져온 후 사용하면 된다.

    (2) (SerialPort)ports.open

    현재 자신이 사용하고자 하는 포트를 연다.

    (3) port.setSerialPortParams

    시리얼포트의 파라미터를 설정하며, Baudrate는 자신

    이 사용하는 블루투스 기기와 같은 값을 넣어줘야 한다.

    데이터 비트는 8비트이며, 스탑비트는 1비트이고, 패리

    티는 없다.

    Sirialport 내부에 들어가면 설정 enum을 확인할 수

    있다.

    (4) serverSocket.accept

    멀티탭과 서버를 블루투스로 연결후 서버를 클라이언

    트와 연결하기 위해서 대기 하는 장소이다. 클라이언트

    에서 어떠한 정보도 넘어오지 않는다면, 이후의 프로그

    램은 실행되지 않는다. 데이터가 넘어오게 되면 다음으

    로 넘어가고 데이터를 읽어 들인다.

    1) furntionSelect()

    클라이언트에서 데이터가 넘어와 서버에서 데이터를

    읽어드리면, 스레드가 생성되고 스레드 내부에서 실행되

    는 함수이다. 읽어드린 데이터가 어떤 것이냐에 따라서

    서버에서 할일을 지정해 주는 함수이다. 코드는 다음과

    같다.

    for (int i = 0; i < 30; i++) {

    char ch = (1)(char) _reader.read();

    str += ch

    }

    If(str == "switchOnOff"){

    //스위치 ON/OFF 실행

    //멀티탭에 데이터를 전송하여 ON /OFF 하고

    (2)Out.write(스위치번호);

    Out.flush();

    //등록기기가 2개 이상일 경우 푸쉬를 보내어

    //등록기기간 의사소통을 할 수 있도록 구현

    }

    Else if(str == "alram"){

    // 알람 데이터 저장 및 카운트 실행

    }

    (1) _reader.read()

    클라이언트에서 받은 데이터를 1비트씩 char형태로

    읽어 스트링타입의 변수로 변환한다.

    스트링의 값이 스위치 ON/OFF이냐 알람이냐에 따라

    서 다른 기능을 실행한다.

    (2) Out.write

    OutputStream 타입의 out은 서버에서 멀티탭에 데이

    터를 전송하기 위해 열어놓은 포트의 outstream이다.

    데이터를 전송 후 out을 항상 초기화 해준다.

    2) alarmTimerCount()

    furntionSelect 에서 읽어낸 string이 alarm 일경우

    새로운 스레드를 생성하고 스레드 안에서 TimerTask를

    생성하여 시간을 카운트 한다.

    설정된 시간과 현재시간이 일치하면 멀티탭에 데이터

    를 전송하여 스위치를 ON/OFF하고, 기기가 2개 이상

    등록되어있을 경우 다른 기기에 푸쉬하여 스위치 ON

    /OFF의 정보를 제공한다. 사용된 소스코드는 다음과 같다.

    //Timer Task Run함수

    Public void run(){

    Cal = new GregorianCalendar();

    For(int i = 0 ; i < dataCount ; i++){

    If(data[i].hour == cal.get(calendar

    .HOUR) && data[i].min ==

    cal.get(calendar.MINUTE)){

    //알람 작동

    (1)Writer.write(스위치번호);

    Writer.flush();

    Out.write(스위치번호);

    Out.flush();

    }

    }

    }

    (1) Writer.write

    OutputStreamWriter 타입으로써 서버가 클라이언트

    에게 데이터를 전송할 때 쓰인다.

    사용방법은 out과 같다.

    3) APNSStart(String deviceId)

    서버에서 이벤트 발생 시 클라이언트에 데이터를 전

    송하기 위해서 쓰이는 함수이다.

    멀티탭의 온도가 기준치 이상이거나, 등록된 기기가 2

    대 이상일 경우 다른 클라이언트가 멀티탭을 조작할 것

    을 알 수 있도록 정보를 제공한다. 서버가 직접 전송하

    지 않고 APNS서버를 이용하는 이유는 서버와 클라이

    언트가 항시 연결된 상태로 있을 수는 없기 때문이다.

    첫번째, 스마트폰에서 네트워크로 계속 연결되어있다

    면 배터리의 소모가 크다.

    두번째, 내부에서 스레드가 돌아가고 있기 때문에 스

    마트폰 내에서 다른 어플리케이션을 실행할 때 느려진다.

    세번째, 그렇기 때문에 어플리케이션을 실행시키지 않

    거나, 끄고 있을 경우에도 푸쉬서버를 이용하여 정보를

    받을 수 있도록 설계하였다.

    이 기능을 사용하기 위해서 Apple Development 계

  • 홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭 717

    정에서 APNS 허용 인증서를 새로 다운받아서 클라이

    언트와 서버에 설치하여야 한다.

    try {

    iPhoneId = deviceId;

    PayLoad aPayload = new PayLoad();

    PushNotificationManager pushManager =

    (1)PushNotificationManager.getInstance();

    (2)pushManager.addDevice("iPhone", iPhoneId);

    Device client = pushManager.

    getDevice("iPhone");

    (3)pushManager.initializeConnection

    (HOST, PORT, certificate, passwd,

    SSLConnectionHelper

    .KEYSTORE_TYPE_PKCS12);

    pushManager.sendNotification(client,

    aPayload);

    pushManager.stopConnection();

    pushManager.removeDevice("iPhone");

    } catch (Exception e) {

    e.printStackTrace();

    }

    (1) PushNotificationManager.getInstance();

    APNS Library에 내재되어있는 함수로써 푸쉬에 필

    요한 인스턴스를 받아온다.

    (2) pushManager.addDevice

    푸쉬를 보낼 기기를 pushManger에 등록하는 과정이

    다. 스마트폰은 기기마다 고유한 UDID가 있기 때문에

    이것으로 판별하여 특정기기에 푸쉬를 줄 수 있다.

    (3) pushManager.initializeConnection

    HOST = "geteway.sandboxpush.apple.com"

    고유한 apple server의 도메인이다. PORT = 2195

    Certificate = 위에서 언급한 특별한 인증서이며, 이것

    은 서버내에 저장되어있어야 한다.

    Password = 인증서 발급시 유저가입력을 해야 한다.

    2.4 스마트 멀티탭 어플리케이션의 소프트웨어

    그림 7은 스마트 핸드폰으로 전송 또는 수신하는 신

    호의 흐름을 보여준다.

    서버와 통신을 위해 IP주소, 포트번호, 시리얼 넘버가

    일치하는지 확인 후에 신호의 송수신이 이루어지게 된다.

    그림 8은 어플리케이션 실행시 처음 나오는 메인화면

    이다. 우측 상단에 존재 하는 ‘편집’ 버튼으로 플러그의

    이름을 변경 할 수 있다. 플러그 이름의 우측에 있는 스

    위치를 이용하여, 멀티탭의 사용여부를 선택 할 수 있

    그림 7 스마트 멀티탭의 어플리케이션 흐름도

    그림 8 어플리케이션

    다. 온도는 현재 멀티탭의 온도이며, 온도가 기준치 이

    상올라 갔을 경우 사용자가 위험을 감지할 수 있어야

  • 718 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제 18 권 제 10 호(2012.10)

    하기 때문에 실시간 업데이트를 통하여 유저에게 정보

    를 제공한다.

    이 화면은 FirstViewController 클래스에 의해 통제

    된다.

    2.4.2 화재 경보 시스템

    과전류에 의한 화재는 도선의 열로서 발생된다. 이에

    착안하여 스마트 멀티탭의 도선에 온도센서를 부가적으

    로 설치하여 실시간으로 도선의 온도를 체크하고 화재

    가 발생할 수 있는 조건에 대한 온도에 가까워지게 되

    면 즉각적으로 멀티탭의 모든 전원을 차단하고 사용자

    의 스마트 핸드폰에 경고음과 경고 메시지를 전달한다.

    어플리케이션 데이터는 Plist로 관리하게 되며, CFSocket

    API는 C를 기반으로 하고 있기 때문에 Objective - c

    와 호환이 되지 않는다. 이것을 Singleton Object로 넘

    겨 호환하였다.

    2.4.3 타이머 기능

    그림 9는 타이머 기능은 가전기기의 불 가동 시간에

    타이머를 설정하여 전원을 끄고 필요한 시간에 전원을

    켜므로서 대기전력 차단에 주안점을 두고 설계되었다.

    필요한 대기전력을 타이머 기능을 사용하여 스마트

    멀티탭의 각 구에 대한 타이머를 설정하고 전기기기의

    전원을 ON/OFF 할 수 있도록 개발하였다. 좌측 상단

    에 존재하는 ‘삭제’버튼으로 알람을 삭제할 수 있으며,

    우측 상단에 존재하는 ‘+’버튼을 사용하여 알람을 추가

    할 수 있다. 해당시간에 해당하는 이벤트는 우측에 존재

    하는 스위치 버튼으로 설정할 수 있다. ‘+’ 버튼 클릭시

    AlramClass로 통제권을 넘긴다.

    이 화면은 SecondViewController 클래스에 의해 통

    제된다.

    그림 10은 유저가 특정시간에 원하는 시간에 스마트

    멀티탭을 동작시키기 위해 알람을 설정하는 그림이다.

    TimePicker로 시간을 설정 할 수 있도록 구현하였고,

    그림 9 스마트 멀티탭 타이머 기능

    그림 10 타이머 기능 설정

    FirstViewController에서 자신이 등록한 플러그 이름을

    보고, 특정시간에 멀티탭의 ON/OFF를 설정하도록 설

    계하였다.

    이 화면은 Alarm 클래스 의해 통제된다.

    2.4.4 보안 기능

    개발된 스마트 멀티탭 또한 제 3자가 조작이 가능하

    다면 재산 및 생명의 피해가 발생할 가능성이 매우 크

    다. 이에 관련한 것이 보안 기능이며 그 기능은 그림 11

    과 같이 3가지로 구분된다.

    1) IP주소 : PC와 통신하기 위한 고유 주소이다.

    2) 포트번호 : PC와 스마트 핸드폰과의 통신을 위한

    소켓이다.

    3) 시리얼 넘버 : PC와 스마트 핸드폰과 통신이 가능

    하도록 하는 일종의 비밀 번호이다.

    서버의 IP주소와 포트번호를 등록하여 소켓통신을 할

    수 있도록 환경을 설정한다. 시리얼 넘버를 두어 서버에

    저장되어있는 시리얼 넘버와 일치 하지 않을 경우 어플

    리케이션이 작동되지 않도록 구현하였다.

    시리얼 넘버를 구현한 이유는, 특정 멀티탭을 특정 어

    플리케이션에서만 실행되도록 하기 위해서이다.

    그림 11 스마트 멀티탭 보안 기능

  • 홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭 719

    시리얼 넘버를 구현함으로써 타인이 나의 멀티탭을

    제어할 수 있는 문제점을 방지하였다.

    2.4.5 어플리케이션 사용된 함수

    1) (void) socketInit()

    클라이언트는 서버와 통신하기 위해서 소켓을 이용한

    다. 그 소켓을 초기화 해주는 함수로써 소켓의 타입을

    정의하여 생성하고, 아이피와 호스트를 받아와 서버와

    통신할 수 있게 준비해 주는 함수이다.

    socket = (1)CFSocketCreate(kCFAllocatorDefault,

    PF_INET, SOCK_STREAM, 0,

    kCFSocketReadCallBack

    | kCFSocketDataCallBack

    | kCFSocketConnectCallBack

    | kCFSocketWriteCallBack,

    CFSockCallBack, NULL);

    struct (2)sockaddr_in theName;

    int hostNumber = [DataManager

    defaultDataManage].portNumber;

    theName.sin_port = htons(hostNumber);

    theName.sin_family = AF_INET;

    theName.sin_addr.s_addr = inet_addr([self

    ipconvert]);

    address = (3)CFDataCreate(NULL, (const uint8_t*)

    &theName,

    sizeof(struct

    sockaddr_in));

    (1) CFSocketCreate

    첫번째 인자는 메모리 할당에 관련되어 있다. 여기서

    는 기본 메모리 할당자를 사용한다.

    두번째 인자인 PF_INET은 사용될 프로토콜을 나타

    낸다. 인터넷 프로토콜을 참조하는 소켓 라이브러리에

    정의된 상수이다.

    세번째 인자인 SOCK_STREAM은 소켓 라이브러리

    에 정의된 상수이다. 많이 사용하는 스트림 소켓과 데이

    터 그램 소켓이 있는데, SOCK_STREAM은 스트림 소

    켓을 사용하기 위한 상수이다.

    네번째 인자는 소켓이 사용할 전송 프로토콜을 다룬

    다. 0을 설정할 경우 세번째 인자가 SOCK_STREAM 이

    라면 IPROTO_TCP을, SOCK_DGRAM이라면 IPROTO_

    UDP로 자동설정 된다.

    다섯번째 소켓 이벤트 콜백을 지정한다.

    여섯번째 인자는 소켓이 연결을 수락했을 때 호출되

    는 콜백 함수의 포인터다.

    일곱번째 인자로 컨텍스트를 포함하는 특별한 구조체

    로 사용자가 정의한 소켓용데이터의 포인터를 캡슐화

    할 수 있다.

    Socket의 데이터타입은 CFSocketRef이다.

    (2) sockaddr_in

    sockaddr_in 구조체는 소켓이 접속해 있는 로컬 또는

    원격지 주소를 표현하는데 사용된다.

    sockaddr_in 구조체의 길이는 sockaddr 구조체의 길

    이와 동일하다. 그러나 sockaddr_in 구조체의 데이터

    부분에 있는 필드들은 프로그램에 의한 관리가 가능할

    정도로 명확하게 선언되어 있다.

    일반적으로 프로그램은 변수를 sockaddr_in구조체로

    서 선언한 다음에 함수 호출 시 변수에 대한 포인터를

    sockaddr_in구조체로 캐스팅해서 넘기는 방법을 주로

    사용하였다.

    .sin_port 네트워크 바이트 오더로 이루어진 포트번호.

    .sin_family 주소 패밀리(반드시 AF_INET이여야 한다.)

    .sin_addr 네트워크 바이트 오더로 이루어진 아이피

    번호

    (3) CFDataCreate

    sockaddr_in를 이용해서 접속에 사용될 CFData 레퍼

    런스를 만든다. Address의 데이터 타입은 CFDataRef

    이다.

    2) (const char *)ipConvert

    클라이언트 상에서 아이피 주소를 유저가 직접 입력

    함에 있어서, 입력된 문자열을 CFSocket에게 전해주기

    위해서 변환해주는 함수이다.

    3) (const char *)ipConvert

    socketInit()에서 만들어진 소켓으로 서버와 연결해주

    는 함수이다. 사용된 코드는 다음과 같다.

    CFSocketError value = (1)CFSocketConnect

    ToAddress(socket, address, 60);

    if (value == 0) {NSLog(@"success");

    (2)CFSocketSendData(socket,

    NULL,address,strlen(message));

    CFRunLoopSourceRef FrameRunLoopSource =

    (3)CFSocketCreateRunLoop

    Source(NULL, socket , 0);

    CFRunLoopAddSource(CFRunLoopGetCurrent(),

    FrameRunLoopSource,

    kCFRunLoopCommonModes);

    }

    else{

    [stateBar setText:@"Server Error"];

    }

    (1) CFSocketConnectToAddress

  • 720 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제 18 권 제 10 호(2012.10)

    socketInit()에서 만들어진 소켓과 유저가 입력한 아

    이피 주소를 CFSocketConnectToAddress() 함수에 넣

    어 서버와 연결을 시도한다. 서버가 응답하지 않을 경우

    응답 할 때까지 60초까지 기다린다. 서버가 응답을 하였

    을 경우 CFSocketConnectToAddress은 0을 리턴한다.

    서버가 응답하지 않으면 60초 후 0 이외의 숫자를 리턴

    한다.

    (2) CFSocketSendData

    socketInit()에서 생성되어진 소켓을 통하여 서버에

    접근을 하고 메세지를 보내는 함수.

    (3) CFSocketCreateRunLoopSource,

    런루프에 소켓을 등록하는 과정이다. 소켓이 연결시도

    를 위해 특정포트를 폴링하다 연결을 받으면 콜백함수

    를 호출한다. 콜백 함수는 소켓이 런 루프에 등록되면

    원격장치에서 연결 될 때마다, 소켓을 생성할 때 명시했

    던 콜백 함수가 호출 된다.

    4) insertDataInServer: (const char *)_message

    클라이언트 내에서 이벤트 발생 시 이벤트에 따른 메

    세지를 저장하게 되고 그것을 서버에 보낸다.

    서버는 메세지를 받고 이에 합당한 이벤트를 발생시

    킨다.

    서버에 데이터를 전송하는 과정은 serverConnect 함

    수 내의 CFSocketSendData과 같으므로 생략한다.

    5) DataUpdate

    클라이언트와 서버가 연결이 되면 서버는 클라이언트

    에게 일정한 간격으로 온도데이터를 보낸다. 그 데이터

    가 들어올 때마다, 클라이언트의 온도는 업데이트 되며,

    온도가 기준치 이상일 경우 이 함수내에서 멀티탭 전원

    을 모두 차단하는 명령을 서버에 보내며, 스마트폰에서

    얼렛뷰를 띄워 유저에게 위험을 알려준다.

    데이터 업데이트는 개발자의 용도에 따라 임의로 제

    작을 하는 것이기 때문에 생략한다.

    6) CFDataGetBytePtr

    서버에서 넘어온 데이터를 const unsigned char 타

    입의 데이터로 변환해 주는 함수이다.

    그 이후 NSString Format을 이용하여 데이터를

    UTF8String으로 변환하여 주고 그것을 Singlton object

    에 넣어서 이벤트를 진행한다.

    Singlton object가 아닌 전역멤버변수, 지역변수 등에는

    데이터가 들어가지 않는다. 사용된 코드는 다음과 같다.

    enum CFSocketCallBackType {

    kCFSocketNoCallBack=0,

    kCFSocketReadCallBack=1,

    kCFSocketAcceptCallBack=2,

    kCFSocketDataCallBack=3,

    kCFSocketConnectCallBack=4,

    kCFSocketWriteCallBack=8

    };

    if(callbackType == kCFSocketDataCallBack) {

    CFDataRef temp =

    (CFDataRef) data;

    const unsigned char *pData =

    (1)CFDataGetBytePtr(temp);

    NSString *str;

    str = [NSString string

    WithCString:(const char

    *)pData

    encoding:NSUTF

    8StringEncoding];

    [DataManager defaultData

    Manage].getTempData = str;

    NSLog(@"%@",[DataManager

    defaultDataManage]

    .getTempData);

    }

    else{

    [[DataManagerdefault

    DataManage].stateBar

    setText:[DataManager default

    DataManage].getTempData];

    [[DataManagerdefaultData

    Manage]

    warningSound:[DataManager

    defaultDataManage]

    .getTempData];

    }

    if(callbackType == kCFSocketReadCallBack) {}

    if(callbackType == kCFSocketWriteCallBack) {}

    if(callbackType == kCFSocketConnectCallBack) {}

    3. 결 론

    본 논문에서는 일반 가정의 멀티탭을 이용하여 저렴

    한 가격으로 기본적인 홈 네트워크를 구축하고 수동적

    인 전원의 ON/OFF가 아닌 스마트 핸드폰으로 멀티탭

    을 제어할 수 있도록 한 시스템을 제안하였다.

    제안한 시스템은 스마트 멀티탭의 Bluetooth와 서버

    PC, 스마트 핸드폰과의 통신을 통해 정보를 공유하고

    멀티탭을 제어하는 시스템이다.

    스마트 멀티탭은 스마트 핸드폰에서 변경된 정보를 1

    초 안으로 스마트 멀티탭에 전달하여 멀티탭 전원을 관

  • 홈 네트워크상의 홈 오토메이션을 위한 스마트 멀티탭 721

    리하고, 화재에 대한 경고 메시지를 전송한다는 것을 확

    인하였다. 또한 한 개의 스마트 멀티탭에 접속할 수 있

    는 스마트 핸드폰의 개수를 다수를 하여 사용자의 편이

    에 주안점을 두고 설계하였다.

    스마트 멀티탭의 제안사항으로는 한정적인 OS, 다중

    멀티탭 접속, 서버 PC이다. OS는 iOS로 개발되었기 때

    문에 Android OS에는 적용이 불가하다. 또한 스마트

    핸드폰 1개에서 여러 대의 멀티탭을 접속 및 제어 할

    수 없으며, 서버 PC 없이 스마트 핸드폰으로 스마트 멀

    티탭의 접속이 불가하다.

    위 제안사항이 해결된다면 일반가정에 저렴한 가격으

    로 홈 네트워크를 구축할 수 있으며, 화재 예방 및 대기

    전력 차단에 효과적으로 기여할 것이라고 판단한다.

    추후 연구과제로 Wifi 통신이 아닌 3G로 통신하여

    서버PC없이 바로 스마트 멀티탭과 통신할 수 있는 시

    스템을 설계하고자 한다.

    참 고 문 헌

    [ 1 ] Y.J. Lee, "Home Network Market Activation

    Barriers and Major Conflicts," Journal of KISDI

    :Industry Trends Data, vol.18, no.5, pp.21, Mar.

    2006. (In Korean)

    [ 2 ] Y.S. Do, S.A. Lee, "Apartment Mome Network

    System Technology and Analysis of Industry

    Trends," Lotte engineering & construction techno-

    logy report, no.50, pp.105, Jun. 2005. (In Korean)

    [ 3 ] Fire Investigation Team, "The Number of Fire

    Factors in 2010," NEMA, Feb. 2011. (In Korea)

    [ 4 ] N.K. Kim, K.S. Seo, S.C. Kim, E.D. Kim, "Survey

    on the Residential Standby Power Consumption in

    Korea," KISTI, vol.53A no.8, p.475, Oct. 2004. (In

    Korea)

    민 주 성

    2012년 동국대학교 전자공학과 졸업. 2012

    년~현재 LIG넥스원 전자전연구센터 연

    구원. 관심분야는 Real Time System,

    Electronic Warfare

    이 소 현

    2012년 동국대학교 게임멀티공학과 졸업

    2012년~현재 Wish link 프로그래밍 개

    발자. 관심분야는 Data Mining, Know-

    ledge-Discovery in Databasese

    송 인 우

    2006년~현재 동국대학교 전기공학과 재학

    관심분야는 Energy Storage System

    김 옥 주

    2006년~현재 동국대학교 전기공학과 재학

    관심분야는 Motor Drive

    최 윤 걸

    2005년~현재 동국대학교 전기공학과 재학

    관심분야는 Energy Storage System

    정 요 한

    2012년 동국대학교 전기공학과 졸업. 2012

    년~현재 STX 건설 해외플랜트 연구원

    관심분야는 Processor Control

    안 종 석

    1989년 캘리포니아 대학 컴퓨터공학 박

    사 졸업. 1983년~1995년 SAMSUNG

    Elec. Senior research assistance. 2003

    년 KISS Receive a Gaheon science

    prize. 1996년~현재 동국대학교 컴퓨터

    공학과 교수. 관심분야는 MAC-Protocol

    (802.11, 802.15, 802.16) Performance Evaluation, Perfor-

    mance Evaluation of Collocated Heterogeneous Computer

    Networks, Computer Network Simulation Technique