Internet of Thing 모든것을바꾸고있는인터넷의진화
목차 1. IoT( 사물인터넷 ) 개요 2. IoT 기반기술 3. IoT 그리고웨어러블디바이스 4. Smart IoT 설계시스템 5. Gateway ( 라즈베리파이 ) 실습 6. APM (Apache, MySql, PHP, phpmyadmin) 설치 7. Smart IoT 설계시스템스마트농장실습
IoT( 사물인터넷 ) 개요
IoT( 사물인터넷 ) 란? 사물인터넷이란주위의사물하나하나가인터넷과연결된다는의미 사물인터넷 (IoT, Internet of Things) 에대하여글로벌표준기구 (ITU, 3GPP, IEEE, ETSI) 들은다양하게정의 IoT 를기기및사물에통신모듈이탑재되어, 유무선네트워크로연결됨으로써사람과사물간, 사물과사물간에정보교환및상호소통할수있는지능적환경 으로해석 (ITU) 발전된 IT 를기반으로세상의모든사물을인터넷으로연결해사람과사물, 사물과사물간정보를교환하고상호소통하는인프라 사물인터넷시대의도래 [2012] 50 Billion Things connected [2020] From IBM *ITU(International Telecommunication Union, 국제전기통신연합 ) 4
IoT 성장전망 5
IT 플랫폼의구성요소와진화과정 http://www.venturesquare.net/557887 6
인터넷관점에서의패러다임변화 n From Internet of People to Internet of Things Internet of people Internet of things * EDI (Electronic Data Interchange) 7
디바이스관점에서의패러다임변화 8
소프트웨어관점에서의패러다임변화 9
제조산업관점에서의패러다임변화 제조 + 소프트웨어융합을통한 S/W 융합산업확대 User Interface Innovation 소프트웨어융합산업중심사람과 Interaction을위한 UI를 Network상 S/W로대체 제품가격이낮아짐 : 스마트폰등이기존 UI 장치대체 UI가사용자에따라다양하게제공가능 ( 사용자중심제품 ) 네트워크기반원격제어가가능 결제등의서비스가간편해짐 APPs(Network UI) 제조산업중심사용자와 Interaction을위하여 UI 장치필수 제품가격고가 : Display 장치, Button 장치등 UI 수정을위하여새로운모델개발필요 Remote 제어불가 Internet of Things Service Innovation S/W 산업 제조산업 S/W 산업 제조산업 S/W 산업 S/W 융합산업 S/W 융합산업 S/W 융합산업 10
성공한 IoT 1 HiPass 2000 년 6 월 30 일하이패스시범실시시행. 성남, 청계, 판교등 3 개요금소상, 하행선각 1 개차로씩총 6 개차로 2007 년전국개통 - 차량탑재설비 : 하이패스단말기 (OBU) 와전자카드로써하이패스차로설비와통신을통해요금정산이이루어짐 - 차로설비 : 차종분류장치및차량감지장치와무선통신장치, 위반차량촬영장치, 차단기시스템설비및운전자표시기, 안내전광판, 신호등으로나뉨. 이들장비들과인터페이스를통해요금수납업무를주관하는통합차로제어기로구성 - 영업소설비 : 위반촬영주제어기및운영 PC 와금액충전 PC, 차단기리모콘및인터폰, 영업소주전산기로구성, 하이패스단말기 (OBU) 와통신된데이터들은영업소서버를거쳐한국도로공사자가망을통하여본사주전산기로기록 11
성공한 IoT 2 주차관리시스템 카드전용및영상인식주차장최초도입 ( 대구팔달신시장 ). 2007. 8.14 *http://www.ijungang.com/_news/news.php?cat=3&uid=18353&mode=view 12
성공한 IoT 3 셀카봉 셀카드론진화 최초발명자는일본인우에다히로시와미마유지. 이는 1984 년일본에서실용신안으로공개됐고 1985 년엔미국에서특허로등록, 존속기간 20 년을넘어서그권리가이미사라진상태로 ( 첨단 ) 기술의개발과시장의태동은동행하지않을수있다는것을보여주는대표적인사례 *http://www.hankyung.com/news/app/newsview.php?aid=2014122259027 Nixie( 닉시 ) 웨어러블드론카메라 13
ITC IoT Wearable Cloud Big data 동일선상 ICT 는 Information and Communication Technology 의약자로 1980 년대부터사용되어왔으나 1997 년에데니스스티븐슨이영국정부의보고서에사용하면서부터유명해지기시작 사물인터넷의정의를보면 1. 자신을구별할수있는유일한아이디를가져야하고, 2. 인터넷을통한통신능력을가져야하고, 3. 데이터를처리하는능력을가져야하고, 4. 외부환경으로부터데이터취득을위해센서를내장가능. 클라우드컴퓨팅의정의는개인이가진단말기를통해서는주로입 / 출력작업만이루어지고, 정보분석및처리, 저장, 관리, 유통등의작업은클라우드라고불리는제 3 의공간에서이루어지는컴퓨팅시스템형 개인의몸에기기를부착하여개인의무수히많은정보, 즉빅데이터를사물인터넷을통해수집하게되는데이를이용한부가가치가무한대라는것이다. 바로 ' 돈 ' 벌수있는아이템 빅데이터 (Big Data) 란기존방식으로저장, 관리, 분석하기어려울정도로 ' 큰 ' 규모의자료. 빅데이터를분석하여효율적인알고리즘을개발하는기술의필요성이사물인터넷과웨어러블기기, 페이스북, 트위터등소셜어플과프로그램들의등장에따라함께발전. 14
IoT 기반기술
의미있는 IoT 16
IoT 의기반기술개요 17
센서의기술동향 Sensor 라틴어로지각, 느낌등의미. 인간의 5 감기능 ( 시각 청각 후각 미각 촉각 ) 을센스 (SENSE) 라함. 리드 SW. 패턴을인식하는시스템레벨의센서. 최근에는인텔리전트센서로 CPU 내장형. 복잡다양성을띠고있다. 센서란주변의물리화학생물학적정보를감지하여전기적신호로변환하는모든장치 (Device) 를의미한다. 이전에는센싱 (Sensing) 할수없었던새로운영역에대한센서연구 제조공정, 작동원리등의혁신 ( 예 : 3D 프린팅등의기술을활용한 Flexible 형태센서 ) 전력소비향상을통한가용성확대 ( 예 : 운동, 열에너지의변환을통한자가발전센서 ) 기존센싱가능영역에대한센싱의정확도와정밀도를향상시키는연구및개발 ( 예 : 미세동작감지센서 ) 18
Trillon 센서시대 Janusz Bryzek 교수는향후 10 년이내에지구상에사용되는센서의개수가 1 조개를넘게될것이라고예상. ( 2013 년 10 월스탠포드대학 Trillion Sensors Summit ) 한국센서연구조합에따르면현재기술적으로구현가능한센서의종류는약 350 여가지 19
Today s Wireless Landscape 20
네트워크통신기술 21
IoT HW Platform
오픈소스하드웨어 (OSHW) Platform 오픈하드웨어플랫폼 은제품의지능역할을하는오픈하드웨어의핵심이며, 대표적으로아두이노, 라즈베리파이, 비글본블랙이있음 마이크로컨트롤러보드, 소형단일보드컴퓨터등으로불리며, 센서등입력장치, 외부장치컨트롤기능, 무선통신모듈과손쉽게연결, 개당 30~40불에누구나구매가능 성능개선과활용도의증가로최근 2~3년간판매량급증추세 아두이노와라즈베리파이각각출시이후누적 100만대이상의판매실적기록 전통적인칩벤더인인텔역시오픈하드웨어움직임에동참하기위해아두이노와손잡고 IoT와웨어러블을겨냥한 갈릴레오보드 출시 ( 13.10월) 23
BLE Beacon Application 24
IoT 디바이스가갖추어야할요소 앞에서설명하지않은보안과사용자인터페이스가추가되어야한다. 25
IoT 사용자경험 / 인터페이스변화 단말응용프로그램정보전달형서비스 단말고정형 단말내장 단일단말용 단말제조사중심 선 UI 구성 1 세대 UI 원격기기제어서비스 N- 스크린서비스단일모델인터페이스 다종원격형 이용시원격제공 제한적다종단말지원 단말제조사중심 선 UI 구성 2 세대 UI 상황인지기반융합서비스맞춤형 N- 스크린서비스 UI/UX 콘텐츠유통 적응 반응형 자율인지원격제공 다종단말동시지원 서비스제공자중심 실시간 UI 구성 관리성의혁신적재설계 3 세대 UI
IoT & Wearable 디바이스생태계 수직적생태계 수평적생태계 소품종대량생산패쇄형생태계 다품종소량 ( 대량 ) 생산개방형생태계 넘기힘든진입장벽시장 누구나쉽게진입하고창의적협력시장 27
IoT 발전방향 28
ICT 패러다임변화 IoT 그리고웨어러블디바이스
사람들이원하는것 AnyTime AnyWhere AnyDevice Convenience Connectivity Exciting Usability Personalization Functionality Fashion 30
서비스가사용자를찾아간다 Service Service Service Service Service Service Service Service 31
전통적인공장 / 산업의변화 32
플랜트에서모듈화로 원자력발전소플랜트 모듈화된산업장비 33
사물인터넷이대세 사람, 사물, 공간, 데이터등모든것이인터넷으로서로연결되어, 정보가생성 수집 공유 활용되는초연결인터넷 34
표준화기구들의 IoT 정의 ETRI: 사물인터넷표준화동향 2014.6 35
사물인터넷표준현황 ETRI: 사물인터넷표준화동향 2014.6 36
IoT 기술적특성 37
IoT Trend View 38
기업 IoT 서비스플랫폼동향 39
IoT Reference Model 40
What Wearable Device? 웨어러블디바이스는 신체에부착하여컴퓨팅을할수있는모든것 을지칭하며, 일부컴퓨팅기능을수행할수있는애플리케이션까지포함 (Mit 미디어랩 ) Convergence Divergence 융합기능통합복잡화고가격여러기능 탈융합기능빼기단순화저가격핵심기능 41
사람들의관심 in Wearable 42
IoT-Wearable 제품고려사항 구매시점경험습관 필요한것귀찮음중독 43
Usability Moff band 손목에팔찌를차듯착용하면손목을움직임을해석하고행동에따라사운드를재생 Everything you do Everything you hold Change into toys 44
Functionality Recon Jet (Head-up Display) 45
Functionality SubPac is a tactile audio device that quietly and directly transfers low frequencies to your body, allowing you to FEEL MUSIC. Tactile bass system : subpac 46
Fashion Ring Clock 47
Fashion Fin Smart Ring 손가락동작을인식하여반응하는신개념스마트링 48
User Interface Adaptive Responsive 49
동일한사용자경험? 디바이스종류 / 성능 50
원격제어 51
환경에맞춘서비스 거실사무실지하철 환경 가용디바이스 조도온도날씨 52
문화 / 지역 / 언어 문화 / 지역 / 언어 53
생체신호인식 취득 Bio Signal 표현 / 추천 Facial Feature 감성 Speech Feature Text Feature Behavior Feature 54
사용자성향인식 사용자성향 주도형사교형안정형신중형 인지 패턴 디바이스사용패턴검색패턴시간 / 공간별패턴생활패턴 55
신체적특성 ABCDEF ABCDEF ABCDEF ABCDEF 청각 시각 신체적특성 정신 후각 / 미각 / 촉각 56
Responsive UI Service Architecture Services 상황인지 N-Screen 서비스 사용환경기반관광서비스 서비스연동원격제어인터페이스 사회약자고려멀티디바이스서비스 실시간 Multi-I/O 구성추천서비스 Service System Internet Server Home Server Control Point Client Service client Remote Controller Framework Contents Authoring Tool Content Manager Real-time Organizer Control Message Handler State Manager Emotion User Cognition Environment Service Device Multi-modal Context Bio Signal Facial Feature Speech Feature Text Feature SNS Feature Behavior Feature Device Feature Etc. Feature Multi-Modal Context Inference Engine 57
IoT Keyword 노출 Services, Devices 데이터자산화 User, Environment, Public,Statistics 건강한생태계 User-Centric, Open, Eco-System Member-Centric 지속성 Experience 재활용 Service Components, Upgradable Devices 협업 Among Service Components, Among Devices 58
Smart_IoT 설계시스템 Smart_IoT 설계시스템 스마트홈시스템
Smart IoT 통합시스템 60
통합설계 System 구성 61
Smat_IoT 설계프로젝트 설계프로젝트 카메라 센서 액츄에이터 Software IoT 스마트농장관리시스템 5종 4종 Firmware/Web/Android IoT 무인경비시스템 4종 5종 Firmware/Web/Android IoT 화재감시시스템 4종 5종 Firmware/Web/Android IoT 반려동물도우미 2종 2종 Firmware/Web/Android IoT 인터넷제어 Toy 3종 3종 Firmware/Web/Android IoT 스마트홈 ( 별도 ) 6종 6종 Firmware/Web/Android 농장, 사무실, 빌딩, 하우스등에서실시간으로영상정보와센서수집데이터를스마트폰으로전송 아이디어를현실화할수있는쉽고재미있는개발환경 프로그래밍과하드웨어에대한경험이부족한사용자도쉽게배우고응용할수있는개발환경을제공 응용예제는 Gateway( 라즈베리파이 ) S/W, 센서 S/W, 엑추에이터 S/W, 스마트폰응용 SW 등으로구성 Gateway는다양한센서 ( 온도, 습도, 조도, 움직임, 소리, 불꽃, 연기, 가스, 토양온 / 습도, 카메라등 ) 와연동 다양한액츄에이터 (Relay, LED, Buzzer, Sound, 경광등, Piezo Siren, Pump, Motor 등 ) 를제어 스마트폰앱을통해영상과센서데이터에따른다양한시나리오를구현 다양한응용제품설계꼭필요한 Firmware, Web program, 스마트폰 (Android 용 ) 소프트웨어예제를제공 62
Smart IoT 설계시스템주요기술 I 구성품 기술 게이트웨이 (Raspberry Pi) 라즈베리파이는영국비영리조직 ' 라즈베리파이재단 ' 에서학습용으로만든초소형컴퓨터로전산 (Computing) 을가르치는학교의학습도구로개발되었습니다. 센서소프트웨어와액츄에이터소프트웨어를실행하며인터넷연결기능을수행합니다. Embeded H/W 및 Linux 기반의 Firmware 실습을할수있습니다. 카메라영상정보를실시간으로사용자에게전송하는장치로 Gateway에연결되어현장의상황을볼수있으며, 영상저장, 정지화면저장등의기능을수행합니다. 움직임을감지하는센서로서의기능을수행하는센서로도활용가능한기술을직접구현할수있습니다. 센싱모든사물에부착되어사용되는센서기술은사물인터넷에서중요한분야입니다. IoT 사물통신설계 / 실습시스템은다양한센서 ( 온도, 습도, 조도, 움직임, 소리, 불꽃, 연기, 가스, 진동 ) 를제공하여사용자가원하는정보를수집하여응용할수있도록합니다. 실습시스템의센서소프트웨어가제공되어각센서의특징에따라 I2C통신, ADC Analog, GPIO등을통한데이터수집 / 분석기능을이해할수있습니다. 63
Smart IoT 설계시스템주요기술 II 구성품 기술 액츄에이터 다양한액츄에이터 (Relay, LED, Buzzer, Sound, 경광등, Piezo Siren, Water Pump, Motor 등 ) 는 Gateway 와유선으로연동하여원격지스마트폰의제어신호에따라적절한 Action 을수행하는것으로모터제어, LED 제어등다양한 Actuator 운용실습을할수있습니다. USN RF Communication Raspberry Pi Gateway 와 Sensor board 간에무선통신을위한 2.4GHz 기반의 IEEE802.15.4 통신연결을제공하며, IEEE802.15.4 기반센서네트워크를이해하고제어하는기능을실습할수있습니다. ( 옵션사항 ) Bluetooth 4.0 BLE Communication Raspberry Pi Gateway 와 Sensor board 간에무선통신을위한 2.4GHz 기반의 Bluetooth 4.0 B LE 통신연결을제공하며, 저전력기반블루투스통신을통해센서데이터의무선송수신기능을경험할수있습니다. ( 옵션사항 ) Web 프로그래밍 여러브라우저에서직접 IoT 환경을구현하는 S/W 기술로데이터베이스, 사용자인터페이스, 서버구축등을쉽게구현할수있는방법을제공합니다. Smartphone Application 안드로이드기반의스마트폰앱을통해원격지의상황을실시간으로수집및제어하는기능을수행합니다. 사용자는안드로이드프로그래밍을통해다양한모바일기기에응용할수있습니다. 64
Smart IoT 소프트웨어 I 구분기능블럭기능 구동 Software OS Compiler 센서프로그램 Actuator 프로그램 RASPBIAN - Debian Wheezy. Release date:2014-09-09 Android Jelly Bean 4.3 GCC Compiler 리눅스커널기반 C, C++, Python, Java C, C++, Python, Java Gateway CPU Board ARM/Linux 기반싱글보드컴퓨터로센서어댑터, 액츄에이터어댑터와연동하고인터넷에연결되어 Gateway 역할을수행. 센서로부터수집한정보를저장하고원격지의사용자에게전송하거나제어신호에따라해당액츄에이터를 On/Off 기능 Camera Module Gateway 에 CSI 인터페이스및커넥터로연결되는카메라모듈로주요기능은설치장소의환경과액츄에이터가동작하는상황을사진이나동영상으로촬영하여사용자에게제공 65
Smart IoT 소프트웨어 II 구분 기능 SD Card Gateway 의부팅과 Linux 기반의운영체제가저장된저장장치이며 Gateway 의실행 application Software 탑재 센서 S/W 센서에서다양한데이터를수집하고, 분석하는소프트웨어 액츄에이터 S/W 센서입력정보및사용자의요구에따라모터, 팬, 펌프와같은동작장치를제어하는소프트웨어 Web Software Ethernet 을통해웹에접속할수있습니다. 웹서버와데이터베이스를이용하여 Gateway 가수집한센서데이터를웹브라우저에서조회하고, 현장환경을영상을통해확인하고설치된시설을직접제어 Smart Phone Application Android 기반으로하는 Mobile Application Software 를통하여사용자는스마트폰을이용하여 Gateway 의센서에서수집된데이터및영상정보를수신하여적절한액츄에이터를구동제어. 사용자는스마트폰을통해이미지나동영상 Play 기능, Gateway 에저장된이벤트와 log 기록확인가능 66
Smart IoT Application( 안드로이드 ) 스마트농장관리시스템무인경비시스템화재경보시스템 스마트홈시스템반려동물도우미인터넷제어토이 67
Smart IoT 하드웨어 I 구분제품규격 Gateway (Raspberry Pi B+) Raspberry Pi Model B+ Broadcom BCM2835 SoC 700 MHz ARM1176JZF-S CPU 5M Pixel Camera Module Omnivision 5647 Camera Module Video : Supports 1080p @ 30fps, 720p @ 60fps Micro SD Card Gateway 의부팅과 Linux 기반의운영체제가저장된저장장치이며 Gateway 의실행 application Sof tware 탑재. Class 10 68
Smart IoT 하드웨어 II 구분제품규격 센서 (Sensor) Raspberry Standard GPIO Headers(40pin) 연동 온. 습도센서, 광센서, 초음파센서, 인체감지센서, 근접센서, 불꽃센서, 가스센서 작동전압 : DC 3.3V, DC5V 액츄에이터 (Actuator) Raspberry Pi 와독립적으로연동 (40pin) Character LCD, Fan, LED Bar, DC Motor, Servo M otor, Water Pump, Piezo Siren, 경광등 LED 작동전압 : DC 5V, DC12V 전원어댑터 DC 5V 전원어댑터 DC 12V 전원어댑터 소모품 센서연결케이블, 저항, LED(Red, Blue, Green, 버튼스위치, 1 핀점퍼, 3pin cable, 4pin cable 69
Input/Output 어댑터보드사양 I IO Adapter 보드의입출력사양 항목 사양 구분 인터페이스 40pin GPIO( 라즈베리파이 ) GPIO 커넥터 전원공급 DC 3.3V, DC 5V GPIO 커넥터 8채널 AD 컨버터 MCP3208, SPI 인터페이스 입력 DC 3.3V Analog 센서커넥터 4포트 입력 DC 5V Analog 센서커넥터 4포트 입력 DC 3.3V 디지털센서커넥터 4포트 입력 DC 5V 디지털센서커넥터 4포트 입력 DC 12V 전원출력커넥터 4포트 출력 DC 5V 전원출력커넥터 4포트 출력 DC 3.3V UART 커넥터 1포트 출력 DC 5V UART 커넥터 1포트 출력 I2C 통신포트 1포트 출력 GPIO 출력 9 pin Header 출력 70
Input/Output 어댑터보드사양 II 71
Smart IoT 시스템센서 I 여러가지센서의기능과외관 센서설명 Image 온. 습도센서 온도센서와습도센서를하나로합친센서로온도계산식과습도계산식이있기도함. 사운드센서 주변의소리를감지하여아날로그신호나디지털신호로출력하는센서. 광센서 ( 조도센서 ) 빛자체또는빛에포함되는정보를전기신호로변환하여검지하는소자. 센서특징은비접촉, 비파괴, 고속도, 주변에잡음의영향을주지않고할수있음. 인체감지센서 인간의몸이나동물에서나오는적외선은약 10 μm 의파장을갖고있다. 이파장을감지하였을때센서가반응을할수있게되는소자 72
Smart IoT 시스템센서 II 초음파센서 초음파센서는일정한간격으로높은주파수펄스를통하여짧게소리를발사합니다. 이러한것들은소리의속도를통하여공기중에전파되며개체에충돌하여에코신호로반사되어오는것을감지하는센서 근접센서 대략 10~80cm 거리를측정할수있는데, 전원을넣어주면거리에따라출력전압이변화하는센서. 불꽃센서 약 1m 내외의거리에서불꽃의파장 ( 주파수 ) 7 60nm ~ 1100nm 대역을감지하는센서 가스센서 내부에포함된히터와센서로맘모니아, 생활가스, 오염가스등을검출해낼수있는모듈이다. 내부에포함된히터가적정온도로올라가서안정적인결과를얻기위해서는대기시간 (burn-in time) 이필요 73
Smart IoT 시스템액츄에이터 I 종류규격이미지 Brushless DC FAN 정격전압 : DC 5V Fan Speed : 2.4m/s 30 x 30 x 10mm 팬속도 : 7000-14000 RPM LED Bar LED 3EA, DC 12V with 4pcs Rated voltage : 12V DC Motor Rated current : 70mA No load speed : 8700rpm 서보종류 : 브러쉬리스디지털서보동작전압 : 4.8V,4.8V/6.0V,6V 토크 (Kg.cm) : 10Kg Servo Motor 스피드 : 중속 크기 (g) : 50g 기어재질 : 프라스틱 특징 : 듀얼볼베어링, 브러쉬리스 회전각 : 180 도 74
Smart IoT 시스템액츄에이터 II 종류규격이미지 정격전압 : 12V Water Pump 최대압력 : >40PSI 유량 : >500mL/min 102dB Piezo Siren Piezo Siren Operates on 6-14 VDC 150mA Current at 12V Buzzer Tone rated at 2,000-4,500Hz RGB 3-chip luminosity Chip LED 경광등 LED 5.7 x 5.0 x 1.8 mm (L x W x H) Wide Viewing angle Long operating life (70,000 hours) 75
스마트농장관리시스템 76
스마트농장관리시스템소프트웨어구성 TCP/IP 서버실행 Internet 안드로이드앱 온도센서데이터수집 워터펌프제어 센서데이터조회 습도센서데이터수집 조도센서데이터수집 Gateway System 팬제어 DC 모터제어 액츄에이터제어카메라영상확인 카메라영상 RGB Led 제어 이벤트수신 Database 조회 / 저장 웹서버실행 Internet 이벤트 DB 기후 DB 농장기후 DB 사진 DB 77
무인경비시스템 카메라 이벤트 Database 센서자료 Database 사진 Database Gateway(R-Pi) Internet 스마트폰 Web 초음파센서 IO Adapter 부저 ( 경보음 ) 인체감지센서 LED Bar 소리센서 DC Motor RGB LED( 경광등 ) 78
화재감시시스템 카메라 이벤트 Database 센서자료 Database 사진 Database Gateway(R-Pi) Internet 스마트폰 Web 불꽃센서 IO Adapter 워터펌프 온도센서 부저 ( 경보음 ) 가스센서 DC Motor 경광등 79
인터넷제어토이 카메라 구동 Database 사진 Database Gateway(R-Pi) Internet 스마트폰 Web 인체감지 IO Adapter 서보모터 IR 근접센서 LED Bar 초음파센서 DC Motor 소리센서 RGB LED 80
애완동물도우미 카메라 이벤트 Database 사진 Database 센서정보 Database Gateway(R-Pi) Internet 스마트폰 Web 인체감지센서 IO Adapter 서보모터 소리센서 조명 Led RGB Led DC Motor 81
스마트홈시스템 82
스마트홈시스템구성 83
스마트홈시스템 Gateway 소프트웨어 * 데이터흐름중심으로표현한 DFD(Data Flow Diagram) 84
Gateway ( 라즈베리파이 ) 실습 85
구성도 86
사양 제품사양 (Model B+) Product Name Raspberry Pi Model B+ Chip Broadcom Core architecture CPU GPU Memory Operating System Dimensions Power Ethernet Video Output Audio Output USB GPIO Connector Camera Connector Display Connector Memory Card Slot BCM2835 SoC ARM11 700 MHz Low Power ARM1176JZFS Applications Processor Dual Core VideoCore IV Multimedia Co-Processor Provides Open GL ES 2.0, hardware -accelerated OpenVG, and 1080p30 H.264 high-profile decode Capable of 1Gpixel/s, 1. 5Gtexel/s or 24GFLOPs with texture filtering and DMA infrastructure 512MB SDRAM Boots from Micro SD card, running a version of the Linux operating system 85 x 56 x 17mm Micro USB socket 5V, 2A 10/100 BaseT Ethernet socket HDMI (rev 1.3 & 1.4) Composite RCA (PAL and NTSC) 3.5mm jack, HDMI 4 x USB 2.0 Connector 40-pin 2.54 mm (100 mil) expansion header: 2x20 strip Providing 27 GPIO pins as well as +3.3 V, +5 V and GND supply lines 15-pin MIPI Camera Serial Interface (CSI-2) Display Serial Interface (DSI) 15 way flat flex cable connector with two data lanes and a clock lane SDIO 87
개발환경과개발여행 1. 운영체제 (OS) : Rasbian Debian Wheezy 리눅스환경 2015-01-31 릴리즈 2. Window 환경에서개발하기편리함 Putty, SAMBA 설치 3. RASBMC( 멀티미디어 ), SNAPPY UBUNTU CORE, RISC OS 등환경다양 4. 이클립스 ( 안드로이드앱개발환경 ) 에서개발가능 5. 센서 / 액츄에이터제어, firmware 개발 6. 서버설치 Apache, PHP, MySQL, FTP Web 프로그래밍 7. 지원언어 : C, C++, JAVA, Python, Java Script, Node.js 모든개발환경가능 8. 안드로이드 App 라즈베리파이연동프로그램개발 9. 다양한쉴드지원으로 IoT 개념이해 Ethernet, Wi-Fi, Bluetooth, BLE 88
라즈비안 wheezy 다운로드 라즈베리공식홈페이지에서라즈비안을다운받습니다. http://www.raspberrypi.org/downloads 89
win32diskimager 다운로드 win32diskimager 를다운받습니다. http://sourceforge.net/projects/win32diskimager/ 90
SD 카드에쓰기 win32diskimager 를실행해서 SD 카드에다운받은라즈비안을담습니다. 라즈비안 img 파일을선택해주고현재 SD 카드가연결되어있는드라이브를확인해준후에 write 버튼을눌러 SD 카드에라즈비안운영체제를넣어줍니다. 소요시간은 5 분내외입니다. 원래용량이얼마였건간에 56MB 로줄어듭니다. 이것은나중에설정으로변경이가능하니신경을안써도됩니다. 백업은반대로저장될폴더이름과이미지파일이름을입력하고 Read 클릭하면저장됨. 91
UART 부팅과접속 (HDMI 지원모니터가없을경우 ) HDMI 지원모니터가없을경우 UART(RS232) 를이용하여로그인및접속하여라즈베리파이의아이피주소를획득한후테스트한다. 1. 구글에서 cp2104 검색 2. CP2104 Mini Evaluation Kit Silicon Labs 으로이동 3. Software Downloads 4. CP210x VCP Drivers Drivers for Windows and Mac and Linux 5. Download for Windows XP/Server 2003/Vista/7/8/8.1 (v6.7) 다운로드후설치 92
UART 부팅과접속 6. usb to UART 보드연결 7. 제어판 장치관리자에서 COM 포트확인 8. 부팅후로그인 Raspberrypi login : pi Password : raspberry 9. $ifconfig 명령어로아이피주소적어둔다. 라즈베리파이 IP 주소 : 93
부팅 SD 카드를연결한후 micro USB 를연결하여전원을넣어주면켜지면서자동으로설치가되기시작합니다. 노트북환경에서는보이지않습니다. 94
라즈베리파이환경설정 $sudo raspi-config -> 환경설정명령 1 Expand Filesystem 가장중요한설정입니다. 라즈비안을 SD 카드에담을때자동으로용량이작게설정이됩니다. 라즈비안을설치한후에는반드시이항목을선택해줌으로써나머지공간도사용할수있도록해주어야합니다. 2 Change User Password 라즈비안은리눅스운영체제인데기본으로최고관리자계정인 root 와일반계정인 pi 가존재합니다. 그중 pi 의초기암호는 raspberry 입니다. 3 Enable Boot to Desktop/Scratch * Console Text console, requiring login (default) Console 로로그인하면서 Login 을요청하는 Option 입니다. 우리는 putty 로접속하여사용할것이기때문에이항목을선택하시면됩니다. * Desktop Log in as user 'pi' at the graphical desktop pi 계정으로로그인되면서 GUI 환경으로접속하게됩니다. * Scratch Start the Scratch programming environment upon boot scratch 라는 programming 환경으로부팅하는항목인데무시하셔도됩니다. 95
라즈베리파이환경설정 4 Internationalisation Options * Change Locale - Set up language and regional settings to match your location 이옵션은언어를맞추는옵션인데라즈비안에서한글을사용하기위해선택해주는옵션입니다. 항목중 en_gb.utf-8 UTF-8, en_us.utf-8 UTF-8, ko_kr.utf-8 UTF-8 세개를선택해주시면됩니다. 선택은스페이스바로선택할수있고세개모두선택한후 tab 키로이동하여 ok 를눌러주시면됩니다. * Change Timezon - Set up timezone to match your location Asia 를선택하고 tab 키를눌러이동하여 ok 를눌러줍니다. Seoul 을선택하고 tab 키를눌러이동하여 ok 를눌러줍니다. * Change Keyboard Layout - Set the keyboard layout to match your keyboard 특별한키보드가아니라면딱히설정해줄필요는없습니다. 5 Enable Camera 카메라를사용할것인지정하는옵션인데 Enable 하고리부팅하면설정됩니다. 6 Add to Rastrack 닉네임과이메일을입력하면라즈베리파이의분포도에자신의라즈베리파이가포함이됩니다. 아래의사이트에서등록된라즈베리파이의분포도를볼수있습니다. 96
라즈베리파이환경설정 7 Overclock 오버클럭을하는옵션인데큰성능향상은없기때문에무시하셔도됩니다. 8 Advanced Options A1 Overscan - You may need to configure overscan if black bars are present on display 구형의디스플레이를사용할경우이옵션을사용하여설정해줄수있지만무시합니다. A2 Hostname - Set the visible name for this Pi on a network 네트워크상에서보여지는명칭을변경하는옵션입니다. 기본적으로 raspberrypi 로정해져있는데다른이름을임의로정해줍니다. A3 Memory Split - Change the amount of memory made available to the GPU GPU 에할당하는메모리를 16/32/64/128/256mb 단위로정해주는것인데원격으로 CUI 기반으로작업할것이기때문에 16 으로정해줍니다. 97
라즈베리파이환경설정 A4 SSH - Enable/Disable remote command line access to your Pi using SSH SSH 를사용할것인지묻는여부인데 SSH 를선택해주어야원격으로접속이가능하기때문에꼭선택해줍니다. A5 SPI - Enable/Disable automatic loading of SPI kernel module (needed for e.g. PiFace) SPI kernel module 을자동으로로딩하는옵션인데사용하지않으므로무시합니다. A6 Audio - Force audio out through HDMI or 3.5mm jack 오디오를 HDMI 로출력할것인지 3.5mm jack 으로출력할것인지정하는옵션인데자동으로선택되므로무시합니다. A7 Update - Update this tool to the latest version 라즈비안을최신으로업데이트시켜주는옵션인데 GUI 에서업데이트하는것보다 CUI 에서업데이트하는것이빠르므로나중에업데이트시켜줄것이기때문에무시합니다. 9 About raspi-config 이설정에관해소개하는글입니다. 무시합니다. * 모든설정을마친후에 Finish 를선택하여재부팅을합니다. 98
프로그램패키지 update/upgrade 다른패키지나라이브러이설치하기전에꼭실행해준다. $sudo apt-get update $sudo apt-get upgrade 실행시용량이더필요하다고메시지가나오면 Y 누르고진행한다. 99
터미널접속 (Putty) - SSH 설정 라즈비안설치후나오는초기설정화면에서 ssh 항목을사용한다고설정을하였다면추가로설정할것은없습니다. 만약설정을하지않았다면아래의명령어를사용해환경설정화면으로진입하여 SSH 를사용한다고설정을해주셔야합니다. $sudo raspi-config Putty 다운로드와설치 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 100
라즈베리파이 IP 확인 아래의명령어로라즈베리파이의 ip 를알아내어따로적어둡니다. $ ifconfig 101
터미널접속 (Putty) - 터미널접속 알아낸 ip 주소를 Host Name 에적고 SSH 를선택한후 Open 을눌러서접속합니다. 102
터미널명령어 켜는법은전원연결을하면됩니다. 전원선이연결되어있을경우는뺐다가다시연결하면됩니다. 전원을끄려면아래의명령어중하나를쓰시면됩니다. $sudo shutdown -h now $sudo halt 재부팅을하시고싶으시면아래의명령어중하나를쓰시면됩니다. $sudo shutdown -r now $sudo reboot 103
터미널명령어 / 디렉토리표시. 현재디렉토리.. 상위디렉토리 cd ls mkdir rmdir pwd cp mv rm cat more less 디렉토리이동디렉토리내용출력디렉토리생성디렉토리삭제현재작업디렉토리절대주소출력파일복사 ( 디렉토리포함은 '-r') 파일이동파일삭제 ( 디렉토리포함은 '-r')( 강제삭제는 -f) 파일내용출력파일내용페이지단위로출력파일내용페이지단위로출력 104
업데이트 아래의명령어를차례로입력하면서업데이트해줍니다. mysql 을사용하기위해설치하는업데이트입니다. $sudo npm install mysql ejs 는 nodejs 에서사용되는템플릿모듈입니다. $sudo npm install ejs express 는각요청을처리해줄수있는서버를구성해주는프레임워크입니다. $sudo npm install express 105
APM (Apache, MySql, PHP, phpmyadmin) 설치 Apache 설치 MySQL 설치 PHP 설치 phpmyadmin 설치 phpmyadmin 확인 phpmyadmin 사용 - 데이터베이스생성 phpmyadmin 사용 - 유저생성 phpmyadmin 확인 - 테이블생성 phpmyadmin 확인 - 테스트 106
APM 설치 - Apache 설치 아래의명령어를사용하여아파치를설치합니다. sudo apt-get install apache2 * 만약설치하려고할때아래와같은메시지가나온다면다음의명령어를실행해주고다시설치하면됩니다. 설치하는도중에설치하면용량이얼마나차지하는지알려주고설치할지말지여부를물어보는데쿨하게 y 를누르고엔터를쳐서계속설치해줍니다. 107
APM 설치 - Apache 설치 설치후에아래의명령어를실행하면새로운디렉토리가생긴것을알수있습니다. ls al /var/ /var/www/ 라는디렉토리인데이디렉토리는아파치웹서버가실행될때기본적으로보여주는디렉토리입니다. 예를들어브라우저에 http:// 라즈베리파이의아이피주소 / 로접속했을때보여주는디렉토리입니다. 108
APM 설치 - Apache 설정 이때 /var/www/ 디렉토리의소유권은 root 로되어있으므로아래의명령어를사용하여소유권변경을합니다. 여기서 kuma119 는새로만든계정입니다. 이렇게소유권을변경하는이유는 FTP 로파일을올릴때해당디렉토리에쓸수있는권한이있어야업로드가가능하기때문입니다. sudo chown kuma119 -R /var/www 아래의명령어를사용하여라즈베리파이가시작할때자동으로아파치를실행하도록해줍니다. sudo update-rc.d apache2 defaults 109
APM 설치 - Apache 설치 아래의명령어를실행하여새로시작하여테스트를해줍니다. shutdown -r now 라즈베리파이가재시작된후 /var/www 디렉토리에아래와같이 index.html 파일을만들어업로드해줍니다. <html><body> hello, World </body></html> 아파치는기본적으로포트는 80 입니다. 브라우저에서보통아이피를입력해서서버에접속을하게되면기본적으로 80 번포트로접속을시도하게되기때문에이렇게아이피만입력하면접속됩니다. 110
APM 설치 - MySQL 설치 아래의명령어를사용하여 mysql 을설치합니다. sudo apt-get install mysql-server mysql-client libmysqlclient-dev 설치할때용량이어느정도필요한지나오고계속할것인지물어봅니다. 이때 y 를입력하고엔터를치시면됩니다. * install 중간에 password 를입력하라고나오는데이때입력하는비밀번호는 mysql 의비밀번호이기때문에혼동하지않도록합니다. 111
APM 설치 - MySQL 설치 아래의명령어로설치여부를볼수있습니다. ps 명령어는현재어떤프로세스들이실행되고있는지보는명령어입니다. ps -ef grep mysqld mysql 이처음설치되면로컬에서만접속이되도록되어있습니다. 아래의명령어를사용하여환경설정파일을수정하는화면으로이동합니다. sudo nano /etc/mysql/my.cnf 아래의구문을찾아서아래와같이수정하여줍니다. 변경전 - bind-address = 127.0.0.1 변경후 - #bind-address = 127.0.0.1 112
APM 설치 - PHP 설치 아래의명령어를사용하여 php 를설치합니다. sudo apt-get install php5-common php5 libapache2-mod-php5 설치할때용량이어느정도필요한지나오고계속할것인지물어봅니다. 이때 y 를입력하고엔터를치시면됩니다. 아래의파일을하나만들어서 phpinfo.php 라는이름으로저장합니다. <? phpinfo();?> ftp 로 /var/www 디렉토리에업로드해주고아래의 url 로확인해봅니다. http:// 서버아이피 /phpinfo.php 113
APM 설치 - phpmyadmin 설치 아래의명령어를사용하여 phpmyadmin 을설치합니다. sudo apt-get install phpmyadmin 설치할때용량이어느정도필요한지나오고계속할것인지물어봅니다. 이때 y 를입력하고엔터를치시면됩니다. 114
APM 설치 - phpmyadmin 설치 phpmyadmin 은딱히다른툴로 mysql 을조작할필요없이웹서비스상에서직접 mysql 을조작할수있도록해주는 php 기반의프로그램입니다. 우리는 apache 를설치했기때문에 apache2 를선택해줍니다. 설치중에 phpmyadmin 접속시에사용될비밀번호를정해주고 ok 를선택하여나가줍니다. 115
APM 설치 - phpmyadmin 확인 접속하여제대로설치가되었는지확인해봅니다. http:// 서버아이피 /phpmyadmin Username 에는 root 를입력하고 Password 에는앞서설정한비밀번호를입력해줍니다. 116
싱글보드컴퓨터스펙및가격비교 2014년 3월 10일기준으로본가격입니다. 마스보드 A10 : 71,280원 마스보드 A20 : 84,000원 큐비보드 : 86,900원 큐비보드2: 110,000원 비글본블랙 : 77,510원 라즈베리파이 : 53,350원 이외에도많은싱글보드컴퓨터가있지만일반적인것만비교해보았습니다. 싱글보드컴퓨터의스펙한계가있기때문에아직은라즈베리파이가가장싸면서도효율적인것을알수있습니다. 117
다른활용법들 싱글보드컴퓨터는사용전력이극히낮아서 24 시간동작해야하는웹서버나 SVN 같은저장소용도로사용할수있을뿐아니라각종전자센서과통신을이용하여스마트폰으로홈오토메이션까지구축하는것이가능합니다. 간단히 LED 를켜고끌수있습니다. LED 제어 초음파센서로써앞에있는물체의거리를감지하는것이가능합니다. 응용하면애완동물과하루종일놀아주는로봇을만드는것이가능합니다. 초음파센서활용 모터도간단히제어가가능하기때문에무선으로잡아주고스마트폰으로제어가가능합니다. 모터제어 라즈베리파이에연동시켜좀더로봇을쉽게만들수있도록해주는모듈도있습니다. 로봇활용 아래와같이클러스터링을이용하여슈퍼컴퓨터를제작하는것도가능합니다. 슈퍼컴퓨터동영상 라즈베리파이로영상을받을수가있기때문에감시카메라혹은아기돌보기용으로도가능합니다. 카메라활용 터치스크린도있기때문에모니터도필요가없습니다. 말그대로초소형컴퓨터가되는것이지요. TFT 터치스크린 라즈베리파이보다하위단계인아두이노로만들어본탱크입니다. 라즈베리파이로구현한다면외부에서 wifi 를통하여움직일수있습니다. 동영상링크 118
무선랜 wifi 동글설정 Wifi 동글 (iptime N100mini) 을 USB 포트에연결 119
무선랜설정 아래의명령어를실행하여라즈베리파이의네트워크를확인합니다. ifconfig 위의스크린샷에서보면 eth0 은유선이고 wlan0 은무선입니다. 그중 wlan0 의 Hwaddr 이연결한 wifi 동글의 mac address 입니다. 공유기에서 mac 인증을통하여무선연결을허용할경우이 mac address 를등록해주어야합니다. 120
설정 아래의파일을편집하여무선네트워크설정을수정합니다. sudo nano /etc/network/interfaces address 에자신이사용할아이피를적어줍니다. 보통 192.168.0.1~192.168.0.255 사이에서다른컴퓨터와중복되지않도록적어줍니다. wpa-ssid 는공유기의 ssid 입니다. wpa-psk 는공유기무선암호입니다. wpa-key-mgmt 과 wpa-proto 는인증방법입니다. wpa-pairwise 와 wpa-group 는암호화방식입니다. 121
삼바접속 삼바 (samba) 는 SMB(Server Message Block) 또는 CIFS (Common Internet File System) 로알려져있으며리눅스와윈도우간에파일및프린터를공유할수있게해주는프로그램이다. 삼바를통해리눅스서버를타운영체제와파일을공유할수있는파일서버로도사용할수있다. 1. 삼바설치우선삼바프로토콜및삼바서버, 클라이언트와관련된의존성패키지를다음의명령어를이용하여설치한다. $sudo apt-get install samba samba-common-bin 2. 삼바유저추가및패스워드설정다음의명령어로 pi 라는삼바유저를추가하자. 그러면패스워드를물어볼것이다. 자신이원하는패스워드를입력해준다. $sudo smbpassword a pi 3. 삼바설정다음의명령어로삼바설정파일을수정해주어야한다. 다른설정을변경할필요없이파일의제일하단에새로운유저 pi 에대한설정을추가한다. $sudo nano /etc/samba/smb.conf [pi] comment = rpi samba server by girin path = /home/pi valid user = pi writable = yes browseable = yes : 작업후 ctrl-x 누르고 y 누르고나오면저장된다. comment : 유저서버설정에대한코멘트로마음대로적는다. path : 공유할폴더를지정한다. 작업폴더인 /home/pi 를지정한다. valid user : 사용가능한유저를지정 writable : 쓰기를가능하게할것인지에대한옵션 browseable : 공유폴더의목록을보여주는옵션 122
삼바접속 4. 삼바재실행설정된내용이반영될수있도록삼바를재실행시켜준다. $sudo service samba restart 5. 공유폴더접속윈도우의탐색기혹은네트워크를열어서폴더주소칸에 \\192.168.1.238\ 과같이라즈베리파이의 IP 주소를적어주면아래와같이공유를설정해둔라즈베리파이폴더에접속할수있다. 여기에서새로운디렉토리를만들고, 파일의수정, 삭제, 복사, 이동이가능하게된다. 위치 : pi 아이디 : pi 패스워드 : raspberry 123
Smart_IoT 설계시스템 스마트농장실습 124
스마트농장개요 IoT 스마트농장관리시스템은 Gateway 시스템과모바일프로그램으로구성된다. 농장관리 Gateway 는온습도센서와조도센서에서수집한데이터를 Database 에저장하고, 센서데이터를판단하여다양한액츄에이터 ( 워터펌프, 팬, DC 모터, 식물 LED) 를구동한다. 또한안드로이드폰과의연동을통해원격지의사용자요청이발생할경우 Ehernet 이나 Wi-Fi 를통해센서데이터나영상정보를송신한다. 사용자는실제농장이나화분등으로실제와거의유사하게구현할수있다. Gateways 에는라즈베리파이기반으로리눅스운영체제를최적화한라즈비안이설치되어있다. 특히다양한액츄에이터의하나인워터펌프는실제화분이나농작물에물을줄수있도록실리콘튜브으로연결되어있다. 시험은가능한한실제현장에서발생하는상황과유사하게설계해야만학습에효과적이라판단된다. 주요기능 스마트폰을이용한스마트식물농장시스템 Actuator 의원격제어 토양의온도와습도를감지하여워터펌프를가동하여물주기 온도와습도를감지하여환기팬동작및외부창문제어 ( 모터 ) 조도상태를통한식물용 LED 작동제어 원격영상을통한실시간모니터링및 Actuator 의원격제어 센서 액츄에이터 온도습도센서 / 조도센서 워터펌프, 팬, DC Motor, RGB Led 125
스마트농장하드웨어구성과연결도 126
IO 어댑터보드 127
스마트농장센서 / 액츄에이터연결
스마트농장소프트웨어구성 TCP/IP 서버실행 Internet 안드로이드앱 온도센서데이터수집 워터펌프제어 센서데이터조회 습도센서데이터수집 조도센서데이터수집 Gateway System 팬제어 DC 모터제어 액츄에이터제어 카메라영상확인 카메라영상 RGB Led 제어 이벤트수신 Database 조회 / 저장 웹서버실행 Internet 이벤트 DB 기후 DB 농장기후 DB 사진 DB 129
스마트농장소프트웨어기능 I 구분기능블록규격 구동 Software OS Compiler 센서프로그램 Actuator 프로그램 RASPBIAN - Debian Wheezy. Release date:2014-09-09 Android Jelly Bean 4.3 GCC Compiler 리눅스커널기반 C, C++, Python, Java C, C++, Python, Java ARM/Linux 기반싱글보드컴퓨터로센서어댑터, 액츄에이터어댑터 Gateway CPU Board 와연동하고인터넷에연결되어 Gateway 역할을수행. 센서로부터 수집한정보를저장하고원격지의사용자에게전송하거나제어신호 에따라해당액츄에이터를 On/Off 기능 Camera Module Gateway 에 CSI 인터페이스및커넥터로연결되는카메라모듈로주 요기능은설치장소의환경과액츄에이터가동작하는상황을사진이 나동영상으로촬영하여사용자에게제공 SD Card Gateway 의부팅과 Linux 기반의운영체제가저장된저장장치이며 G ateway 의실행 application Software 탑재 130
스마트농장소프트웨어기능 II 구분 규격 센서 S/W 센서에서다양한데이터를수집하고, 분석하는소프트웨어 액츄에이터 S/W 센서입력정보및사용자의요구에따라모터, 팬, 펌프와같은동작장치를제어하는소 프트웨어 Web Software Ethernet 을통해웹에접속하고, 웹서버와데이터베이스를이용하여 Gateway 가수집한 센서데이터를웹브라우저에서조회하고, 현장환경을영상을통해확인하고설치된시설 을직접제어 Smart Phone Application Android 기반으로하는 Mobile Application Software를통하여사용자는스마트폰으로 G ateway의센서에서수집된데이터및영상정보를수신하여적절한액츄에이터를구동제어. 사용자는스마트폰을통해이미지나동영상 Play기능, Gateway에저장된이벤트와 lo g기록확인가능. 131
스마트농장 Data Flow Diagram 132
GPIO Pin 과 wiringpi Pin 할당 gpio readall 133
MCP3208 ADC(12bit, SPI) 134
GPIO 제어와 Wiring Pi 설치 패키지관리서버로부터이용가능한프로그램패키지의목록을최신버전으로업데이트 $sudo apt-get update 컴퓨터에설치된프로그램이업데이트되었으면새로운버전으로설치하게해주는명령어 $sudo apt-get upgrade 1. 소스관리툴 git 를다운로드한다. ( 오픈소스 https://github.com/wiringpi/wiringpi 의소스를체크아웃하기위해서 ) $sudo apt-get install git-core 2. wiringpi 프로젝트를통째로받아온다. $git clone git://git.drogon.net/wiringpi 3. 빌드및설치를진행한다. $cd wiringpi $./build 4. 설치가잘되었는지아래의명령어로확인해본다. $gpio -v $gpio readall 135
센서 Test I 온습도센서 J11 1 2 3 pi@raspberrypi ~ $ cd smartfarm pi@raspberrypi ~/smartfarm $ cd dht22-test pi@raspberrypi ~/smartfarm/dht22-test $ sudo./dht22 11 Humidity = 22.20 % Temperature = 20.10 *C pi@raspberrypi ~/smartfarm/dht22-test $ 조도 ( 빛 ) 센서 1 2 3 J13 pi@raspberrypi ~/smartfarm $ ls DHT gethumitemp lastdht22 pumpoperate dht22.py gethumitemp.c lightdetect pumpoperate.c dht22-test getlightsensor lightdetect.c rgbtest pi@raspberrypi ~/smartfarm $ sudo./lightdetect light full! dark dark 136
센서 Test II Polling #define LIGHTSEN_OUT 2 //gpio27 - J13 connect pinmode(lightsen_out, INPUT); if(digitalread(lightsen_out) == 0) printf("light full! \n"); if(digitalread(lightsen_out) == 1) printf("dark \n"); Interrupt #define Man_Detect 0 //gpio17 // myinterrupt: called every time an event occurs void myinterrupt(void) { alert_flag = 1; } while ( 1 ) { if(alert_flag ==1) alert_flag=0; } //main if ( wiringpiisr (Man_Detect, INT_EDGE_RISING, &myinterrupt) < 0 ) { fprintf (stderr, "Unable to setup ISR: %s\n", strerror (errno)); return 1; } 137
액츄에이터 Test I 스마트식물농장의액츄에이터는워터펌프, 팬, DC Motor, RGB Led 와같이 4 가지를사용한다. 토양이말라있을때물을뿌려주고, 실내농장의온도에따라환기팬을작동하고, 야간이나구름이낀날은청색과적색의식물 Led 를켜준다. 또한차양을올린다거나문을열기위해 DC 모터를사용하는것으로가정한다. 워터펌프 FAN DC Motor 식물 LED 5V, 12V 구동회로 RGB Led 구동회로 138
액츄에이터 Test II #define PUMP 21 // BCM_GPIO 5 #define FAN 22 // BCM_GPIO 6 #define DCMOTOR 23 // BCM_GPIO 13 #define RGBLEDPOWER 24 //BCM_GPIO 19 #define RED 27 //GPIO 16 #define GREEN 28 //GPIO 20 #define BLUE 29 //GPIO 21 void Bpluspinmodeset(void) { pinmode (PUMP, OUTPUT); pinmode (FAN, OUTPUT); pinmode (DCMOTOR, OUTPUT); pinmode(rgbledpower, OUTPUT); pinmode(red, OUTPUT); pinmode(green, OUTPUT); pinmode(blue,output); } digitalwrite (PUMP, 1) ; // On digitalwrite (FAN, 1) ; // On digitalwrite(dcmotor, 1); //On digitalwrite(rgbledpower, 1);//On delay (5000) ; / / ms digitalwrite (PUMP, 0) ; // Off digitalwrite (FAN, 0) ; // Off digitalwrite(dcmotor, 0); //Off digitalwrite(rgbledpower, 0); //Off 139
스마트농장제어테스트 프로그램 : farmstory.c 참고 140
카메라구동테스트 카메라모듈사양 센서 PCB 크기무게해상도지원비디오모드 OmniVision OV5647(8.5 x 8.5 x 5mm) 25 x 20 x 9 mm 3 g 5 Megapixels 1080p30, 720p60 and 640x480p60/90 영상 / 스팅지원정지영상캡처 2592 1944 초당 30 프레임의 1080p 지원 초당 60 프레임의 720p 지원 $sudo apt-get update $sudo apt-get upgrade 초당 90 프레임의 640x480p 지원 $sudo raspi-config - 카메라의설정값은 disable 디폴트. Enable 시켜준다. $sudo apt-get install mplayer netcat ffmpeg gpac - 부가적인패키지를설치 명령을실행하고 24M 의공간이필요하다는메시지가나오면 Y 입력하여설치를진행한다. 141
카메라캡쳐 jpg 포맷으로이미지를캡처하려면다음과같이입력한다. $raspistill -o image.jpg $ls 명령어로 image.jpg 파일이생성된것을볼수있다. 이번에는 h264 포맷으로 5 초동안동영상을캡처해보는명령이다. $raspivid -o video.h264 fps 30 t 10000 -o : 출력파일이름 -t : 촬영시간밀리세컨드 (10000 = 10 초 ) -fps : 초당프레임 $ls 명령어로확인하면 video.h264 파일이생성되었다. 10 초로늘리려면다음과같이입력한다. $raspivid -o video.h264 -t 10000 라즈베리파이카메라프로그램은 H264 포맷을사용하고있기에별도의프로그램으로보거나일반적인동영상파일로변환하려면별도로파일을변환시켜줘야한다. 다음의명령어는 ffmpeg 을이용하여 H264 포맷을 mkv 포맷으로변환시키는예제다. $ffmpeg r 30 i video.h264 vcodec copy video.mkv 확인해보면 video.mkv 파일이생성되었다. 다음의명령어로도가능하다. $MP4Box add video.h264 video.mp4 $raspivid less $raspistill less 142
동영상스트리밍 카메라모듈을이용하여 mjpg-stream 을구현한다. 속도가많이느린편이지만현장상황을웹을이용하여모니터링하기에는무리가없다. 웹스트리밍또는기타외부기기에서라즈베리파이카메라모듈을이용한웹스트리밍서비스를하기위해선 mjpg-stream 이가장최적화되어있다. Mjpg-stream 컴파일을위해아래영상관련라이브러리및 cmake 패키지를설치해 주도록한다. $udo apt-get install git cmake libjpeg8-dev imagemagick -y videodev2.h 헤더파일링크 gksmsep[ mjpg-streamer 를컴파일진행시에는 요구하는 videodev.h 헤더파일을변경된 videodev2.h 파일로링크하자. $ sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h mjpg-streamer 다운로드및컴파일하기 $ git clone https://github.com/liamfraser/mjpg-streamer 143
동영상스트리밍 $cd ~/mjpg-streamer/mjpg-streamer-experimental pi@raspberrypi ~/mjpg-streamer/mjpg-streamer-experimental $ make clean all 앞의과정들을통해 mjpg-streamer 를실행할수있는환경이갖추어졌으니, 마지막으로파이캠에서 mjpgstreamer 를이용할수있도록자동스크립트를작성하고명령어를입력해웹스트리밍을구현해보자. $ pi@raspberrypi ~ $cd ~ $ pi@raspberrypi ~ $sudo nano mjpg.sh export STREAMER_PATH=$HOME/mjpg-streamer/mjpg-streamer-experimental export LD_LIBRARY_PATH=$STREAMER_PATH $STREAMER_PATH/mjpg_streamer -i "input_raspicam.so -d 200" -o "output_http.so -w $STREAMER_PATH/www" CTRL-X 를누르고 Y 누르고 Enter 저장하고나온다. $ pi@raspberrypi ~ $sh mjpg.sh 확인주소 : http:// 라즈베리파이아이피 :8080 144
스마트농장 Database 설계 DB Name : iotfarm Table : tfarmsensorvalue 센서값저장테이블 1 분마다센서값을저장한다. 날짜 day / 조도 int / 온도 float / 습도 float Table : tfarmsensorcheck 센서정상 / 불량저장테이블 센서정상불량확인하여저장 10 분마다. 날짜 day / 조도센서 ( 정상, 오류 ) / 온도센서 ( 정상, 오류 ) / 습도센서 ( 정상, 오류 ) Table : tfarmactuoperate 액츄에이터동작상태 ( 동작중 / 정지중 ) 액츄동작시데이터베이스업데이트하고, 동작끝날때업데이트 날짜 day / pump(on,stop) / fan(on, stop) / dcmotor(on, stop) / rgbled(on, stop) Table : tfarmactucheck 액츄에이터가정상 / 불량저장데이블 액츄에이터정상불량기록 현재는모두정상 pump(normal, fail), fan(normal, fail), dcmotor(normal, fail), rgbled(normal, fail) Table : tfarmsetting 설정값저장테이블 Now(), 매일 /2 일 /3 일 (0,1,2) 145
스마트농장 User Interface 설계 UI 설계 메인화면 농장상태농장모습 1ch 카메라영상물주기설정디바이스연결 농장상태 대기온도 22 대기습도 35 % 조도센서정상온도센서정상습도센서정상워터펌프정상팬정상 DC motor 정상 물주기설정 00 ~ 24 시간 1 ~ 60 분설정 1~10 일설정물주기 on/off Fan 동작 on/off DC Motor on/off RGB Led On/Off 146
스마트농장서버와안드로이드앱연동 1. 라즈베리파이스마트팜서버실행 pi@raspberrypi ~ $ cd smartfarm_server pi@raspberrypi ~/smartfarm_server $ cd output pi@raspberrypi ~/smartfarm_server/output $ ls server_farm pi@raspberrypi ~/smartfarm_server/output $ sudo./server_farm validate database... Humidity = 10.80 % Temperature = 30.50 *C Humidity = 10 Temperature = 30 Humidity = 10 SensorInterruptLoop : write to DB - INSERT INTO tfarmsensorvalue values (null,now(), now(), 0.000000, 0.000000, -1231938240) iot_insert_data_from_db : query - INSERT INTO tfarmsensorvalue values (null,now(), now(), 0.000000, 0.000000, -1231938240) SensorInterruptLoop : write to DB - INSERT into tfarmsensorcheck values (null, now(), now(), 30, 10, 0) iot_insert_data_from_db : query - INSERT into tfarmsensorcheck values (null, now(), now(), 30, 10, 0) SensorInterruptLoop : write to DB - INSERT into tfarmactuoperate values (null, now(), now(), 0, 0, 0, 0) iot_insert_data_from_db : query - INSERT into tfarmactuoperate values (null, now(), now(), 0, 0, 0, 0) SensorInterruptLoop : write to DB - INSERT into tfarmactucheck values (null, now(), now(), 1, 1, 1) iot_insert_data_from_db : query - INSERT into tfarmactucheck values (null, now(), now(), 1, 1, 1) 147
스마트농장서버와안드로이드앱연동 3. 스마트폰 스마트농장앱실행 3. 카메라동영상스트리밍프로그램실행 카메라를확인할경우서버에서카메라쉡프로그램이동작되어야한다. 따라서현재상태에서 Putty 프로그램을하나더실행하여루트에서 pi@raspberrypi ~ $ sh mjpg.sh 를실행한상태에서스마트폰에서영상보기를선택하면화면이보일것이다. 148
Android App 개발 이클립스개발환경 File Import 선택 Existing Projects into Workspace Zip 파일혹은프로젝트파일선택 Activity_main.xml 파일 앱의 Layout 파일편집 149
Android App 개발 MainActivity.java 파일코딩 스마트폰에서실행 150
감사합니다. 151