Smart IoT 설계시스템
목차 1. IoT( 사물인터넷 ) 1/2 2. IoT 기반기술 3. Smart_IoT 설계시스템 4. Gateway ( 라즈베리파이 ) 실습 5. APM (Apache, MySql, PHP, phpmyadmin) 설치 6. Smart_IoT 설계시스템스마트농장실습 2
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
IT 플랫폼의구성요소와진화과정 http://www.venturesquare.net/557887 5
인터넷관점에서의패러다임변화 n From Internet of People to Internet of Things Internet of people Internet of things * EDI (Electronic Data Interchange) 6
디바이스관점에서의패러다임변화 7
소프트웨어관점에서의패러다임변화 8
제조산업관점에서의패러다임변화 제조 + 소프트웨어융합을통한 S/W 융합산업확대 User Interface Innovation 소프트웨어융합산업중심사람과 Interaction을위한 UI를 Network상 S/W로대체ㅁ제품가격이낮아짐 : 스마트폰등이기존 UI 장치대체ㅁ UI가사용자에따라다양하게제공가능 ( 사용자중심제품 ) ㅁ네트워크기반원격제어가가능 ㅁ결제등의서비스가간편해짐 제조산업중심사용자와 Interaction을위하여 UI 장치필수ㅁ제품가격고가 : Display 장치, Button 장치등ㅁ UI 수정을위하여새로운모델개발필요ㅁRemote 제어불가 APPs(Network UI) Internet of Things Service Innovation S/W 산업 제조산업 S/W 산업 제조산업 S/W 산업 S/W 융합산업 S/W 융합산업 S/W 융합산업 9
성공한 IoT 1 HiPass 2000 년 6 월 30 일하이패스시범실시시행. 성남, 청계, 판교등 3 개요금소상, 하행선각 1 개차로씩총 6 개차로 - 차량탑재설비 : 하이패스단말기 (OBU) 와전자카드로써하이패스차로설비와통신을통해요금정산이이루어짐 - 차로설비 : 차종분류장치및차량감지장치와무선통신장치, 위반차량촬영장치, 차단기시스템설비및운전자표시기, 안내전광판, 신호등으로나뉨. 이들장비들과인터페이스를통해요금수납업무를주관하는통합차로제어기로구성 - 영업소설비 : 위반촬영주제어기및운영 PC 와금액충전 PC, 차단기리모콘및인터폰, 영업소주전산기로구성, 하이패스단말기 (OBU) 와통신된데이터들은영업소서버를거쳐한국도로공사자가망을통하여본사주전산기로기록 10
성공한 IoT 2 주차관리시스템 카드전용및영상인식주차장최초도입 ( 대구팔달신시장 ). 2007. 8.14 *http://www.ijungang.com/_news/news.php?cat=3&uid=18353&mode=view 11
성공한 IoT 3 셀카봉 셀카드론진화 최초발명자는일본인우에다히로시와미마유지. 이는 1984 년일본에서실용신안으로공개됐고 1985 년엔미국에서특허로등록, 존속기간 20 년을넘어서그권리가이미사라진상태로 ( 첨단 ) 기술의개발과시장의태동은동행하지않을수있다는것을보여주는대표적인사례 *http://www.hankyung.com/news/app/newsview.php?aid=2014122259027 Nixie( 닉시 ) 웨어러블드론카메라 12
ITC IoT Wearable Cloud Big data 동일선상 ICT 는 Information and Communication Technology 의약자로 1980 년대부터사용되어왔으나 1997 년에데니스스티븐슨이영국정부의보고서에사용하면서부터유명해지기시작 사물인터넷의정의를보면 1. 자신을구별할수있는유일한아이디를가져야하고, 2. 인터넷을통한통신능력을가져야하고, 3. 데이터를처리하는능력을가져야하고, 4. 외부환경으로부터데이터취득을위해센서를내장가능. 클라우드컴퓨팅의정의는개인이가진단말기를통해서는주로입 / 출력작업만이루어지고, 정보분석및처리, 저장, 관리, 유통등의작업은클라우드라고불리는제 3 의공간에서이루어지는컴퓨팅시스템형 개인의몸에기기를부착하여개인의무수히많은정보, 즉빅데이터를사물인터넷을통해수집하게되는데이를이용한부가가치가무한대라는것이다. 바로 ' 돈 ' 벌수있는아이템 빅데이터 (Big Data) 란기존방식으로저장, 관리, 분석하기어려울정도로 ' 큰 ' 규모의자료. 빅데이터를분석하여효율적인알고리즘을개발하는기술의필요성이사물인터넷과웨어러블기기, 페이스북, 트위터등소셜어플과프로그램들의등장에따라함께발전. 13
IoT 기반기술
IoT 의기반기술 15
Trillon 센서시대 Janusz Bryzek 교수는향후 10 년이내에지구상에사용되는센서의개수가 1 조개를넘게될것이라고예상. ( 2013 년 10 월스탠포드대학 Trillion Sensors Summit ) 한국센서연구조합에따르면현재기술적으로구현가능한센서의종류는약 350 여가지 16
센서의기술동향 Sensor 라틴어로지각, 느낌등의미. 인간의 5 감기능 ( 시각 청각 후각 미각 촉각 ) 을센스 (SENSE) 라함. 리드 SW. 패턴을인식하는시스템레벨의센서. 최근에는인텔리전트센서로 CPU 내장형. 복잡다양성을띠고있다. 센서란주변의물리화학생물학적정보를감지하여전기적신호로변환하는모든장치 (Device) 를의미한다. 이전에는센싱 (Sensing) 할수없었던새로운영역에대한센서연구 제조공정, 작동원리등의혁신 ( 예 : 3D 프린팅등의기술을활용한 Flexible 형태센서 ) 전력소비향상을통한가용성확대 ( 예 : 운동, 열에너지의변환을통한자가발전센서 ) 기존센싱가능영역에대한센싱의정확도와정밀도를향상시키는연구및개발 ( 예 : 미세동작감지센서 ) 17
네트워크인프라 광범위한지역에걸쳐사람과각종사물을인터넷과연결하고필요한정보를주고받는사물인터넷이구현되기위해서는언제 (Anytime) 어디에서나 (Anywhere) 어떤사물 (Anything) 과도연결되어데이터를주고받을수있는초연결 (Hyper connection) 의실현이필수적이다. 따라서이를위해서는다양한종류의유무선네트워크기술을이용하여효과적으로데이터를각지로송수신하고원활하게처리할수있는네트워크인프라가구축되어야한다. 18
네트워크통신기술 - ZigBee - Z-Wave - INSTEON - WAVENIS - 6LoWPAN(IPv6 over Low power WPAN) Technology ZigBee1 ISA100.11a WirelessHART Bluetooth2 Wifi3 NFC ANT+ Nike+ Z-Wave EnOcean Insteon WirelessHD Radio IEEE802.15.4 @ 868MHz (EU), 915MHz (US), 2.4GHz (global) IEEE802.15.4 @ 2.4GHz IEEE802.15.4 @ 2.4GHz 2.4GHz IEEE802.11v @ 2.4GHz/5GHz/60GHz 13.56MHz 2.4GHz 2.4GHz ITU-T G.9959: 868.42MHz( EU), 908.42MHz(US) 315MHz/868.3MHz/902 MHz 869.85MHz(EU) and 915MHz(US) 60GHz 19
IoT 디바이스가갖추어야할요소 앞에서설명하지않은보안과사용자인터페이스가추가되어야한다. 20
IoT & Wearable 디바이스생태계 수직적생태계 수평적생태계 소품종대량생산패쇄형생태계 다품종소량 ( 대량 ) 생산개방형생태계 넘기힘든진입장벽시장 누구나쉽게진입하고창의적협력시장 21
IoT 발전방향 22
Smart_IoT 설계시스템 Smart_IoT 설계시스템 스마트홈시스템 23
Smart IoT 통합시스템 24
통합설계 System 구성 25
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 용 ) 소프트웨어예제를제공 26
Smart IoT 설계시스템주요기술 I 구성품 기술 게이트웨이 (Raspberry Pi) 라즈베리파이는영국비영리조직 ' 라즈베리파이재단 ' 에서학습용으로만든초소형컴퓨터로전산 (Computing) 을가르치는학교의학습도구로개발되었습니다. 센서소프트웨어와액츄에이터소프트웨어를실행하며인터넷연결기능을수행합니다. Embeded H/W 및 Linux 기반의 Firmware 실습을할수있습니다. 카메라영상정보를실시간으로사용자에게전송하는장치로 Gateway에연결되어현장의상황을볼수있으며, 영상저장, 정지화면저장등의기능을수행합니다. 움직임을감지하는센서로서의기능을수행하는센서로도활용가능한기술을직접구현할수있습니다. 센싱모든사물에부착되어사용되는센서기술은사물인터넷에서중요한분야입니다. IoT 사물통신설계 / 실습시스템은다양한센서 ( 온도, 습도, 조도, 움직임, 소리, 불꽃, 연기, 가스, 진동 ) 를제공하여사용자가원하는정보를수집하여응용할수있도록합니다. 실습시스템의센서소프트웨어가제공되어각센서의특징에따라 I2C통신, ADC Analog, GPIO등을통한데이터수집 / 분석기능을이해할수있습니다. 27
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 안드로이드기반의스마트폰앱을통해원격지의상황을실시간으로수집및제어하는기능을수행합니다. 사용자는안드로이드프로그래밍을통해다양한모바일기기에응용할수있습니다. 28
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 인터페이스및커넥터로연결되는카메라모듈로주요기능은설치장소의환경과액츄에이터가동작하는상황을사진이나동영상으로촬영하여사용자에게제공 29
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 기록확인가능 30
Smart IoT Application( 안드로이드 ) 스마트농장관리시스템무인경비시스템화재경보시스템 스마트홈시스템반려동물도우미인터넷제어토이 31
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 32
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 33
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 출력 34
Input/Output 어댑터보드사양 II 35
Smart IoT 시스템센서 I 여러가지센서의기능과외관 센서설명 Image 온. 습도센서 온도센서와습도센서를하나로합친센서로온도계산식과습도계산식이있기도함. 사운드센서 주변의소리를감지하여아날로그신호나디지털신호로출력하는센서. 광센서 ( 조도센서 ) 빛자체또는빛에포함되는정보를전기신호로변환하여검지하는소자. 센서특징은비접촉, 비파괴, 고속도, 주변에잡음의영향을주지않고할수있음. 인체감지센서 인간의몸이나동물에서나오는적외선은약 10 μm 의파장을갖고있다. 이파장을감지하였을때센서가반응을할수있게되는소자 36
Smart IoT 시스템센서 II 초음파센서 초음파센서는일정한간격으로높은주파수펄스를통하여짧게소리를발사합니다. 이러한것들은소리의속도를통하여공기중에전파되며개체에충돌하여에코신호로반사되어오는것을감지하는센서 근접센서 대략 10~80cm 거리를측정할수있는데, 전원을넣어주면거리에따라출력전압이변화하는센서. 불꽃센서 약 1m 내외의거리에서불꽃의파장 ( 주파수 ) 7 60nm ~ 1100nm 대역을감지하는센서 가스센서 내부에포함된히터와센서로맘모니아, 생활가스, 오염가스등을검출해낼수있는모듈이다. 내부에포함된히터가적정온도로올라가서안정적인결과를얻기위해서는대기시간 (burn-in time) 이필요 37
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 도 38
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) 39
스마트농장관리시스템 40
스마트농장관리시스템소프트웨어구성 TCP/IP 서버실행 Internet 안드로이드앱 온도센서데이터수집 워터펌프제어 센서데이터조회 습도센서데이터수집 조도센서데이터수집 Gateway System 팬제어 DC 모터제어 액츄에이터제어카메라영상확인 카메라영상 RGB Led 제어 이벤트수신 Database 조회 / 저장 웹서버실행 Internet 이벤트 DB 기후 DB 농장기후 DB 사진 DB 41
무인경비시스템 카메라 이벤트 Database 센서자료 Database 사진 Database Gateway(R-Pi) Internet 스마트폰 Web 초음파센서 IO Adapter 부저 ( 경보음 ) 인체감지센서 LED Bar 소리센서 DC Motor RGB LED( 경광등 ) 42
화재감시시스템 카메라 이벤트 Database 센서자료 Database 사진 Database Gateway(R-Pi) Internet 스마트폰 Web 불꽃센서 IO Adapter 워터펌프 온도센서 부저 ( 경보음 ) 가스센서 DC Motor 경광등 43
인터넷제어토이 카메라 구동 Database 사진 Database Gateway(R-Pi) Internet 스마트폰 Web 인체감지 IO Adapter 서보모터 IR 근접센서 LED Bar 초음파센서 DC Motor 소리센서 RGB LED 44
애완동물도우미 카메라 이벤트 Database 사진 Database 센서정보 Database Gateway(R-Pi) Internet 스마트폰 Web 인체감지센서 IO Adapter 서보모터 소리센서 조명 Led RGB Led DC Motor 45
스마트홈시스템 46
스마트홈시스템구성 47
스마트홈시스템 Gateway 소프트웨어 * 데이터흐름중심으로표현한 DFD(Data Flow Diagram) 48
Gateway ( 라즈베리파이 ) 실습 49
라즈베리파이구성 50
사양 제품사양 (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-a ccelerated OpenVG, and 1080p30 H.264 high-profile decode Capable of 1Gpixel/s, 1.5Gtex el/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 cloc k lane SDIO 51
라즈비안 wheezy 다운로드 라즈베리공식홈페이지에서라즈비안을다운받습니다. http://www.raspberrypi.org/downloads 52
win32diskimager 다운로드 win32diskimager 를다운받습니다. http://sourceforge.net/projects/win32diskimager/ 53
SD 카드에쓰기 win32diskimager 를실행해서 SD 카드에다운받은라즈비안을담습니다. 라즈비안 img 파일을선택해주고현재 SD 카드가연결되어있는드라이브를확인해준후에 write 버튼을눌러 SD 카드에라즈비안운영체제를넣어줍니다. 소요시간은 5 분내외입니다. 원래용량이얼마였건간에 56MB 로줄어듭니다. 이것은나중에설정으로변경이가능하니신경을안써도됩니다. 백업은반대로저장될폴더이름과이미지파일이름을입력하고 Read 클릭하면저장됨. 54
부팅 SD 카드를연결한후 micro USB 를연결하여전원을넣어주면켜지면서자동으로설치가되기시작합니다. 노트북환경에서는보이지않습니다. 55
UART 부팅과접속 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) 다운로드후설치 56
UART 부팅과접속 6. usb to UART 보드연결 7. 제어판 장치관리자에서 COM 포트확인 8. 로그인 9. $ifconfig 로아이피주소적어둔다. 라즈베리파이 IP 주소 : 57
라즈베리파이환경설정 $sudo raspi-config 58
라즈베리파이환경설정 1 Expand Filesystem 가장중요한설정입니다. 라즈비안을 SD 카드에담을때자동으로용량이작게설정이됩니다. 라즈비안을설치한후에는반드시이항목을선택해줌으로써나머지공간도사용할수있도록해주어야합니다. 59
라즈베리파이환경설정 2 Change User Password 라즈비안은리눅스운영체제인데기본으로최고관리자계정인 root 와일반계정인 pi 가존재합니다. 그중 pi 의초기암호는 raspberry 입니다. 60
라즈베리파이환경설정 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 환경으로부팅하는항목인데무시하셔도됩니다. 61
라즈베리파이환경설정 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 를눌러주시면됩니다. 62
라즈베리파이환경설정 * 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 특별한키보드가아니라면딱히설정해줄필요는없습니다. 63
라즈베리파이환경설정 5 Enable Camera 카메라를사용할것인지정하는옵션인데 Enable 하고리부팅하면설정됩니다. 6 Add to Rastrack 닉네임과이메일을입력하면라즈베리파이의분포도에자신의라즈베리파이가포함이됩니다. 아래의사이트에서등록된라즈베리파이의분포도를볼수있습니다. 64
라즈베리파이환경설정 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 으로정해줍니다. 65
라즈베리파이환경설정 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 를선택하여재부팅을합니다. 66
root 계정활성화 초기설정을마치면재부팅을합니다. 재부팅이되면로그인아이디와패스워드를묻는데당황하지마시고계정을적는란에는 pi 를입력하시고 Password 에는초기설정에서입력하신패스워드를입력해줍니다. 패스워드를수정하지않았다면 raspberry 를입력합니다. * 잘보시면 kkom login 이라고적혀있는데앞서초기설정에서 hostname 에적은명칭하고동일한것을알수있습니다. 라즈비안을설치하면 root 라는최고관리자아이디와 pi 라는일반아이디가생깁니다. 설치후 root 는활성화되지않으므로아래와같이패스워드를설정함으로써활성화시켜줍니다. sudo passwd root 67
계정설정 root 계정으로뭔가하다가문제가되면새로깔아야하는상황이발생되므로왠만하면 root 계정으로작업하는것은지양하고다른계정으로만작업하는것을권장합니다. pi 계정은기본적으로만들어지는계정이므로다른계정을만들고이계정은삭제하는것이좋습니다. 계정명은자신이정하고싶은것을적어주면됩니다. 여기서는 kuma119 라고하겠습니다. 아래의명령으로계정을하나만들어줍니다. sudo usseradd kuma119 아래의명령으로비밀번호를설정해줍니다. sudo passwd kuma119 아래의명령으로새로만든계정의디렉토리를만들어줍니다. sudo mkdir /home/kuma119 아래의명령어로새로만든계정의디렉토리의소유권을변경해줍니다. sudo chown kuma119 /home/kuma119 아래의명령으로기존의 pi 계정의설정파일을새로만든계정으로복사해줍니다. sudo cp /home/pi/.profile /home/kuma119 sudo cp /home/pi/.bashrc /home/kuma119 sudo cp /home/pi/.bash_logout /home/kuma119 68
계정설정 아래의명령으로 sudo 를쓸수있는계정을추가할수있도록환경파일을열어줍니다. sudo 라는것은 super user 만사용할수있는명령어를 sudo 를써줌으로써사용할수있게해주는명령어입니다. 우리는 super user 인 root 를사용하지않고따로만든계정을사용할것이므로프로그램들을설치할때 sudo 를사용해줍니다. sudo nano /etc/sudoers 맨마지막에있는구문을새로만든계정인 kuma119 로수정해줍니다. pi ALL=(ALL) NOPASSWD: ALL -> kuma119 ALL=(ALL) NOPASSWD: ALL 수정한후 ctrl+o 를누르면저장을할것인지묻는데엔터를누르면저장이됩니다. 저장을한후 ctrl+x 를눌러서나옵니다. 69
계정설정 아래의명령어를입력하여 pi 계정을로그아웃합니다. logout 새로운계정으로로그인한후아래의명령어로기존의 pi 계정을삭제해줍니다. sudo deluser pi 아래의명령어를입력하여홈디렉토리를삭제해줍니다. rm -rf /home/pi 70
프로그램및라이브러리다운로드 $sudo apt-get update 71
다운로드한프로그램및라이브러리설치 $sudo apt-get upgrade 설치하면용량이필요하다고하는데우리는여유가많으니까쿨하게 y 를입력하여진행해줍니다. 72
터미널접속 (Putty) - SSH 설정 라즈비안설치후나오는초기설정화면에서 ssh 항목을사용한다고설정을하였다면추가로설정할것은없습니다. 만약설정을하지않았다면아래의명령어를사용해환경설정화면으로진입하여 SSH 를사용한다고설정을해주셔야합니다. $sudo raspi-config 73
터미널접속 (Putty) - putty 다운로드 아래의주소로접속하여다운로드받습니다. http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 74
라즈베리파이 IP 확인 아래의명령어로라즈베리파이의 ip 를알아내어따로적어둡니다. $ ifconfig 75
터미널접속 (Putty) - 터미널접속 알아낸 ip 주소를 Host Name 에적고 SSH 를선택한후 Open 을눌러서접속합니다. 76
터미널명령어 / 디렉토리표시. 현재디렉토리.. 상위디렉토리 cd ls mkdir rmdir pwd cp mv rm cat more 디렉토리이동디렉토리내용출력디렉토리생성디렉토리삭제현재작업디렉토리절대주소출력파일복사 ( 디렉토리포함은 '-r') 파일이동파일삭제 ( 디렉토리포함은 '-r')( 강제삭제는 -f) 파일내용출력파일내용페이지단위로출력 less 파일내용페이지단위로출력 77
터미널명령어 켜는법은전원연결을하면됩니다. 전원선이연결되어있을경우는뺐다가다시연결하면됩니다. 전원을끄려면아래의명령어중하나를쓰시면됩니다. $sudo shutdown -h now $sudo halt 재부팅을하시고싶으시면아래의명령어중하나를쓰시면됩니다. $sudo shutdown -r now $sudo reboot 78
업데이트 아래의명령어를차례로입력하면서업데이트해줍니다. mysql 을사용하기위해설치하는업데이트입니다. $sudo npm install mysql ejs 는 nodejs 에서사용되는템플릿모듈입니다. $sudo npm install ejs express 는각요청을처리해줄수있는서버를구성해주는프레임워크입니다. $sudo npm install express 79
APM (Apache, MySql, PHP, phpmyadmin) 설치 Apache 설치 MySQL 설치 PHP 설치 phpmyadmin 설치 phpmyadmin 확인 phpmyadmin 사용 - 데이터베이스생성 phpmyadmin 사용 - 유저생성 phpmyadmin 확인 - 테이블생성 phpmyadmin 확인 - 테스트 80
APM 설치 - Apache 설치 아래의명령어를사용하여아파치를설치합니다. sudo apt-get install apache2 * 만약설치하려고할때아래와같은메시지가나온다면다음의명령어를실행해주고다시설치하면됩니다. 설치하는도중에설치하면용량이얼마나차지하는지알려주고설치할지말지여부를물어보는데쿨하게 y 를누르고엔터를쳐서계속설치해줍니다. 81
APM 설치 - Apache 설치 설치후에아래의명령어를실행하면새로운디렉토리가생긴것을알수있습니다. ls al /var/ /var/www/ 라는디렉토리인데이디렉토리는아파치웹서버가실행될때기본적으로보여주는디렉토리입니다. 예를들어브라우저에 http:// 라즈베리파이의아이피주소 / 로접속했을때보여주는디렉토리입니다. 82
APM 설치 - Apache 설정 이때 /var/www/ 디렉토리의소유권은 root 로되어있으므로아래의명령어를사용하여소유권변경을합니다. 여기서 kuma119 는새로만든계정입니다. 이렇게소유권을변경하는이유는 FTP 로파일을올릴때해당디렉토리에쓸수있는권한이있어야업로드가가능하기때문입니다. sudo chown kuma119 -R /var/www 아래의명령어를사용하여라즈베리파이가시작할때자동으로아파치를실행하도록해줍니다. sudo update-rc.d apache2 defaults 83
APM 설치 - Apache 설치 아래의명령어를실행하여새로시작하여테스트를해줍니다. shutdown -r now 라즈베리파이가재시작된후 /var/www 디렉토리에아래와같이 index.html 파일을만들어업로드해줍니다. <html><body> hello, World </body></html> 아파치는기본적으로포트는 80 입니다. 브라우저에서보통아이피를입력해서서버에접속을하게되면기본적으로 80 번포트로접속을시도하게되기때문에이렇게아이피만입력하면접속됩니다. 84
APM 설치 - MySQL 설치 아래의명령어를사용하여 mysql 을설치합니다. sudo apt-get install mysql-server mysql-client libmysqlclient-dev 설치할때용량이어느정도필요한지나오고계속할것인지물어봅니다. 이때 y 를입력하고엔터를치시면됩니다. * install 중간에 password 를입력하라고나오는데이때입력하는비밀번호는 mysql 의비밀번호이기때문에혼동하지않도록합니다. 85
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 86
APM 설치 - PHP 설치 아래의명령어를사용하여 php 를설치합니다. sudo apt-get install php5-common php5 libapache2-mod-php5 설치할때용량이어느정도필요한지나오고계속할것인지물어봅니다. 이때 y 를입력하고엔터를치시면됩니다. 아래의파일을하나만들어서 phpinfo.php 라는이름으로저장합니다. <? phpinfo();?> ftp 로 /var/www 디렉토리에업로드해주고아래의 url 로확인해봅니다. http:// 서버아이피 /phpinfo.php 87
APM 설치 - phpmyadmin 설치 아래의명령어를사용하여 phpmyadmin 을설치합니다. sudo apt-get install phpmyadmin 설치할때용량이어느정도필요한지나오고계속할것인지물어봅니다. 이때 y 를입력하고엔터를치시면됩니다. 88
APM 설치 - phpmyadmin 설치 phpmyadmin 은딱히다른툴로 mysql 을조작할필요없이웹서비스상에서직접 mysql 을조작할수있도록해주는 php 기반의프로그램입니다. 우리는 apache 를설치했기때문에 apache2 를선택해줍니다. 설치중에 phpmyadmin 접속시에사용될비밀번호를정해주고 ok 를선택하여나가줍니다. 89
APM 설치 - phpmyadmin 확인 접속하여제대로설치가되었는지확인해봅니다. http:// 서버아이피 /phpmyadmin Username 에는 root 를입력하고 Password 에는앞서설정한비밀번호를입력해줍니다. 90
APM 설치 - phpmyadmin 사용 - 데이터베이스생성 Database 탭을선택하고 Create new database 에 test_study 라고입력하고 collation 으로 utf8_general_ci 를선택해줍니다. collation 이란데이터베이스에서사용할언어셋을지칭하는데한글도사용하기위해 utf8_general_ci 를선택합니다. 91
APM 설치 - phpmyadmin 사용 - 유저생성 왼편을보시면 test_study 데이터베이스가추가된것을확인할수있습니다. 새로만든데이터베이스인 test_study 를사용하기위해서는사용할사용자를생성한후지정해주어야합니다. Privileges 탭을선택하고 Add a new User 를클릭하여유저생성을할수있는화면으로이동합니다. 92
APM 설치 - phpmyadmin 사용 - 유저생성 User name 은임의로지정을해주시고 Host 에는 Local 을선택해줍니다. Password 에는사용할비밀번호를입력해줍니다. Password 는지정하기귀찮다면 Generate password 로패스워드를자동으로생성해줄수있습니다. 생성된비밀번호는따로메모해두어야합니다. 데이터베이스의권한은따로공부를해야하기때문에유저명과동일한데이터베이스에관해모든권한을주도록하는 Create database with same name and grant all privileges 를선택해줍니다. 이옵션을선택해서유저를생성해줄경우동일한이름의데이터베이스가생성되기때문에앞의 11.6. 의데이터베이스생성은무시하고유저생성만해주셔도됩니다. 93
APM 설치 - phpmyadmin 사용 - 유저생성 Global privileges 는모든데이터베이스에관한권한을설정하는것이므로아무것도선택하지말고 Create User 버튼을눌러유저를생성해줍니다. 94
APM 설치 - phpmyadmin 사용 - 테이블생성 왼편의 test_study 데이터베이스를선택해줍니다. 95
APM 설치 - phpmyadmin 사용 - 테이블생성 SQL 탭을선택하고테이블생성쿼리를입력한후 Go 버튼을눌러실행해줍니다. 생성후에좌측에테이블이생성된것을확인할수있습니다. create table test_nodejs( idx int NOT NULL AUTO_INCREMENT, mem_name char(20), mem_tel char(20), mem_addr char(255), PRIMARY KEY (idx) ); 96
APM 설치 - phpmyadmin 사용 - 테스트 자료를입력합니다. 테이블을생성할때 idx 필드를자동증가로만들었기때문에 insert 구문에는입력하지않아도자동으로증가되어입력됩니다. INSERT INTO `test_nodejs` (`mem_name`, `mem_tel`, `mem_addr`) VALUES (' 터미널 ', '010-1234-5678', ' 서울시광진구구의동 '); INSERT INTO `test_nodejs` (`mem_name`, `mem_tel`, `mem_addr`) VALUES (' 우체국 ', '02-5687-1258', ' 서울시영등포구여의도동 '); INSERT INTO `test_nodejs` (`mem_name`, `mem_tel`, `mem_addr`) VALUES (' 횟집 ', '054-2345-2187', ' 경북포항시남구오천읍 '); 97
APM 설치 - phpmyadmin 사용 - 테스트 입력한자료를확인합니다. SELECT * FROM `test_nodejs` 98
APM 설치 - phpmyadmin 사용 - 테스트 입력된자료를수정해봅니다. 우체국의데이터를변경해보겠습니다. 우체국의데이터는 idx 가 2 이므로이것을조건으로하여수정하겠습니다. UPDATE `test_nodejs` SET mem_name=' 음식점 ', mem_tel='031-5418-6548', mem_addr=' 경기수원시팔달구 ' where idx=2 99
APM 설치 - phpmyadmin 사용 - 테스트 입력한자료를확인합니다. 우체국데이터가수정된것을알수있습니다. SELECT * FROM `test_nodejs` 100
phpmyadmin 사용 - 테스트 데이터를삭제해봅니다. 방금수정했던 idx 가 2 인데이터를삭제해보겠습니다. DELETE FROM `test_nodejs` where idx=2 101
phpmyadmin 사용 - 테스트 입력한자료를확인합니다. idx 가 2 인데이터가삭제된것을알수있습니다. SELECT * FROM `test_nodejs` 102
싱글보드컴퓨터스펙및가격비교 2014년 3월 10일기준으로본가격입니다. 마스보드 A10 : 71,280원 마스보드 A20 : 84,000원 큐비보드 : 86,900원 큐비보드2: 110,000원 비글본블랙 : 77,510원 라즈베리파이 : 53,350원 이외에도많은싱글보드컴퓨터가있지만일반적인것만비교해보았습니다. 싱글보드컴퓨터의스펙한계가있기때문에아직은라즈베리파이가가장싸면서도효율적인것을알수있습니다. 103
다른활용법들 싱글보드컴퓨터는사용전력이극히낮아서 24 시간동작해야하는웹서버나 SVN 같은저장소용도로사용할수있을뿐아니라각종전자센서과통신을이용하여스마트폰으로홈오토메이션까지구축하는것이가능합니다. 간단히 LED 를켜고끌수있습니다. LED 제어 초음파센서로써앞에있는물체의거리를감지하는것이가능합니다. 응용하면애완동물과하루종일놀아주는로봇을만드는것이가능합니다. 초음파센서활용 모터도간단히제어가가능하기때문에무선으로잡아주고스마트폰으로제어가가능합니다. 모터제어 라즈베리파이에연동시켜좀더로봇을쉽게만들수있도록해주는모듈도있습니다. 로봇활용 아래와같이클러스터링을이용하여슈퍼컴퓨터를제작하는것도가능합니다. 슈퍼컴퓨터동영상 라즈베리파이로영상을받을수가있기때문에감시카메라혹은아기돌보기용으로도가능합니다. 카메라활용 터치스크린도있기때문에모니터도필요가없습니다. 말그대로초소형컴퓨터가되는것이지요. TFT 터치스크린 라즈베리파이보다하위단계인아두이노로만들어본탱크입니다. 라즈베리파이로구현한다면외부에서 wifi 를통하여움직일수있습니다. 동영상링크 104
무선랜 wifi 동글설정 Wifi 동글 (iptime N100mini) 을 USB 포트에연결 105
무선랜설정 아래의명령어를실행하여라즈베리파이의네트워크를확인합니다. ifconfig 위의스크린샷에서보면 eth0 은유선이고 wlan0 은무선입니다. 그중 wlan0 의 Hwaddr 이연결한 wifi 동글의 mac address 입니다. 공유기에서 mac 인증을통하여무선연결을허용할경우이 mac address 를등록해주어야합니다. 106
설정 아래의파일을편집하여무선네트워크설정을수정합니다. 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 는암호화방식입니다. 107
삼바접속 삼바 (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 : 공유폴더의목록을보여주는옵션 108
삼바접속 4. 삼바재실행설정된내용이반영될수있도록삼바를재실행시켜준다. $sudo service samba restart 5. 공유폴더접속윈도우의탐색기혹은네트워크를열어서폴더주소칸에 \\192.168.1.238\ 과같이라즈베리파이의 IP 주소를적어주면아래와같이공유를설정해둔라즈베리파이폴더에접속할수있다. 여기에서새로운디렉토리를만들고, 파일의수정, 삭제, 복사, 이동이가능하게된다. 위치 : raspberrypi 아이디 : pi 패스워드 : raspberry 109
Smart_IoT 설계시스템 스마트농장실습 110
스마트농장개요 IoT 스마트농장관리시스템은 Gateway 시스템과모바일프로그램으로구성된다. 농장관리 Gateway 는온습도센서와조도센서에서수집한데이터를 Database 에저장하고, 센서데이터를판단하여다양한액츄에이터 ( 워터펌프, 팬, DC 모터, 식물 LED) 를구동한다. 또한안드로이드폰과의연동을통해원격지의사용자요청이발생할경우 Ehernet 이나 Wi-Fi 를통해센서데이터나영상정보를송신한다. 사용자는실제농장이나화분등으로실제와거의유사하게구현할수있다. Gateways 에는라즈베리파이기반으로리눅스운영체제를최적화한라즈비안이설치되어있다. 특히다양한액츄에이터의하나인워터펌프는실제화분이나농작물에물을줄수있도록실리콘튜브으로연결되어있다. 시험은가능한한실제현장에서발생하는상황과유사하게설계해야만학습에효과적이라판단된다. 주요기능 스마트폰을이용한스마트식물농장시스템 Actuator 의원격제어 토양의온도와습도를감지하여워터펌프를가동하여물주기 온도와습도를감지하여환기팬동작및외부창문제어 ( 모터 ) 조도상태를통한식물용 LED 작동제어 원격영상을통한실시간모니터링및 Actuator 의원격제어 센서 액츄에이터 온도습도센서 / 조도센서 워터펌프, 팬, DC Motor, RGB Led 111
스마트농장하드웨어구성과연결도 112
IO 어댑터보드 113
스마트농장소프트웨어구성 TCP/IP 서버실행 Internet 안드로이드앱 온도센서데이터수집 워터펌프제어 센서데이터조회 습도센서데이터수집 조도센서데이터수집 Gateway System 팬제어 DC 모터제어 액츄에이터제어 카메라영상확인 카메라영상 RGB Led 제어 이벤트수신 Database 조회 / 저장 웹서버실행 Internet 이벤트 DB 기후 DB 농장기후 DB 사진 DB 114
스마트농장소프트웨어기능 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 탑재 115
스마트농장소프트웨어기능 II 구분 규격 센서 S/W 센서에서다양한데이터를수집하고, 분석하는소프트웨어 액츄에이터 S/W 센서입력정보및사용자의요구에따라모터, 팬, 펌프와같은동작장치 를제어하는소프트웨어 Web Software Ethernet 을통해웹에접속하고, 웹서버와데이터베이스를이용하여 Gat eway 가수집한센서데이터를웹브라우저에서조회하고, 현장환경을영 상을통해확인하고설치된시설을직접제어 Smart Phone Application Android 기반으로하는 Mobile Application Software를통하여사용자는스마트폰으로 Gateway의센서에서수집된데이터및영상정보를수신하여적절한액츄에이터를구동제어. 사용자는스마트폰을통해이미지나동영상 Play기능, Gateway에저장된이벤트와 log기록확인가능. 116
스마트농장 Data Flow Diagram 117
GPIO Pin 과 wiringpi Pin 할당 118
MCP3208 ADC(12bit, SPI) 119
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 120
센서 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 121
센서 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; } 122
액츄에이터 Test I 스마트식물농장의액츄에이터는워터펌프, 팬, DC Motor, RGB Led 와같이 4 가지를사용한다. 토양이말라있을때물을뿌려주고, 실내농장의온도에따라환기팬을작동하고, 야간이나구름이낀날은청색과적색의식물 Led 를켜준다. 또한차양을올린다거나문을열기위해 DC 모터를사용하는것으로가정한다. 워터펌프 FAN DC Motor 식물 LED 5V, 12V 구동회로 RGB Led 구동회로 123
액츄에이터 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 124
스마트농장제어테스트 프로그램 : farmstory.c 참고 125
카메라구동테스트 카메라모듈사양 센서 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 입력하여설치를진행한다. 126
카메라캡쳐 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 127
동영상스트리밍 카메라모듈을이용하여 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 128
동영상스트리밍 $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 129
스마트농장 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) 메인화면 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 130
스마트농장서버와안드로이드앱연동 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) 131
스마트농장서버와안드로이드앱연동 3. 스마트폰 스마트농장앱실행 3. 카메라동영상스트리밍프로그램실행 카메라를확인할경우서버에서카메라쉡프로그램이동작되어야한다. 따라서현재상태에서 Putty 프로그램을하나더실행하여루트에서 pi@raspberrypi ~ $ sh mjpg.sh 를실행한상태에서스마트폰에서영상보기를선택하면화면이보일것이다. 132
133