52
아두이노와 라즈베리파이를 활용한 스마트 홈 권혁주 [email protected]

아두이노와라즈베리파이를활용한스마트홈 · 2016. 10. 29. · /home/pi $ mkdirtest $ ls Desktop Downloads Pictures python_games test Documents Music Public Templates

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • 아두이노와라즈베리파이를활용한스마트홈

    권혁주

    [email protected]

  • • openHAB프레임워크를이용하여별도의 APP 개발없이사용하는 Home Gateway 구축

    • MQTT를학습하고, MQTT를이용하여 Arduino를제어하는방법학습

    강의목표

  • • Section 1라즈베리파이란? ( 13:00 ~ 13:30 )• 라즈베리파이개요• 라즈베리파이비교• 라즈비안 OS 설치• 라즈베리파이개발환경구축• 실습 (1/4)

    • Section 2 라즈베리파이에 openHAB설치하기 (13:30 ~ 14:00)• OpenHAB개요• OpenHAB설치및데모확인• 실습 (2/4)

    • Section 3라즈베리파이에MQTT 설정하기 ( 14:10 ~ 15:00 )• MQTT란?• Mosquitto Broker 설정하기• 실습 (3/4)

    • Section 4 MQTT 바인딩을위한 openHAB설정 (15:00 ~ 15:30)

    • Section 5 Arduino Device 제어하기 ( 15:30 ~ 16:00 )• Hardware Feature• Arduino시작하기• LED Blink Example• 온/습도 Example• OpenHAB연동 Exampel

    목차

  • Section 1 라즈베리파이란?

    • 라즈베리파이개요

    • 라즈베리파이비교

    • 라즈비안 OS 설치

    • 라즈베리파이개발환경구축

    • 실습 (1/2)

    블로그에서글보기

  • 5

    • 라즈베리파이(RaspberryPi)는영국라즈베리파이재단이학교에서기초컴퓨터과학교육을증진시키기위해만든싱글보드컴퓨터이다.

    • 독자적인운영체제(Operating System, OS)를가지고있으며, 라즈베리파이웹사이트에서무료로다운로드받을수있는있다.

    라즈베리파이개요

  • 6

    • OS 다운로드

    • https://www.raspberrypi.org/downloads/

    -라즈비안 JESSIE LITE 다운

    라즈비안 OS 설치(1/2)

  • 7

    • Win32diskmanager 설치

    • http://sourceforge.net/projects/win32diskimager/

    • SD Card에라즈비안 OS 이미지를만듬

    라즈비안 OS 설치(2/2)

    1. 앞페이지에서다운로드받은라즈비안 OS이미지선택

    2. SD Card의드라이브선택

    3. Write 버튼선택

  • 8

    • 라즈베리파이를개발하기위한인터페이스환경

    라즈베리파이개발환경구축(1/8)

    USB to Serial을이용( 구축환경 )

    SSH를이용( 실습환경 )

    HDMI Monitor를이용

    HDMI Cable & Monitor 필요 USB to Serial Board & Serial Terminal Tool 필요

    LAN Cable & SSH Terminal Tool 필요

  • 9

    • USB to Serial 이용

    라즈베리파이개발환경구축(2/8)

    Raspberry Pi USB to Serial Board

    8번핀 RX 핀

    10번핀 TX 핀

    USB to Serial Board를라즈베리파이 TX,RX핀에연결한후, PC에서 Serial Terminal로제어

  • 10

    • Login

    라즈베리파이개발환경구축(3/8)

    Login ID : piPassword :raspberryXXX

    XXX : SD 카드에붙어있는스티커번호

    • Vim 설치

    $ sudo apt-get install vim

  • 11

    • Static IP Address 설정

    라즈베리파이개발환경구축(4/8)

    $ sudo vi /etc/network/interfaces

    iface eth0 inet staticaddress 192.168.1.xxxnetmask 255.255.255.0gateway 192.168.1.1 변경완료된 interfaces 파일내용

  • 12

    • Filesystem확장

    라즈베리파이개발환경구축(5/8)

    $ sudo raspi-config

    1번선택

    9번선택 4번선택

    • SSH Enable

  • 13

    • 라즈베리파이 Reboot

    라즈베리파이개발환경구축(6/8)

    $ sudo reboot

    192.168.1.229 입력1

    2

    • Putty를이용한 SSH 접속

  • 14

    • Test 폴더생성후, test.txt 생성

    라즈베리파이개발환경구축(7/8)

    $ pwd/home/pi$ mkdir test$ lsDesktop Downloads Pictures python_games testDocuments Music Public Templates Videos$ cd test$ pwd/home/pi/test

  • 15

    • 아래내용의 test.txt 파일만들기

    라즈베리파이개발환경구축(8/8)

    1. Hello2. This is raspberry Pi lecture.3. Good bye

    $ vi test.txt

    참고자료 : http://www.hanbit.co.kr/preview/1424/sample_chapter04.pdf

  • 16

    • 1. Putty를이용하여자신의라즈베리파이에 SSH 연결

    • 15페이지와 16페이지에있는내용을실습 ( test.txt 파일편집하기 )

    실습 ( 1/4 )

  • 17

    Section 2 라즈베리파이에 openHAB설치하기

    • openHAB개요

    • openHAB설치및데모확인

    블로그에서글보기

  • 18

    • OpenHAB이란?

    • Open Home Automation Bus

    • Kai Kreuzer가2010년부터개발한오픈소스홈자동화서버

    • OSGi(Open Service Gateway initiative) 프레임워크상에서자바로구현

    • KNX, Z-Wave, Insteaon, Arduino, Ethernet, MQTT등다양한사물인터넷기기와프로토콜을지원하여동적으로바인딩할수있도록설계

    • http://www.openhab.org/

    OpenHAB개요 (1/3)

  • 19

    • openHAB구조

    OpenHAB개요 (2/3)

    출처:https://github.com/openhab/openhab/wiki

  • 20

    • 활용예

    OpenHAB개요 (3/3)

    출처 : http://www.openhab.org/

  • 21

    • OpenHAB및 Addon을다운로드받기위한저장소등록

    • openhab.list파일 Open

    OpenHAB설치및데모확인 (1/4)

    $ sudo vi /etc/apt/sources.list.d/openhab.list

    deb http://repository-openhab.forge.cloudbees.com/release/1.6.2/apt-repo/ /

    $ sudo apt-get update$ sudo apt-get install openhab-runtime openhab-addon-binding-mqttopenhab-addon-action-mail openhab-addon-binding-bluetooth openhab-addon-binding-serial openhab-addon-binding-weather openhab-addon-persistence-rrd4j

    • openhab.list파일에아래내용기입

    • Install Open HAB and addon

  • 22

    • Download OpenHAB Demo Configuration

    • OpenHAB Demo용설정을다운로드하기위한명령

    OpenHAB설치및데모확인 (2/4)

    $ cd ~$ mkdir openHAB_Demo$ cd openHAB_Demo$ wget https://github.com/openhab/openhab/releases/download/v1.6.2/distribution-1.6.2-demo-configuration.zip

    $ unzip distribution-1.6.2-demo-configuration.zip $ sudo cp -rf addons/ /usr/share/openhab/ $ sudo cp -rf configurations/ /etc/openhab/$ sudo cp /etc/openhab/configurations/openhab_default.cfg/etc/openhab/configurations/openhab.cfg

    • Demo Configuration 적용• Distribution-1.6.2-demo-configuration.zip의압축해제

    • addons폴더를 /usr/share/openhab폴더에복사

    • configurations 폴더를 /etc/openhab폴더에복사

    • openhab_default.cfg파일을 openhab.cfg로복사

  • 23

    • OpenHAB실행

    OpenHAB설치및데모확인 (3/4)

    $ sudo /etc/init.d/openhab start

    • Demo Sitemap 접속

    • 라즈베리파이의 IP 주소확인

    $ ifconfig

  • 24

    • Demo 화면확인

    • 라즈베리파이 IP주소:8080/openhab.app?sitemap=demo

    • 192.168.1.229:8080/openhab.app?sitemap=demo

    OpenHAB설치및데모확인 (4/4)

  • 25

    • 22페이지 ~ 25페이지실습

    실습 (2/4)

  • 26

    Section 3 라즈베리파이에MQTT 설정하기

    • MQTT란?

    • Mosquitto Broker 설정하기

    블로그에서글보기

  • 27

    • 경량의 Publish/Subscribe 메시징프로토콜

    • M2M(Machine-to-machine) 혹은 IoT(Internet of things)에서의사용목적으로제작

    • 낮은전력, 낮은대역폭환경에서도사용가능

    • MQTT 특징

    • Publish / Subscribe

    • Broker에대한클라이언트로작동

    • Publisher는토픽을발행, Subscriber는토픽을구독

    • 다수의클라이언트가하나의주제를구독할수있음

    MQTT란? (1/3)

    참고자료 :http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/MQTT/Tutorial

  • 28

    • MQTT 특징

    • 토픽

    • 슬래시(/)를이용해서계층적으로구성할수있음

    • 대량의센서기기들을효율적으로관리할수있음

    • 메시지버스

    • Broker가메시지버스를만들고여기에메시지를흘려보내면, 버스에붙은어플리케이션들이메시지를읽어가는방식

    MQTT란? (2/3)

    참고자료 :http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/MQTT/Tutorial

  • 29

    • MQTT 특징

    • QoS(Quality of Service)

    • 0 : 메시지는한번만전달하며, 전달여부를확인하지않음. Fire and Forget

    • 1 : 메시지는반드시한번이상전달. 메시지의핸드셰이킹과정을엄밀하게추적하지않기때문에중복될가능성있음

    • 2 : 메시지는한번만전달. 메시지의핸드셰이킹과정을추적하므로높은품질은보장하지만성능이저하될수있음.

    • MQTT Broker

    • MQTT가 Publisher와 Subscriber가메시지를주고받을수있도록다리를놔주는역할수행

    • 브로커종류(https://github.com/mqtt/mqtt.github.io/wiki/server-support)

    • Mosquitto MQTT

    • BSD 라이선스기반의오픈소스메시지브로커

    • 본강의에서는Mosquitto Broker를사용할예정

    MQTT란? (3/3)

    참고자료 :http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/MQTT/Tutorial

  • 30

    • Repository Package Signing Key Download

    • Mosquitto Repository Package 등록

    • Mosquitto Broker 설치

    Mosquitto Broker 설정하기 (1/2)

    $ cd ~$ wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key$ sudo apt-key add mosquitto-repo.gpg.key

    $ cd /etc/apt/sources.list.d/$ sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list

    $ sudo apt-get update$ sudo apt-cache search mosquitto$ sudo apt-get install mosquitto mosquitto-clients

  • 31

    • Mosquitto실행

    • MQTT Subscribe & Publish Test

    • 2개의 Putty 실행한후, 본인의라즈베리파이에 SSH 접속

    • 한개는 Subscriber, 다른한개는 Publisher로설정

    Mosquitto Broker 설정하기 (2/2)

    $ sudo /etc/init.d/mosquitto start

    Subscriber를실행하기위한명령

    Publisher를실행하기위한명령

    Publisher가송신한메시지수신

  • 32

    • 아래정보를이용하여 Subscriber와 Publisher를만들어서실행 (페이지 29 참고)

    • Topic : mqtt/device1

    • Message : Hello world

    • MQTT를사용하여, 옆자리에있는사람의 Broker에게데이터를송신

    (Hint : mosquito_pub –h IP주소 xxxxxxxxxx )

    실습 (3/4)

  • 33

    • 소중한의견차후강의준비에많은도움이됩니다. 평가하고의견남겨주세요.

    • 강의평가링크

    강의평가

  • 34

    Section 4 MQTT 바인딩을위한 openHAB설정

  • 35

    • openhab.cfg생성

    • openhab.cfg에MQTT Broker 정의

    • 423라인과 427라인에아래구문추가 ( 라즈베리파이의 IP 주소기입 )

    MQTT Binding을위한 openHAB설정 (1/3)

    $ sudo cp /etc/openhab/configurations/openhab_default.cfg /etc/openhab/configurations/openhab.cfg

    $ sudo vi /etc/openhab/configurations/openhab.cfg

    mqtt:broker.url=tcp://192.168.1.229:1883mqtt:broker.clientId=openhab

    Mosquitto Broker에 openHAB Server 등록

  • 36

    • 사이트맵 (sitemap)

    • 아이템을표시하기위한사용자인터페이스(UI) 요소를생성하는객체

    • 사이트맵에는아래와같은요소들을포함할수있음

    MQTT Binding을위한 openHAB설정 (2/3)

    참고자료 : http://cafe.naver.com/openrt/10679

  • • openHAB에 sitemap 추가

    • openHAB에 item 추가

    MQTT Binding을위한 openHAB설정 (3/3)

    $ sudo vi /etc/openhab/configurations/sitemaps/kaizen.sitemap

    sitemap kaizen label="Main Menu"{

    Frame label="MQTT"{Switch item=mqttsw1 label="MQTT Switch 1"Switch item=mqttsw2 label="MQTT Switch 2"Switch item=mqttsw3 label="MQTT Switch 3"Text item=Office_TempText item=Office_Humidity}

    }

    $ sudo vi /etc/openhab/configurations/items/kaizen.items

    Group AllSwitch mqttsw1 "Switch 1" (all) {mqtt=">[broker:/wiznet/sw1:command:on:1],>[broker:/wiznet/sw1:command:off:0]"}Switch mqttsw2 "Switch 2" (all) {mqtt=">[broker:/wiznet/sw2:command:on:1],>[broker:/wiznet/sw2:command:off:0]"}Switch mqttsw3 "Switch 3" (all) {mqtt=">[broker:/wiznet/sw3:command:on:1],>[broker:/wiznet/sw3:command:off:0]"}

    Number Office_Temp "Temperature [%.1f °C]" (all) {mqtt="

  • 38

    Section 5 Arduino Device 제어하기

    • Hardware Feature

    • Arduino시작하기

    • LED Blink Example

    • 온/습도 Example

    • OpenHab과연동

  • 39

    Hardware Feature ( 1/2 )

  • 40

    Hardware Feature ( 2/2 )

  • 41

    Arduino시작하기 ( 1/3 )

  • 42

    Arduino시작하기 ( 2/3 )

  • 43

    Arduino시작하기 ( 3/3 )

  • 44

    Blink Example

    Arduino_Example\Example\LED_Blink\LED_Blink.ino

  • 45

    온/습도예제 ( 1/2 )

    Arduino_Example\Library\DHT-sensor-library-master 폴더

    복사

    C:\Program Files\Arduino\libraries

  • 46

    온/습도예제 ( 2/2 )

    Arduino_Example\Example\DHT_Example\DHT_Example.ino

  • 47

    openHAB과연동 ( 1/4 )

    Arduino_Example\Library\pubsubclient-2.6 폴더

    복사

    C:\Program Files\Arduino\libraries

  • 48

    openHAB과연동 ( 2/4 )

    Arduino_Example\Example\wizarduino_openhap\wizarduino_openhap.ino

    앞에서설정한MQTT Broker의 IP

    다른사람과겹치지않게MAC 변경

  • 49

    openHAB과연동 ( 3/4 )

    MQTT Broker에연결하기위한설정(IP주소, Port 번호)

    MQTT Message를수신하였을때수행되는함수등록

    /wiznet/sw토픽구독

    온/습도데이터토픽발행

  • 50

    openHAB과연동 ( 4/4 )

  • 51

    Troubleshooting

    https://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe

  • Q&A 감사합니다

    52