Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
아두이노와라즈베리파이를활용한스마트홈
권혁주
• 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