60

라즈베리 파이로 구현하는 사물 인터넷 프로젝트

  • View
    369

  • Download
    12

Embed Size (px)

DESCRIPTION

국중진 지음 | 위키북스 임베디드 & 모바일 시리즈 _ 029 | ISBN: 9788998139933 | 35,000원 | 2015년 04월 8일 발행 | 596쪽

Citation preview

라즈베리 파이로 구현하는

사물 인터넷 프로젝트

지은이 국중진

펴낸이 박찬규 엮은이 이대엽 디자인 북누리 표지디자인 아로와 & 아로와나

펴낸곳 위키북스 전화 031-955-3658, 3659 팩스 031-955-3660

주소 경기도 파주시 문발로 115 세종출판벤처타운 311호

가격 35,000 페이지 596 책규격 188 x 240mm

초판 발행 2015년 04월 08일

ISBN 978-89-98139-93-3 (93000)

등록번호 제406-2006-000036호 등록일자 2006년 05월 19일

홈페이지 wikibook.co.kr 전자우편 [email protected]

Practical IoT Projects with Raspberry Pi

Copyright © 2015 국중진

All rights reserved.

First published in Korea in 2015 by WIKIBOOKS

이 책의 한국어판 저작권은 저작권자와의 독점 계약으로 위키북스가 소유합니다.

신 저작권법에 의해 한국 내에서 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다.

이 책의 내용에 대한 추가 지원과 문의는 위키북스 출판사 홈페이지 wikibook.co.kr이나

이메일 [email protected]을 이용해 주세요.

이 도서의 국립중앙도서관 출판시도서목록 CIP는

서지정보유통지원시스템 홈페이지(http://seoji.nl.go.kr)와

국가자료공동목록시스템(http://www.nl.go.kr/kolisnet)에서 이용하실 수 있습니다.

CIP제어번호 2015009055

라즈베리 파이로 구현하는 사물 인터넷 프로젝트

머리말

세상은 바야흐로 초연결시대를 향해 나아가고 있다. 모든 컴퓨팅 기기가 점차 고도화된 프로

세싱 능력과 다양한 유무선 네트워크를 지원하면서도 크기는 점차 작아지면서 비로소 사물

인터넷(IoT)과 웨어러블 컴퓨팅 플랫폼의 역할을 할 수 있게 됐다. 다양한 소형 컴퓨팅 플랫폼

중에서도 특히 라즈베리 파이는 가격이 저렴하면서도 유연함을 갖춘 오픈소스 하드웨어 플

랫폼으로서 사물인터넷 환경을 위한 최적의 플랫폼으로 그 위치를 확고히 다져나가고 있다.

라즈베리 파이는 회로도를 비롯한 대부분의 소프트웨어를 무료로 제공함으로써 다양한 변종

플랫폼과 제품이 만들어질 수 있는 토대를 마련하고 있다. 라즈베리 파이는 최근 ARM11 프로

세서 기반의 쿼드 코어 프로세서인 브로드컴의 BCM2836 AP(Application Processor)와 1GB

의 메모리를 탑재한 라즈베리 파이 2를 출시함으로써 이전 버전보다 훨씬 향상된 성능을 제

공하지만 종전의 모델과 동일한 가격(약 $35)을 유지하고 있다. 라즈베리 파이는 아두이노, 비

글본블랙, mbed 등의 여타 오픈소스 플랫폼과 마찬가지로 다양한 센서와 액추에이터를 연

결해서 제어할 수 있는 GPIO 인터페이스를 제공하며, 파이썬, 스크래치, C/C++, 자바와 같

은 대중적인 프로그래밍 언어를 사용할 수 있다. 또한 이러한 언어를 기반으로 한 다양한 라

이브러리가 제공되기 때문에 하드웨어나 소프트웨어 개발에 다소 경험이 부족한 초급 개발

자들도 어렵지 않게 원하는 디바이스를 제어하는 것이 가능하다. 물론 꼭 이렇게 개발을 목적

으로만 라즈베리 파이를 사용해야 하는 것은 아니다. 라즈베리 파이는 USB, 이더넷, HDMI 등

의 입출력 인터페이스를 제공함으로써 일반적인 컴퓨터나 미디어박스로 활용하는 것도 얼마

든지 가능하다. 라즈베리 파이는 리눅스를 기반으로 한 라즈비안(Raspbian), 피도라(Pidora),

아치리눅스(ArchLinux)를 공식 운영체제로 배포하고 있으며, 미디어박스를 위한 운영체제인

Raspbmc, OpenELEC도 배포하고 있다. 또한 공식적으로 배포되는 것은 아니지만 안드로이

드를 운영체제로 사용하는 것도 가능하며, 라즈베리 파이 2의 경우 마이크로소프트 윈도우 10

을 지원할 것으로 알려져 향후 귀추가 주목되고 있다.

라즈베리 파이는 초등학생부터 성인에 이르기까지 컴퓨터에 관심이 있는 누구라도 쉽게 접

근할 수 있는 다양한 수단을 제공한다. 어린이들의 경우 스크래치 같은 시각적인 프로그래

밍 언어를 통해 프로그래밍 언어나 객체 지향 프로그래밍에 대한 배경 지식이 없더라도 자신

4

머리말

이 원하는 프로그램을 만들어 볼 수 있으며, IT와 무관한 성인의 경우에도 파이썬 같은 간단

한 인터프리터 언어와 함께 각종 라이브러리를 활용하면 자신이 생각했던 아이디어를 직접

구현할 수 있다. 라즈베리 파이가 IoT의 붐과 함께 각광받고 있는 주된 이유 중 하나는 지금

까지는 아이디어만으로 그쳐야 했던 것들이 간단한 작업을 통해 상품화하는 것이 가능해졌

기 때문이다. 물론 완전한 상품을 만들기 위해서는 PCB 설계나 금형 설계 및 제작 등의 부

가적인 작업이 더 필요하겠지만 그 전단계인 프로토타입 구현까지는 누구나 손쉽게 해 볼

수 있는 것이다.

이 책에서는 라즈베리 파이를 가지고 할 수 있는 것들을 최대한 많이 다루고자 했다. 라즈베

리 파이의 기본적인 활용법을 비롯해 다양한 센서와 액추에이터의 사용법, 리모컨이나 스마

트폰을 이용한 원격 제어, 특정 이벤트를 감지하기 위한 푸시(Push) 서비스의 활용, 그리고

고급 개발자들을 위해 임베디드 시스템 관점에서 바라본 커널과 디바이스 드라이버에 대한

시스템 프로그래밍까지 라즈베리 파이와 관계된 거의 모든 활용법을 총망라하고 있다. 따라

서 스크래치, 파이썬, C/C++ 등 여러 가지 언어를 다양하게 사용했으며, 웹과의 인터페이스

를 위해 플라스크(Flask), Node.js도 활용하고 있다. 이 책에서 소개하는 NAS, 원격 CCTV, 얼

굴 인식 기반의 디지털 도어락과 같은 소규모 프로젝트는 실제로 라즈베리 파이가 얼마나 다

양한 분야에 폭넓게 활용될 수 있는지를 보여주는 좋은 사례가 될 것이다.

이 책을 집필하게 된 계기는 본인이 직접 라즈베리 파이를 만져보기 시작하면서 2000년대

초 임베디드 시스템을 처음 접해본 이후로 현재까지 나온 가장 이상적인(저가격, 고성능, 소

형) 플랫폼이라고 생각했기 때문이며, 지금까지와는 달리 꼭 전문가가 아니더라도 개발이 가

능하다라고 판단했기 때문이다. 이 책에서 소개하는 다양한 예제를 통해 여러분도 그동안 간

직하고 있었던 봉인된 아이디어를 세상에 펼쳐보일 수 있기를 바란다.

끝으로 이 책이 세상에 나올 수 있게 힘써주신 위키북스 박찬규 대표님께 감사드리며, 이제

곧 두 돌을 맞이하는 첫째 현호와 아직 뱃속에 있는 둘째 다롱이 때문에 임신과 육아에 지친

사랑하는 아내에게 미안함과 감사의 마음을 동시에 전한다.

5

이 책에서는 라즈베리 파이를 가지고 할 수 있는 거의 모든 것들을 방대하게 다루고 있다. 프

로그래밍 초보자나 아이들을 위해 스크래치를 통해 라즈베리 파이를 제어하는 방법을 자세

히 설명하고 있으며, 프로그래밍 경험이 있는 중급자를 위해 파이썬, C/C++ 기반의 라이브

러리를 활용해 각종 센서와 액추에이터를 제어하는 방법을 다루고 있다. 또한 라즈베리 파이

를 실용적으로 활용할 수 있게 웹 기반의 원격 제어 방법을 다룸으로써 사물인터넷(IoT) 환경

과도 잘 어우러질 수 있음을 보여준다. 라즈베리 파이에 연결된 조명을 스마트폰이나 리모컨

으로 제어할 수 있으며, 라즈베리 파이에 장착된 센서를 통해 움직임이 감지됐을 때 스마트폰

으로 푸시(Push) 알림을 보내주는 것도 가능하다. 끝으로 이 책에서는 고급 프로그래머를 위

해 라즈베리 파이의 커널과 디바이스 드라이버 개발을 위한 시스템 프로그래밍도 설명하고

있으므로 이 책을 통해 라즈베리 파이를 자신이 원하는 최적의 시스템으로 만들 수 있는 모

든 방법을 배울 수 있을 것이다.

책소개

6

약력

광운대학교 컴퓨터공학과 학사/석사

숭실대학교 컴퓨터학과 박사

(현) 전자부품연구원 실감정보플랫폼연구센터 위촉연구원

Marquis Who’s Who in the world 31st, 32nd, 33rd

IBC Man of the year 2014

IBC 2000 Outstanding Intellectuals of the 21st Century (8th edition)

IBC Top 100 Scientists 2014

IBC Leading Professionals of the World 2014

저서/역서

리눅스 커널 in a nutshell (프리렉)

언로킹 안드로이드 (프리렉)

안드로이드 ADK와 아두이노 (한국전자정보통신산업진흥회)

임베디드의 모든 것 (위키북스)

저자약력

7

목차

001.라즈베리

파이

웨어러블 컴퓨팅 19

홈 오토메이션 20

ZigBee 20

Z-Wave 22

사물인터넷(IoT) 25

8

002.라즈베리 파이 기본 설정 및

사용 방법

라즈베리 파이 고급 설정 38

라즈비안 데스크톱 구성 48

파일시스템 확장(resizing) 51

NOOBS 설치 53

003.라즈베리 파이를

위한 원격 터미널

SSH 기반의 원격 터미널 60

xrdp 기반의 원격 터미널 63

VNC(Virtual Network Computing) 65

004.라즈베리 파이

제어를 위한 라이브러리

라즈베리 파이의 GPIO 73

라즈베리 파이의 GPIO 제어를 위한 라이브러리 75

목차

9

005.파이썬

파이썬 설치 100

파이썬 사용법 102

파이썬 모듈을 이용한 GPIO 포트 제어 108

LED 제어 110

PWM을 이용한 LED 밝기 제어 112

006.스크래치

스크래치 설치 118

스크래치 구성 124

스크래치를 이용한 라즈베리 파이 제어 133

스크래치 예제 139

DC 모터 제어 140

스텝(Step) 모터 제어 143

초음파 센서 145

서보(Servo) 모터 148

카메라 149

가변저항(Potentiometer) 151

온도 센서 158

7-segment를 이용한 카운터 만들기 164

7-Segment의 기본 구조와 동작 방식 164

스크래치를 이용한 7-segment 제어 170

목차

10

PiFace 사용을 위한 라즈베리 파이 설정 178

PiFace 구동 181

스크래치 기반의 PiFace 제어 183

PiFace와 스크래치를 이용한 가전 제어 196

PiFaceDigital의 택타일(tactile) 스위치를

이용한 인터럽트 기반의 조명 제어 196

웹 기반의 PiFaceDigital 제어 197

007.PiFace

008.웹 프로그래밍

플라스크 기반의 웹 서버 201

플라스크 기반의 GPIO 포트 모니터링 207

플라스크 기반의 GPIO 포트 제어 211

009.스마트 홈

릴레이 222

PiFace를 이용한 가전기기 제어 225

푸시 서비스 229

구글 클라우드 메시징 229

Node.js 기반의 푸시 서버 애플리케이션 266

라즈베리 파이의 LED 상태 변화를 알리기 위한

푸시 서비스 274

목차

11

010.Char LCD를이용한 원격 전광판

Char LCD 기반의 문자 메시지 전송 294

011.그래픽 LCD

터치스크린 설정 303

그래픽 LCD의 콘솔 모드 지원 310

그래픽 LCD를 이용한 이미지 출력 314

그래픽 LCD의 동영상 재생 315

그래픽 LCD의 백라이트 제어 318

택타일 스위치를 이용한 전원 버튼 구성 320

012.GPS

USB-to-Serial 기반의 GPS 모듈 324

UART 기반의 GPS 모듈 325

구글맵 기반의 내비게이션 330

목차

12

014.원격 CCTV

CSI 카메라 모듈의 동작 확인 357

원격 CCTV 362

OpenCV 기반의 안면 인식 371

V4L2(Video4Linux2) 371

얼굴 인식 디지털 도어락 399

015.RPi NAS

삼바 서버 설정 406

USB 저장 장치 사용 411

리눅스 기반의 삼바 설정 416

013.IR 리모콘

LIRC 342

목차

13

016.라즈베리 파이C 프로그래밍

WiringPi 421

4-digit 7-segment를 이용한 전자시계 427

온습도 센서(DHT22/AM2302) 435

BCM 라이브러리 441

조도 센서(CdS cell) 450

저수준 C 프로그래밍 459

sysfs를 이용한 GPIO 제어 474

017.라즈베리 파이커널 빌드와디바이스 드라이버

ARM 컴파일러 설치 479

커널 소스 다운로드 492

커널 빌드 493

모듈 프로그래밍 507

디바이스 드라이버 프로그래밍 517

디바이스 드라이버 설계 및 구현 517

GPIO LED 드라이버 556

LDM 기반의 4-digits 7-segment 드라이버와

sys 파일시스템 569

0101

02

03

04

05

06

라즈베리 파이

라즈베리 파이기본 설정 및사용법

라즈베리 파이를 위한 원격 터미널

라즈베리 파이 제어를 위한 라이브러리

파이썬

스크래치

01_ 웨어러블 컴퓨팅

02_ 홈 오토메이션

03_ 사물인터넷(IoT)

01. 라즈베리 파이 15

1970년대 초 IBM과 HP에 의해 개인용 컴퓨터가 등장했다. 하지만 개인용 컴퓨터의 실제 보급이 시작

된 것은 1980년대에 이르러 16비트 IBM PC가 출시된 이후이며, 1990년대 32비트 컴퓨터와 인터넷의

보급에 힘입어 급격히 발전해 왔다. 2000년대에는 64비트 프로세서와 멀티 코어 프로세서들이 등장하

고, 스마트폰과 태블릿 PC의 보급이 이뤄지면서 현재의 모바일 생태계가 구축됐다.

최근 들어 데스크톱 PC 시장을 주도하던 인텔의 프로세서와는 달리 임베디드용 플랫폼에서 강세를 띠

던 ARM 프로세서가 데스크톱 시장을 넘보기 시작했다. ARM 프로세서는 저전력을 강점으로 하는 모

바일 플랫폼용 AP (Application Processor )로 각광받아왔으며, 스마트폰과 태블릿 시장에서 독보

적인 위치를 차지하고 있다. 이러한 장점을 지닌 ARM 프로세서를 기반으로 한 소형 PC 플랫폼이 대

거 등장하면서 초소형 PC 플랫폼 시장에 대한 경쟁이 가속화되고 있다. 현재까지 출시됐거나 출시 예

정인 초소형 PC 플랫폼으로는 라즈베리재단의 라즈베리 파이(Raspberry Pi ), TI의 비글본 블랙

(Beaglebone Black ), 인텔의 NUC, cstick의 코튼 캔디(Cotton Candy ), 리코매직의 MK802, 아

두이노(Arduino ), 탱고 PC (Tango PC ), 인텔의 에디슨(Edison )까지 다양한 플랫폼이 있다.

[그림 1-1] 초소형 PC 플랫폼

이러한 초소형 PC 플랫폼은 일단 크기가 손바닥 크기 정도에 불과하지만 다양한 주변 장치 인터페이스

를 제공함으로써 다양한 목적으로 활용할 수 있다. 특히 더 주목받는 이유는 많은 초소형 PC 플랫폼들이

오픈(open ) 플랫폼을 지향한다는 사실이다. 오픈 플랫폼이란 하드웨어의 구성과 관련된 회로도를 비

라즈베리 파이로 구현하는 사물 인터넷 프로젝트16

롯해 이 플랫폼에서 사용되는 운영체제까지 모두 공개된 플랫폼을 가리킨다. 따라서 이러한 오픈 플랫폼

의 구조를 변경해 새로운 플랫폼을 만들 수도 있고, 필요한 소프트웨어를 개발해서 사용하는 것이 가능

하다.

[그림 1-2] 오픈소스 하드웨어 플랫폼

앞서 나열한 플랫폼 가운데 탱고 PC, NUC는 베어본(barebone ) PC에 가까운 형태이며, MK802, 코

튼 캔디는 HDMI를 기본 인터페이스로 TV나 모니터에 연결해서 동작하는 형태다(이러한 플랫폼을 스

틱 PC라고도 한다). 완제품 형태로 출시되는 제품이기 때문에 하드웨어의 변경이나 추가적인 주변 장치

의 구성에 한계가 있다. 반면 아두이노를 비롯해 라즈베리 파이, 비글본 블랙, 에디슨, mbed와 같은 제

품은 임의의 하드웨어를 추가적으로 구성하기 쉽게 I/O 포트를 외부로 노출시킨다. 또한 기본 플랫폼 위

에 추가적으로 결합할 수 있는 각종 쉴드(shield )와 액세서리, 센서가 제공되기 때문에 원하는 목적의

특화된 제품을 만들 수 있다.

01. 라즈베리 파이 17

[그림 1-3] 아두이노 플랫폼(http://arduino.cc/en/Main/Products)

[그림 1-4] mbed 플랫폼(https://mbed.org/platforms/)

라즈베리 파이로 구현하는 사물 인터넷 프로젝트18

오픈 플랫폼의 선두 주자는 아두이노와 라즈베리 파이다. 아두이노는 ATmega의 AVR을 기반으로 간

단히 주변장치를 구성하고 제어하는 데 특화된 플랫폼으로서 2008년 말에 출시됐다. 최근에는 저능성

ARM 프로세서인 Cortex-M3를 기반으로 한 Arduino Due 제품의 출시 등으로 제품군을 확대해 나

가고 있다. 반면 라즈베리 파이는 라즈베리 파이 재단에서 기초 컴퓨터 과학 교육 증진을 목적으로 만든

저가의 소형 PC 플랫폼으로 ARM 프로세서를 기반으로 하며, 데비안 계열의 리눅스를 기본 운영체제로

탑재하고 있다(이 외에도 다양한 운영체제를 지원한다). 라즈베리 파이 역시 주변장치의 구성이 용이한

다양한 인터페이스를 제공함으로써 어린이를 위한 컴퓨터 교육을 비롯해 성인들의 DIY 컴퓨터용으로도

활용되고 있다. 상이한 두 가지 플랫폼을 연결해 제품을 구성하는 것도 가능하며, 인텔에서 출시한 에디

슨은 아두이노 전용 인터페이스를 제공함으로써 두 보드의 손쉬운 결합을 가능하게 한다.

[그림 1-5] 인텔의 에디슨

라즈베리 파이가 출시된 이후부터 현재까지 몇 차례에 걸쳐 하드웨어 부분의 업그레이드가 이뤄졌으

며, 2015년 초에는 라즈베리 파이 2 모델 B가 새롭게 출시됐다. 라즈베리 파이 2는 이전 모델인 라즈베

리 파이 B+ 모델과 동일한 하드웨어 인터페이스를 유지하지만 CPU (ARMv7, BCM2836 )와 메모리

(1GB ) 사양이 대폭 개선됐으며, 라

즈비안(Raspbian )을 비롯한 라즈베

리 파이 전용의 운영체제 외에도 마이

크로소프트의 윈도우 10을 지원한다.

게다가 하드웨어 사양이 업그레이드

됐음에도 가격은 기존 모델과 동일하

게 35달러를 유지하고 있다.

[그림 1-6] 라즈베리 파이 2 모델 B

01. 라즈베리 파이 19

앞에서 선보인 것 외에도 다양한 소형 플랫폼이 출시돼 있으며, 이러한 플랫폼이 주목받는 이유는 최근

컴퓨팅 분야에서 가장 이슈되는 키워드가 웨어러블(wearable ) 컴퓨팅과 사물인터넷(IoT: Internet

of Things )이기 때문이다.

웨어러블 컴퓨팅

웨어러블 컴퓨터 또는 웨어러블 디바이스는 안경, 시계, 옷 등에 장착 가능한 컴퓨팅 기기를 의미한다.

궁극적으로는 사용자가 거부감 없이 신체의 일부처럼 항상 착용하고 사용할 수 있으며, 인간의 능력을

보완하거나 배가시키는 것이 목표다. 언제 어디서나(항시성), 쉽게 사용할 수 있고(편의성), 몸에 착용

해서 사용하기에 편하며(착용감), 안전하고 보기 좋다는(안정성/사회성) 특성이 있다.

웨어러블 디바이스는 1960년대 MIT 미디어랩에서 최초로 시작됐으며, 1966년 MIT에서 헤드 마운티

드 디스플레이(HMD: Head Mounted Display )가 개발됐다. 현재는 구글의 구글 글래스, 애플, 삼

성, 소니 등에서 출시한 스마트워치 등 다양한 기기가 출시돼 있으며, 웨어러블 컴퓨터 시장은 더욱 활성

화될 것으로 전망되고 있다.

[그림 1-7] 웨어러블 디바이스

라즈베리 파이로 구현하는 사물 인터넷 프로젝트20

웨어러블 컴퓨팅 분야의 활성화를 위해 무엇보다 중요한 것은 소형의 저전력 플랫폼이며, 이러한 플랫폼

은 다양한 무선 통신을 지원해야 할 것이다. 웨어러블 디바이스는 각종 센서를 활용해 사용자 또는 외부

환경에 대한 정보를 수집할 수 있어야 하며, 이러한 정보를 처리해 원격의 기기를 제어하거나 애플리케

이션을 실행하는 등의 작업도 가능해야 한다.

라즈베리 파이가 웨어러블 컴퓨팅을 위한 플랫폼이라고 볼 수는 없겠지만 이러한 오픈 플랫폼을 활용함

으로써 다양한 센서의 활용법과 유무선 네트워킹 방법을 학습할 수 있을 것이며, 원격의 장치(컴퓨터,

가전 기기, 카메라 등)를 제어해 볼 수 있다.

홈 오토메이션

ZigBee

ZigBee라는 명칭은 벌집에 돌아온 꿀벌이 추는 꿀벌춤에서 유래한 것으로 IEEE 802.15.4 (a ) LR-

WPAN1 표준을 기반으로 2006년도에 재정된 유비쿼터스 센서 네트워크(USN: Ubiquitous Sensor

Network )를 위한 표준 프로토콜이다. ZigBee 장치는 메시(Mesh ) 토폴로지 방식을 이용함으로써 여

러 중간 노드를 거쳐 목적지(Sink, 또는 BaseStation )까지 데이터를 전송한다. ZigBee는 저속의 데

이터 전송, 긴 배터리 수명, 그리고 보안이 요구되는 분야에서 다양하게 활용될 수 있으며, 초기에는 철

새 도래지와 같은 생태계 감시, 산불 감시, 홈 네트워크 분야에 초점을 맞춰 연구가 이뤄졌다.

ZigBee는 전송 속도가 250kb/s로서 다소 느리며, 주기적 또는 간헐적인 데이터 전송이나 센서 및

입력 장치 등의 단순 신호 전달을 위한 데이터 전송에 가장 적합하다. 따라서 홈 네트워크 구성과 관

련된 무선 조명 스위치, 가내 전력량계, 교통 관리 시스템, 그리고 기타 근거리 저속 통신이 필요한

개인 및 산업용 장치 등에 활용되고 있다. ZigBee 표준은 블루투스나 와이파이(WiFi ) 같은 다른

WPAN (Wireless Personal Area Network, 무선 개인 네트워크) 기술에 비해 비교적 단순하고 저렴

한 기술을 목표로 만들어졌다.

1 Low Rate Wireless Personal Area Network

01. 라즈베리 파이 21

[그림 1-8] ZigBee 얼라이언스 홈페이지(http://www.zigbee.org)

ZigBee는 IEEE 802.15.4 (a ) 표준의 MAC, PHY 계층을 기반으로 저속의 WPAN을 대상으로 만들

어졌다. IEEE 802.15.4 (a )의 MAC, PHY 계층 위에 네트워크 계층과 애플리케이션 계층을 추가적으

로 구성하며, 애플리케이션 계층은 보안 서비스(Security Service ), 애플리케이션 객체(Application

Objects ), 직비 장치 객체(ZDO: ZigBee Device Objects ), 그리고 애플리케이션 지원 계층

(Application Support Sublayer )으로 구성된다.

라즈베리 파이로 구현하는 사물 인터넷 프로젝트22

[그림 1-9] ZigBee 프로토콜 스택

ZigBee 표준은 직비 장치 객체인 ZDO를 도입함으로써 장치의 역할 수행, 네트워크 참여 요청 관리,

장치 검색 및 보안 등과 관련된 여러 가지 기능을 담당하게 하고 있다.

ZigBee 노드는 데이터 통신이 필요하지 않은 대부분의 시간을 Sleep 모드로 유지함으로써 배터리 소

비를 최소화한다. 또한 블루투스와 비교했을 때 Sleep 상태에서 Wakeup 상태로 전환되는 시간이 약

1/100 정도(30ms )로 매우 짧기 때문에 응답 속도가 뛰어나다는 장점이 있다.

Z-Wave

Z-Wave는 시그마 디자인(Sigma Design )2과 Z-Wave 얼라이언스에서 개발한 상호운용성을 갖는

무선 홈 제어 기술로서 가정의 안전과 보안, 에너지, 접객업, 사무실 및 조명 제어와 관련된 상업적 용도

2 http://www.sigmadesigns.com/

01. 라즈베리 파이 23

에 활용 가능하다. Z-Wave는 ITU 표준으로 제정돼 있으며, Z-Wave 얼라이언스는 Z-Wave 표준을

기반으로 한 무선 홈 컨트롤(home control ) 제품을 구축하는 것에 동의하는 250개 이상의 제조사로

구성된 컨소시엄으로, 2014년까지 약 900개 이상의 Z-Wave 인증 제품이 출시됐다.

[그림 1-10] 시그마 디자인의 Z-Wave 제품과 솔루션

라즈베리 파이로 구현하는 사물 인터넷 프로젝트24

라즈베리 파이는 오픈 플랫폼으로써 GPIO 포트를 통해 다양한 센서와 액추에이터를 구성하고 제

어하는 것이 가능하다. 라즈베리 파이로 Z-Wave를 기반으로 한 홈네트워크 시스템을 구성할 경우

Z-Wave 프로토콜을 지원하는 모듈인 Razberry를 사용할 수 있다.

[그림 1-11] 라즈베리 파이용 Z-Wave 모듈(http://www.zwaveproducts.com/)

Z-Wave는 홈오토메이션, 스마트홈과 같은 홈네트워크 분야에서 가전기기의 제어를 위해 가장 폭넓

게 사용되는 RF 기술이다. 저전력, 양방향 RF, 메시(mesh ) 네트워크 기술은 센서와 장치를 제어하는

데 적합하며, Z-Wave는 주요 경쟁기술인 ZigBee와는 달리 서로 다른 제조사의 제품과 애플리케이션

수준에서 상호 운용이 가능하고 가격도 더 저렴하다. 이러한 Z-Wave의 장점으로 인해 현재 시장에는

100개 이상의 다양한 제품이 출시돼 있다.

01. 라즈베리 파이 25

[그림 1-12] Z-Wave 제품

사물인터넷(IoT)

1974년에 네덜란드의 한 세미나에서 니콜라스 네그로폰테 MIT대 교수는 “우리는 유비쿼터스적인

(ubiquitous, 어디든 존재하는) 분산된 형태의 컴퓨터를 보게 될 것이다. 아마 컴퓨터라는 것이 장난

감, 아이스박스, 자전거 등 가정 내 모든 물건과 공간에 존재하게 될 것이다.”라고 언급하면서 현재의 유

비쿼터스 컴퓨팅 철학에 대한 초석을 제안했다. 이후 1988년 마크 바이저(Mark Weiser )가 이 개념을

컴퓨터와 연결시켜 이전의 유비쿼터스 개념을 새로운 패러다임 이상의 수준으로 발전시켰다.

이러한 유비쿼터스 컴퓨팅의 개념이 진화되어 최근 대두되고 있는 네트워크 기술인 사물인터넷(IoT:

Internet of Things, 이하 IoT )으로 발전했다. IoT란 사람, 사물, 공간 등 모든 것들이 인터넷을 통해

라즈베리 파이로 구현하는 사물 인터넷 프로젝트26

서로 연결됨으로써 모든 것들에 대한 정보가 수집되어 공유되고 활용될 수 있게 하는 개념으로, 2005년

ITU에 의해 처음으로 사물인터넷의 개념이 정립되기 시작했다. 사물인터넷에서 사물(Things )에 해당

하는 것으로는 유무선 네트워크 환경에서 일반적으로 사용되는 단말뿐만 아니라 인간, 차량, 교량, 각종

전자장비, 문화재, 자연 환경을 구성하는 물리적 사물 등이 모두 포함된다. 사물인터넷은 이동통신망을

이용해 사람과 사물, 사물과 사물 간의 지능통신을 할 수 있는 M2M의 개념을 인터넷으로 확장해 사물

은 물론, 현실과 가상세계의 모든 정보와 상호작용하는 개념으로 진화했으며, 사물의 범위를 더욱 확대

해 만물인터넷(IoE: Internet of Everything )이라는 개념까지 탄생했다.

[그림 1-13] 인터넷 신산업 육성 방안의 목표 및 전략[4]

01. 라즈베리 파이 27

그림 1-13은 현 정부에서 추진 중인 인터넷을 통한 창조경제의 실현 방안으로서 인터넷 신산업 육성 방

안의 목표와 추진 전략을 보여준다. 이 그림에서도 다양한 인터넷 기반의 융합 서비스를 위한 플랫폼으

로 모든 것들이 연결될 수 있는 사물인터넷의 중요성이 강조되고 있다.

[그림 1-14] M2M, IoT, IoE의 포괄적 개념(출처: 산업연구원)

지구상에 존재하는 모든 것들이 무선 네트워크를 이용할 수 있는 수단을 갖추고 나면 아래 그림과 같이

시간, 장소, 그리고 사물의 유형에 관계없이 모두가 네트워크를 통해 연결될 수 있는 초연결세계를 실현

할 수 있다.

[그림 1-15] 시간, 장소, 사물의 제약 없는 초연결세계[5]

라즈베리 파이로 구현하는 사물 인터넷 프로젝트28

사물인터넷의 주요 기술로는 센싱 기술, 유무선 통신 및 네트워크 인프라 기술, 그리고 IoT 서비스 인터

페이스 기술이 있으며, 센싱 기술과 센서의 신호 처리, 유무선 통신을 위한 통신 기술과 통신 장비, 그리

고 이를 바탕으로 서비스를 제공하기 위한 각종 소프트웨어 기술이 복합적으로 연계되는 임베디드 시스

템을 통해 실현될 수 있을 것이다.

[그림 1-16] 사물인터넷(IoT)의 기술 로드맵(출처: SRI Consulting Business Intelligence)

M2M, IoT, IoE 생태계가 만들어지려면 다양한 센서를 통해 필요한 정보를 수집하고 유무선 네트워크

를 통해 통신이 가능한 플랫폼이 필요하며, 네트워크를 구성하는 모든 노드가 이러한 기능을 가질 수 있

으려면 초소형화될 수 있어야 한다.

초소형 플랫폼이 강조되는 이유는 초소형 플랫폼이 웨어러블 컴퓨팅이나 IoT 같은 현 시대의 연구 방향

과 부합되기도 하지만 이와는 다른 관점에서 현 정부의 출범과 동시에 가장 강조되고 있는 키워드인 ‘창

조’와도 관련이 있다. 미래창조과학부는 청와대에서 대통령에게 2013년도 업무계획을 보고하면서 학생

들부터 소프트웨어 교육을 시행하겠다고 하면서 “21세기 언어인 소프트웨어를 전 세계에서 가장 잘 활

용할 수 있는 국민의 양성”을 위해 마이크로소프트 스몰 베이직(Small Basic )과 같이 손쉽게 소프트웨

어 개발 언어를 습득할 수 있는 프로그램을 개발하고, 소프트웨어 창의 캠프 등을 통해 초·중등 학생들

의 소프트웨어에 대한 이해와 관심을 강조했다.

01. 라즈베리 파이 29

최근에는 사물인터넷 서비스를 좀 더 편리하게 구현하고 관리할 수 있는 기술이 개발되고 있으며, 사물

인터넷 정보 전송, 메시지 처리, 통신 프로토콜 등에 대한 기술의 중요성이 부각되고 있다.

REST (Representational State Transfer )는 HTTP (Hyper Text Transfer Protocol )의 주요 저자

중 한 사람인 로이 필딩(Roy Fielding )이 2000년도 박사학위 논문을 통해 소개한 것으로서, 웹과 같

은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. REST에서는 리소스라는 이

름으로 인터넷 상의 문서, 이미지, 서비스 같은 정보를 지칭하고 클라이언트 서버의 네트워크 환경에서

리소스의 CRUD (Create, Read, Update, Delete ) 처리를 지원한다.

MQTT (Message Queuing Telemetry Transport )는 제한된 컴퓨팅 성능과 빈약한 네트워

크 연결 환경에서의 동작을 고려해 설계된 대용량 메시지 전달 프로토콜로서 IBM에 의해 개발되고

OASIS (Organization for the Advancement of Structured Information Standards )에 의해 사

물인터넷 표준 프로토콜로 선정된 기술이다. MQTT는 국내 통신사들의 푸쉬(PUSH ) 서버에서도 사용

되고 있으며, 특히 경량화된 구조로 인해 라즈베리 파이에도 적용할 수 있다.

XMPP (eXtensible Messaging and Presence Protocol )는 XML을 기반으로 한 메시지 지향 미들

웨어용 통신 프로토콜이다. XMPP는 인스턴트 메신저를 위해 IETF에서 제정한 국제 표준 프로토콜로

서 다수의 클라이언트 간에 Publish/Subscribe 구조를 바탕으로 확장성 있는 XML 기반 실시간 메시

지 교환을 가능하게 한다.

CoAP (Constrained Environments Application Protocol )은 인터넷에서 센서 노드와 같이 제

한된 컴퓨팅 성능을 갖는 디바이스들의 통신을 실현하기 위해 IETF의 CoRE (Constrained RESTful

Environments ) 워킹 그룹에서 만들고 있는 응용 계층 표준 프로토콜이다. 웹 서비스를 구현할 때 제

약이 많은 환경에서 TCP, HTTP

같은 무거운 통신 프로토콜을 사용

할 수 없어 웹 서비스를 할 수 있는

가벼운 프로토콜을 목적으로 설계

된 기술이다.

[그림 1-17] CoAP 프로토콜 계층 구조

라즈베리 파이로 구현하는 사물 인터넷 프로젝트30

그림 1-17에서 CoAP는 센서 네트워크의 표준 프로토콜인 IEEE 802.15.4를 기반으로 하며, 네트

워크 계층인 IPv6 프로토콜과 IEEE 802.15.4 표준과의 인터페이스를 위한 계층(Adaptation )으로

6LoWPAN 프로토콜이 위치한다. CoRE 워킹그룹에서는 TCP와 UDP를 포함하는 전송(transport )

계층을 포함한 상위 응용 계층에서 M2M 노드 간에 리소스에서 발생된 이벤트 정보를 주고받을 것

인지에 대해 REST (Representational State Transfer ) 기반의 프로토콜을 제정하고 있다.

[그림 1-18] CoAP의 메시지 형식[6]

2014년 5월에 발표된 정부의 사물인터넷 기본계획을 보면 사물인터넷의 서비스 범주를 개인 IoT, 산업

IoT, 공공 IoT의 세 개 영역으로 분류하고 있다.

[그림 1-19] 개인 IoT

01. 라즈베리 파이 31

개인 IoT에는 자동차, 헬스케어, 스마트 홈 등이 포함되며, 개인의 편의, 안전, 삶의 질 향상을 위한 다

양한 서비스 제공이 이뤄질 수 있다.

[그림 1-20] 산업 IoT

산업 IoT는 제조/생산 관리, 농장 관리, 생필품 등에 적용 가능한 IoT 기술이며, 설비의 모니터링, 위험

물 감시, 생산유통이력 관리, 행태 분석 등을 포함한다.

[그림 1-21] 공공 IoT

마지막으로 공공 IoT는 재난재해 감시, 환경 감시, 에너지 관리 등을 위해 범국가적으로 제공될 수 있는

IoT 기술에 해당한다.

이제 본격적으로 라즈베리 파이가 이러한 IoT 환경에서 어떻게 활용될 수 있을지 알아보자.

0102

03

04

05

06

07

라즈베리 파이기본 설정 및사용법

라즈베리 파이를 위한 원격 터미널

라즈베리 파이 제어를 위한 라이브러리

파이썬

스크래치

PiFace

01_ 라즈베리 파이 고급 설정

02_ 라즈비안 데스크톱 구성

03_ 파일시스템 확장(resizing)

04_ NOOBS 설치

01 라즈베리 파이

02. 라즈베리 파이 기본 설정 및 사용법 33

라즈베리 파이(Raspberry Pi )는 영국의 라즈베리 파이 재단이 기초 컴퓨터 과학 교육을 증진시키기 위

해 만든 싱글 보드 컴퓨터다. 라즈베리 파이는 그래픽 성능이 뛰어나면서도 가격이 저렴하다는(모델 A:

25달러, 모델 B/B+: 35달러, RPi2 모델 B: 35달러) 특징이 있다.

라즈베리 파이는 브로드컴의 BCM2835 (라즈베리 파이 2는 BCM2836 사용) 단일 칩 시스템을 사용하

며, 이 칩에는 ARM1176JZF-S 700MHz 프로세서(라즈베리 파이2는 ARMv7 쿼드 코어 900MHz ),

비디오코어 IV GPU와 256 메가바이트 RAM (모델 B와 B+는 512MB, 라즈베리 파이 2는 1GB )이

들어 있다. 라즈베리 파이는 SD 카드를 저장장치로 사용한다. 라즈베리 파이 재단에서는 라즈베리 파이

에 포팅한 데비안과 아치 리눅스, QtonPi 등의 리눅스 배포판을 제공한다. 또한 재단 측에서는 라즈베

리 파이의 주 프로그래밍 언어인 파이썬에 BBC 베이직, C 언어, 펄 등을 지원하는 도구를 계획 중이다.

라즈베리 파이를 위한 운영체제는 라즈비안(Raspbian ), 아치리눅스(Arch Linux ), 리스크 OS (RISC

OS ), OpenElec, RaspBMC, Pidora가 있으며, 이처럼 다양한 운영체제를 쉽게 설치하고 전환하며

사용할 수 있게 NOOBS (New Out of Box Software )를 제공한다. 2015년 초 새로 출시된 라즈베

리 파이 2는 마이크로소프트의 윈도우10의 설치를 지원할 것으로 알려져 기대가 되고 있다.

[그림 2-1] 라즈베리 파이 공식 운영체제

라즈베리 파이로 구현하는 사물 인터넷 프로젝트34

[그림 2-2] NOOBS 실행 화면

라즈베리 파이를 위한 다양한 운영체제 가운데 가장 일반적으로 사용되는 운영체제는 라즈비안

(Raspbian )이다. 각 운영체제별 주요 특징은 다음과 같다.

[표 2-1] 라즈베리 파이 운영체제의 주요 특징

운영체제 특징

Raspbian

[Debian Wheezy]

Raspberry Pi + Debian의 합성어로 데비안 리눅스 기반의 라즈베리 파이 운영체제

이며, 가장 기본적이며 범용적인 라즈베리 파이용 운영체제다.

Arch Linux

[A lightweight Linux distribution]ARM 프로세서의 지원을 위해 포팅된 아치 리눅스 버전이다.

RISC OS

[A non-Linux distribution]ARM 프로세서를 위한 실시간 운영체제로 작고 빠르다.

OpenElec

[An XBMC Media Centre]XBMC 미디어 센터 지원을 위한 운영체제

02. 라즈베리 파이 기본 설정 및 사용법 35

운영체제 특징

RaspBMC

[An XBMC Media Centre]XBMC 미디어 센터 지원을 위한 운영체제

Pidora

[Fedora Remix]Pi + Fedora

라즈비안은 라즈베리 파이를 위한 데비안 리눅스이며, 기본적인 시스템의 사용법은 데비안 계열의 리눅

스 배포판인 데비안, 우분투와 크게 다르지 않다. 리눅스를 사용해본 경험이 있다면 라즈베리 파이는 크

기가 작은 리눅스 PC라 해도 과언이 아니다.

라즈베리 파이에 라즈비안을 설치하려면 앞서 소개한 NOOBS를 사용하거나 라즈비안 이미지를 내려

받아 SD 카드에 넣으면 된다. 라즈비안 이미지는 압축된 zip 파일 또는 토렌트(torrent )를 이용해 다

운로드할 수 있다. 현재까지 출시된 모든 라즈비안 이미지는 http://downloads.raspberrypi.org/

raspbian/images/를 통해 확인할 수 있다.

[그림 2-3] 라즈비안 이미지

라즈베리 파이로 구현하는 사물 인터넷 프로젝트36

또한 최신 버전의 라즈비안 이미지를 다운로드하려면 http://downloads.raspberrypi.org/

raspbian_latest을 사용할 수 있다.

라즈비안 이미지의 압축 파일명은 “201Y-MM-DD-wheezy-raspbian.zip” 형태이며, 파일명 앞

에 해당 이미지의 출시일이 표기돼 있다. 최신 버전인 2015-02-17-wheezy-raspbian.zip 파일을

다운로드하고 압축을 풀면 2015-02-17-wheezy-raspbian.img라는 파일이 만들어지며, 이 파일

을 Win32DiskImager를 이용해 SD 카드에 기록하면 된다.

[그림 2-4] Win32DiskImager

리눅스의 경우 우분투에서는 ImageWriter 패키지를 설치해 라즈비안 이미지를 SD 카드에 쓰거나 셸

에서 dd 명령을 이용해 기록하는 것도 가능하다.

$ sudo dd bs=4M if=2015-02-17-wheezy-raspbian.img of=/dev/sdd

$ sync

위의 명령에서 of=/dev/sdd는 SD 카드를 가리키는 장치 파일을 나타내며, sdd 대신 sdb, sdc 같은

다른 이름의 파일에 마운트될 수도 있다. 따라서 mount 명령을 사용하거나 dmesg 명령을 이용해 SD

카드가 어떤 장치 파일에 마운트돼 있는지 확인해야 한다. sync 명령은 저장매체를 사용할 때 동기화 내

지는 플러시(flush )를 요청하기 위한 명령어로서, 이 명령을 사용하지 않을 경우 SD 카드에 이미지 파

일의 기록이 이뤄지지 않을 수 있다.

자세한 라즈비안 이미지의 설치 방법은 라즈베리 파이 홈페이지(http://www.raspberrypi.org/

documentation/installation/installing-images/README.md )를 참고한다.

02. 라즈베리 파이 기본 설정 및 사용법 37

SD 카드에 라즈비안 이미지를 기록하고 나면 SD 카드를 라즈베리 파이의 SD 카드 슬롯에 삽입하고 마

이크로 USB를 통해 전원을 인가함으로써 라즈베리 파이가 부팅될 수 있다. 라즈베리 파이는 HDMI 또

는 AV 단자를 통해 모니터나 TV 등의 다양한 디스플레이 장치를 연결할 수 있다. 또한 입력을 위해서는

USB 키보드와 마우스를 연결하면 된다. 부팅이 되고 나면 라즈베리 파이는 일반 PC와 다를 바 없다.

[그림 2-5] 라즈비안 기반의 라즈베리 파이

부팅이 완료된 다음에는 일반 PC를 사용할 때와 마찬가지로 디스플레이 장치의 해상도 설정, 키보드 언

어 설정, 무선 인터넷 설정 등의 다양한 환경설정이 필요할 것이며, 라즈베리 파이를 어떤 목적으로 사용

하느냐에 따라 각종 프로그램을 설치해야 할 것이다.

라즈베리 파이로 구현하는 사물 인터넷 프로젝트38

라즈베리 파이 고급 설정

라즈베리 파이는 초소형 PC 플랫폼으로서 기본적인 환경설정 프로그램을 제공한다. 환경설정을 위해서

는 root 계정을 통해 raspi-config 명령을 사용해야 한다. 환경설정 메뉴에는 파일시스템의 확장, 패스

워드 설정, 부팅 모드 설정, 언어 설정, 카메라 설정 등이 있다.

raspi-config은 라즈베리 파이의 기본 운영체제인 라즈비안의 기본적인 설정 도구로 Alex Bradbury

가 개발했다. 터미널에서 raspi-config 명령을 입력해 실행할 수 있다.

$ sudo raspi-config

그럼 다음과 같은 화면이 나타난다.

[그림 2-6] raspi-config 메뉴

메뉴를 이동할 때는 방향키(위/아래)를 이용하며, 선택된 메뉴가 빨간색 음영을 통해 표시된다. 오른

쪽 방향키와 탭(Tab ) 키는 <Select>와 <Finish> 메뉴로 이동하는 데 사용할 수 있다. 시간대(Time

zone )처럼 하위 목록이 많은 메뉴에 대해서는 첫 문자를 키보드로 입력하면 바로 해당 위치로 이동할

수 있다.

02. 라즈베리 파이 기본 설정 및 사용법 39

[그림 2-7] Time zone 메뉴에서 ‘Z’ 또는 ‘z’를 입력한 모습

raspi-config는 라즈베리 파이의 설정을 위한 도구이며, 현재 시스템의 설정 내용은 /boot/config.

txt 파일에 저장된다. 일부 설정은 변경 시 재부팅이 필요한 경우도 있다.

파일시스템 확장(Expand Filesystem)

3GB를 초과하는 SD 카드에 라즈비안 이미지를 직접 설치하는 경우 SD 카드의 나머지 부분이 사용되

지 않기 때문에 이 옵션을 이용해 나머지 부분을 사용할 수 있게 해야 한다. NOOBS를 이용해 라즈비안

을 설치한다면 설치 과정에서 자동으로 파일시스템을 확장하기 때문에 이 과정이 필요하지 않다.

패스워드 변경(Change User Password)

라즈비안의 기본 사용자 계정은 pi, 패스워드는 raspberry로 설정돼 있다. 이 옵션을 통해 pi 계정의 패

스워드를 변경할 수 있다.

라즈베리 파이로 구현하는 사물 인터넷 프로젝트40

부팅 환경설정(Enable Boot to Desktop/Scratch)

라즈베리 파이를 텍스트 기반의 콘솔 모드, 그래픽 기반의 데스크톱 모드, 또는 스크래치 프로그래밍을

위한 모드로 부팅되게 설정할 수 있다.

[그림 2-8] 부팅 모드 설정

국제화(Internationalisation Options)

이 옵션은 언어, 시간대, 키보드 등을 설정하는 하위 메뉴를 제공한다.

[그림 2-9] 국제화 설정

언어 설정(Change Locale)

영어의 경우 en_US ISO-8859-1, en_US ISO-8859-15, en_US.UTF-8을 선택하고, 한글 지원

을 위해서는 ko_KR.EUC-KR, ko_KR.UTF-8을 선택하면 된다. 아래 그림과 같이 여러 개를 선택할

수 있으며, 선택된 언어 중 어떤 언어를 기본 언어로 사용할지는 다음 단계에서 선택할 수 있다.

02. 라즈베리 파이 기본 설정 및 사용법 41

[그림 2-10] 언어 선택

[그림 2-11] 기본 언어 선택

라즈베리 파이로 구현하는 사물 인터넷 프로젝트42

시간대 설정(Change Timezone)

이 메뉴는 시간대 설정을 위한 메뉴로, 대한민국 표준 시간대를 선택하려면 아래 그림과 같이 Asia를 먼

저 선택하고, 다음 화면에서 ‘S’ 키를 눌러 서울(Seoul )을 선택하면 된다.

[그림 2-12] 대한민국 표준 시간대 선택

키보드 설정(Change Keyboard Layout)

언어에 따라 다른 키보드가 사용되며, 키보드마다 키의 구성이나 배치가 다를 수 있다. 자신이 사용 중인

키보드 모델명을 통해 키보드를 선택할 수 있으며, 데스크톱 PC의 경우에는 인텔 호환 키보드를 선택하

면 된다.

카메라 모듈 지원(Enable Camera)

라즈베리 파이의 카메라 모듈을 사용하려면 이 옵션을 통해 카메라 모듈을 활성화해야 한다. 이때 최소

128MB의 메모리가 GPU에 할당돼 있어야 한다.

02. 라즈베리 파이 기본 설정 및 사용법 43

[그림 2-13] 카메라 모듈 지원 기능의 활성화

Rastrack 사용(Add To Rastrack)

Rastrack은 구글맵을 기반으로 한 라즈베리 파이의 사용자 위치 분포도로서, 사용자가 많은 지역이 뜨

겁게 표시한다. 이 기능은 2012년 Ryan Walmsley이 만들었으며, http://rastrack.co.uk를 통해 확

인할 수 있다.

[그림 2-14] Rastrack 활성화

라즈베리 파이로 구현하는 사물 인터넷 프로젝트44

‘OK’를 선택하면 이름과 닉네임, 그리고 이메일 주소를 입력해야 하며, 설정 후 재부팅해야 한다.

[그림 2-15] Rastrack 홈페이지 – 세계 각국의 라즈베리 파이 사용자 분포

오버클럭(Overclock)

라즈베리 파이 CPU는 기본 클럭이 700MHz이지만, 최대 1000MHz (1GHz )까지 오버클럭할 수 있

다. 하지만 CPU 클럭을 너무 높이면 시스템이 불안정해질 수 있으므로 주의해야 한다.

[그림 2-16] CPU 오버클럭에 대한 주의 메시지

02. 라즈베리 파이 기본 설정 및 사용법 45

[그림 2-17] 오버클럭 옵션

고급 옵션(Advanced Options)

오버스캔, 호스트명 설정, 메모리 분할(비디오 메모리 크기 설정), SSH, SPI, Audio, 업데이트 기능은

고급 옵션을 통해 설정할 수 있다.

[그림 2-18] 고급 옵션(Advanced Options)

Hostname

네트워크를 통해 노출된 라즈베리 파이의 호스트명을 설정한다.

[그림 2-19] 호스트명으로 사용 가능한 문자 조합

라즈베리 파이로 구현하는 사물 인터넷 프로젝트46

[그림 2-20] 호스트명 설정

라즈베리 파이를 재부팅하고 나면 프롬프트에 표시되는 호스트명이 RPi로 바뀐 것을 확인할 수 있다.

[그림 2-21] 변경된 호스트명 확인

메모리 분할(Memory Split)

라즈베리 파이의 메모리(RAM ) 중 GPU에 할당할 메모리 크기를 설정한다. 아래 그림과 같이

16/32/64/128/256과 같은 형태로 GPU에 할당할 메모리 크기를 MB 단위로 입력하면 된다.

[그림 2-22] 비디오 메모리 크기 설정

02. 라즈베리 파이 기본 설정 및 사용법 47

SSH(Secure SHell)

라즈베리 파이에 대한 원격 터미널 로그인을 위해 SSH를 사용하거나 라즈베리 파이와 호스트 컴퓨터 간

파일 전송을 위해 SFTP를 사용하고자 한다면 SSH를 활성화해야 한다.

[그림 2-23] SSH 활성화 및 비활성화

SPI(Serial Parallel Interface)

PiFace와 같이 SPI를 기반으로 한 통신이 필요한 경우 커널 모듈인 SPI를 적재시킬 수 있다.

[그림 2-24] SPI 활성화 및 비활성화

[그림 2-25] SPI 활성화 완료

라즈베리 파이로 구현하는 사물 인터넷 프로젝트48

AUDIO

audio 메뉴에서는 오디오 출력을 위한 장치로 헤드폰 잭 또는 HDMI를 선택할 수 있다.

[그림 2-26] 오디오 출력 방법 선택

UPDATE

업데이트 메뉴에서는 라즈베리 파이 소프트웨어의 온라인 업데이트를 실행할 수 있다.

라즈비안 데스크톱 구성

라즈베리안은 윈도우나 리눅스 계열의 운영체제와 마찬가지

로 다양한 애플리케이션이 구비돼 있다. 화면 하단에는 시

작 버튼을 비롯해 파일매니저, 웹브라우저의 바로가기 아

이콘이 등록돼 있다. 시작 버튼을 눌러보면 아래 그림과 같

이 Accessories, Education, Electronics, Graphics,

Internet, Other, Programming, Sound & Video,

System Tools, Preferences 등으로 애플리케이션 카테고

리가 나타나며 각 카테고리마다 주요 애플리케이션이 등록돼

있음을 확인할 수 있다.

Accessory 메뉴의 구성은 그림 2-27과 같고, 파일 매니저

(File Manager ), 계산기(Galculator ), 이미지 뷰어(Image Viewer ), 에디터(Leafpad ), 터미널

(LXTerminal, Root Terminal ) 등의 애플리케이션으로 구성돼 있다.

[그림 2-27] Accessories 메뉴

[그림 2-28] Education 메뉴

02. 라즈베리 파이 기본 설정 및 사용법 49

AUDIO

audio 메뉴에서는 오디오 출력을 위한 장치로 헤드폰 잭 또는 HDMI를 선택할 수 있다.

[그림 2-26] 오디오 출력 방법 선택

UPDATE

업데이트 메뉴에서는 라즈베리 파이 소프트웨어의 온라인 업데이트를 실행할 수 있다.

라즈비안 데스크톱 구성

라즈베리안은 윈도우나 리눅스 계열의 운영체제와 마찬가지

로 다양한 애플리케이션이 구비돼 있다. 화면 하단에는 시

작 버튼을 비롯해 파일매니저, 웹브라우저의 바로가기 아

이콘이 등록돼 있다. 시작 버튼을 눌러보면 아래 그림과 같

이 Accessories, Education, Electronics, Graphics,

Internet, Other, Programming, Sound & Video,

System Tools, Preferences 등으로 애플리케이션 카테고

리가 나타나며 각 카테고리마다 주요 애플리케이션이 등록돼

있음을 확인할 수 있다.

Accessory 메뉴의 구성은 그림 2-27과 같고, 파일 매니저

(File Manager ), 계산기(Galculator ), 이미지 뷰어(Image Viewer ), 에디터(Leafpad ), 터미널

(LXTerminal, Root Terminal ) 등의 애플리케이션으로 구성돼 있다.

[그림 2-27] Accessories 메뉴

[그림 2-28] Education 메뉴

Educa t ion 메뉴는 수식의 작성과 편집을 위한

Mathematics, 블록 기반의 프로그래밍 도구인 스크래치

(Scratch ) 등으로 구성돼 있다.

Internet 메뉴에는 웹브라우저인 미도리(Midori )와 넷

서프(NetSurf )가 있으며, 무선 인터넷 설정을 위한

wpa_gui로 구성돼 있다.

Programming 메뉴에는 아두이노를 위한 아두이노

IDE, 파이썬 프로그래밍을 위한 IDLE, IDLE3 등이 구

성돼 있다.

[그림 2-29] Internet 메뉴

[그림 2-30] Programming 메뉴

라즈베리 파이로 구현하는 사물 인터넷 프로젝트50

Sound & Video 메뉴에는 동영상 재생에 많이 사

용되는 VLC 미디어 플레이어가 설치돼 있다.

System Tools 메뉴에는 태스크 매니저가 구성돼

있으며, 윈도우의 작업 관리자와 마찬가지로 현재

실행 중인 태스크 정보를 보여준다.

[그림 2-33] System Tools의 태스크 매니저

[그림 2-31] Sound & Video 메뉴

[그림 2-32] System Tools 메뉴

[그림 2-34] Preferences 메뉴

02. 라즈베리 파이 기본 설정 및 사용법 51

Sound & Video 메뉴에는 동영상 재생에 많이 사

용되는 VLC 미디어 플레이어가 설치돼 있다.

System Tools 메뉴에는 태스크 매니저가 구성돼

있으며, 윈도우의 작업 관리자와 마찬가지로 현재

실행 중인 태스크 정보를 보여준다.

[그림 2-33] System Tools의 태스크 매니저

[그림 2-31] Sound & Video 메뉴

[그림 2-32] System Tools 메뉴

[그림 2-34] Preferences 메뉴

Preferences 메뉴에는 키보드/마우스 설정, 모니

터 설정, 데스크톱 세션 설정을 위한 프로그램으로

구성돼 있다.

파일시스템 확장(resizing)

라즈베리 파이의 기본 설정은 SD 카드를 4GB까지만 인식하게 돼 있다. 따라서 4GB를 초과하는 SD

카드를 사용하는 경우 4GB 이상의 나머지 영역을 사용할 수 있도록 파일시스템 리사이징(resizing )이

필요하다.

파일시스템 리사이징을 하려면 먼저 라즈베리 파이의 환경설정 프로그램인 raspi-config 명령을 실행

한다.

$ sudo raspi-config

아래 그림과 같이 설정 화면에서 ‘1 Expand Filesystem’을 선택한다.

[그림 2-35] raspi-config 메뉴

라즈베리 파이로 구현하는 사물 인터넷 프로젝트52

[그림 2-36] 파일시스템 리사이징 완료

파일시스템 리사이징이 완료되면 아래 그림과 같이 재부팅을 요구한다.

[그림 2-37] 파일시스템 적용을 위한 재부팅

재부팅이 완료된 후 SD 카드의 실제 크기만큼 정상적으로 인식되는지 확인하기 위해 아래 그림과 같이

fdisk 명령과 df 명령을 통해 확인한다.

[그림 2-38] 재부팅 후 파일시스템 확인

02. 라즈베리 파이 기본 설정 및 사용법 53

NOOBS 설치

라즈베리 파이 운영체제를 설치할 때 라즈비안 이미지를 내려받아 SD 카드에 쓰거나 통합 운영체제 설

치를 위한 NOOBS를 이용해 원하는 운영체제를 설치할 수 있다. 여기서는 통합 운영체제를 설치하기

위한 NOOBS의 사용법을 소개한다.

먼저 라즈베리 파이 홈페이지에서 NOOBS 파일을 내려받는다(http://downloads.raspberrypi.

org/NOOBS_latest ).

압축을 풀면 아래와 같은 디렉터리 구성을 볼 수 있다.

[그림 2-39] NOOBS 설치 파일의 디렉터리 구조

사용하고자 하는 SD 카드를 PC에 연결하고, SD Formatter3 같은 프로그램을 이용해 포맷한다.

SDFormatter의 실행 화면은 다음과 같다.

3 https://www.sdcard.org/downloads/formatter_4/

라즈베리 파이로 구현하는 사물 인터넷 프로젝트54

[그림 2-40] SDFormatter 실행 화면

SD 카드가 장착된 드라이브를 확인하고 Option 버튼을 클릭해 아

래 그림과 같이 FORMAT SIZE ADJUSTMENT 옵션을 ‘ON’으로

설정한다.

Format 버튼을 클릭해 SD 카드를 포맷한 다음 SD 카드의 최상위 디렉터리에 NOOBS 디렉터리의 모

든 하위 디렉터리와 파일을 복사한다.

[그림 2-42] NOOBS 파일 복사

[그림 2-41] 포맷 사이즈 조정

02. 라즈베리 파이 기본 설정 및 사용법 55

NOOBS 설치 파일의 복사가 완료되면 SD 카드를 라즈베리 파이에 장착하고, 키보드, 마우스, 모니터

등을 연결한 다음 전원을 공급해 부팅시킨다. NOOBS의 시작 화면은 다음과 같다.

[그림 2-43] NOOBS 초기 화면

위 그림의 NOOBS 초기 화면에서 라즈베리 파이에 설치 가능한 운영체제 종류가 나열되는 것을 볼 수

있으며, 다음 그림과 같이 설치하고자 하는 운영체제를 선택할 수 있다.

[그림 2-44] 설치할 운영체제 선택

라즈베리 파이로 구현하는 사물 인터넷 프로젝트56

설치하고자 하는 운영체제를 모두 선택한 다음 상단에 표시된 ‘Install’ 메뉴를 클릭하면 아래 그림과 같

이 선택된 운영체제에 대한 설치 과정을 볼 수 있다.

[그림 2-45] 라즈비안, 아치리눅스, 오픈일렉의 설치 과정

02. 라즈베리 파이 기본 설정 및 사용법 57

다음 그림은 모든 운영체제의 설치가 완료됐을 때의 화면이며, 재부팅하고 나면 멀티 부팅 가능한 PC를

사용할 때처럼 원하는 운영체제로 부팅할 수 있다.

[그림 2-46] NOOBS 기반의 운영체제 설치

[그림 2-47] NOOBS의 운영체제 선택

다음 그림은 페도라(Fedora ) 리눅스 기반의 피도라(Pidora )를 선택했을

때의 부팅 로고와 데스크톱을 보여준다.

[그림 2-48] 피도라 부팅 화면

라즈베리 파이로 구현하는 사물 인터넷 프로젝트58

[그림 2-49] 피도라 데스크톱

01 03

02

04

01

05

06

07

08

라즈베리 파이를 위한

원격 터미널

라즈베리 파이기본 설정 및

사용법

라즈베리 파이 제어를 위한 라이브러리

라즈베리 파이

파이썬

스크래치

PiFace

웹 프로그래밍

01_ SSH 기반의 원격 터미널

02_ xrdp 기반의 원격 터미널

03_ VNC(Virtual Network

Computing)