86
1 라즈베리파이 완성 매뉴얼 라즈베리 파이 완성 매뉴얼 라즈베리 파이 완성 매뉴얼 .................................................................................................................................. 1 라즈베리 파이 완성 구성품......................................................................................................................... 4 Chapter 1. 라즈베리 파이 소개 .......................................................................................................................... 5 1.1. 라즈베리 파이 개요................................................................................................................................ 5 1.1.1. 라즈베리 파이는? ........................................................................................................................ 5 1.1.2. 싱글 보드 컴퓨터........................................................................................................................ 5 1.2. 라즈베리 파이 구성................................................................................................................................ 6 1.2.1. 라즈베리 파이3 B+사양 .................................................................................................... 6 1.2.2. 라즈베리 파이 필수 액세서리 .............................................................................................. 7 1.2.3. 라즈베리 파이 추가 액세서리 .............................................................................................. 8 Chapter 2. 프로그래밍을 알아보자 ................................................................................................................... 9 2.1. 프로그래밍이란? ....................................................................................................................................... 9 2.2. 프로그래밍 언어....................................................................................................................................... 9 2.3. 프로그래밍(코딩)배워야 할까?.......................................................................................... 10 Chapter 3. 전기전자 기초 ................................................................................................................................... 11 3.1. 전기에 대한 이해 ................................................................................................................................. 11 3.2. 직류 전기와 교류 전기...................................................................................................................... 11 3.3. 전기의 원리............................................................................................................................................. 11 3.4. 전기의 성질............................................................................................................................................. 12 3.5. 옴의 법칙.................................................................................................................................................. 12 3.6. 전압 분배 법칙 ...................................................................................................................................... 12 3.7. 아날로그 신호와 디지털 신호........................................................................................................ 13 Chapter 4. 개발 환경 구축................................................................................................................................. 14 4.1. 운영체제 설치 ........................................................................................................................................ 14 4.1.1. 라즈베리 파이의 운영체제 .................................................................................................. 14 4.1.2. 라즈비안 다운로드 .................................................................................................................. 15 4.2. 하드웨어 설치 ........................................................................................................................................ 26 Chapter 5. 라즈베리 파이 시작하기 .............................................................................................................. 27 5.1. 시작하기 전에 ........................................................................................................................................ 27 5.1.1. 시작하기 ....................................................................................................................................... 27 5.2. 라즈베리 파이 GPIO ........................................................................................................................... 37

라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

1

라즈베리파이 완성 매뉴얼

라즈베리 파이 완성 매뉴얼

라즈베리 파이 완성 매뉴얼 .................................................................................................................................. 1

라즈베리 파이 완성 구성품 ......................................................................................................................... 4

Chapter 1. 라즈베리 파이 소개 .......................................................................................................................... 5

1.1. 라즈베리 파이 개요 ................................................................................................................................ 5

1.1.1. 라즈베리 파이는? ........................................................................................................................ 5

1.1.2. 싱글 보드 컴퓨터........................................................................................................................ 5

1.2. 라즈베리 파이 구성 ................................................................................................................................ 6

1.2.1. 라즈베리 파이3 B+의 사양 .................................................................................................... 6

1.2.2. 라즈베리 파이 필수 액세서리 .............................................................................................. 7

1.2.3. 라즈베리 파이 추가 액세서리 .............................................................................................. 8

Chapter 2. 프로그래밍을 알아보자 ................................................................................................................... 9

2.1. 프로그래밍이란? ....................................................................................................................................... 9

2.2. 프로그래밍 언어 ....................................................................................................................................... 9

2.3. 프로그래밍(코딩)을 왜 배워야 할까? .......................................................................................... 10

Chapter 3. 전기전자 기초 ................................................................................................................................... 11

3.1. 전기에 대한 이해 ................................................................................................................................. 11

3.2. 직류 전기와 교류 전기 ...................................................................................................................... 11

3.3. 전기의 원리 ............................................................................................................................................. 11

3.4. 전기의 성질 ............................................................................................................................................. 12

3.5. 옴의 법칙.................................................................................................................................................. 12

3.6. 전압 분배 법칙 ...................................................................................................................................... 12

3.7. 아날로그 신호와 디지털 신호 ........................................................................................................ 13

Chapter 4. 개발 환경 구축 ................................................................................................................................. 14

4.1. 운영체제 설치 ........................................................................................................................................ 14

4.1.1. 라즈베리 파이의 운영체제 .................................................................................................. 14

4.1.2. 라즈비안 다운로드 .................................................................................................................. 15

4.2. 하드웨어 설치 ........................................................................................................................................ 26

Chapter 5. 라즈베리 파이 시작하기 .............................................................................................................. 27

5.1. 시작하기 전에 ........................................................................................................................................ 27

5.1.1. 시작하기 ....................................................................................................................................... 27

5.2. 라즈베리 파이 GPIO ........................................................................................................................... 37

Page 2: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

2

라즈베리파이 완성 매뉴얼

5.2.1. GPIO 개요 .................................................................................................................................... 37

5.3. 액세서리 활용 ........................................................................................................................................ 38

5.3.1. 라이브러리 설치 ....................................................................................................................... 40

5.3.2. WiringPi 설치 ............................................................................................................................. 40

5.4. 프로그램 개발 방법 ............................................................................................................................. 43

5.4.1. 프로그램 작성 ........................................................................................................................... 43

5.4.2. 프로그램 빌드(Build) .............................................................................................................. 44

5.4.3. 프로그램 실행 ........................................................................................................................... 45

5.4.4. GNU 컴파일러 모음 ................................................................................................................ 45

Chapter 6. 원격 제어 ............................................................................................................................................ 46

6.1. SSH 방식 ................................................................................................................................................... 47

6.2. VNC 방식 .................................................................................................................................................. 49

Chapter 7. 액츄에이터 및 센서 제어 ............................................................................................................ 51

7.1. LED 제어 ................................................................................................................................................... 51

7.1.1. LED 소개 ....................................................................................................................................... 51

7.1.2. 제어 방법 ..................................................................................................................................... 51

7.1.3. 실습 재료 ..................................................................................................................................... 52

7.1.4. 회로도 ............................................................................................................................................ 55

7.1.5. LED 제어 실습 ........................................................................................................................... 56

7.2. 스위치를 사용한 LED 제어 .............................................................................................................. 58

7.2.1. 스위치 소개 ................................................................................................................................ 58

7.2.2. 제어 방법 ..................................................................................................................................... 58

7.2.3. 실습 재료 ..................................................................................................................................... 59

7.2.4. 스위치를 사용한 LED 제어 실습 ..................................................................................... 60

7.3. PWM을 사용한 LED 제어 ................................................................................................................. 61

7.3.1. PWM 소개 ................................................................................................................................... 61

7.3.2. 제어 방법 ..................................................................................................................................... 62

7.3.3. 실습 재료 ..................................................................................................................................... 62

7.3.4. PWM을 사용한 LED 밝기 조절 실습 ............................................................................. 63

7.4. 동작 센서 ................................................................................................................................................. 65

7.4.1. 동작 센서 소개 ......................................................................................................................... 65

7.4.2. 제어 방법 ..................................................................................................................................... 66

7.4.3. 실습 재료 ..................................................................................................................................... 67

7.4.4. 회로도 ............................................................................................................................................ 68

Page 3: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

3

라즈베리파이 완성 매뉴얼

7.4.5. 동작 센서 제어 실습 .............................................................................................................. 68

7.5. 수위 센서.................................................................................................................................................. 71

7.5.1. 수위 센서 소개 ......................................................................................................................... 71

7.5.2. 제어 방법 ..................................................................................................................................... 71

7.5.3. 실습 재료 ..................................................................................................................................... 72

7.5.4. 수위 센서 제어 실습 .............................................................................................................. 73

7.6. 초음파 센서 ............................................................................................................................................. 75

7.6.1. 초음파 센서 소개..................................................................................................................... 75

7.6.2. 제어 방법 ..................................................................................................................................... 75

7.6.3. 실습 재료 ..................................................................................................................................... 77

7.6.4. 회로도 ............................................................................................................................................ 77

7.6.5. 초음파 센서 제어 실습 ......................................................................................................... 78

Chapter 8. 라즈베리 파이 카메라 사용하기 .............................................................................................. 81

8.1. 라즈베리 파이 카메라 ........................................................................................................................ 81

8.2. 제어 방법.................................................................................................................................................. 81

8.3. 사용 모듈.................................................................................................................................................. 83

8.4. 카메라 제어 실습 ................................................................................................................................. 84

8.5. 카메라 웹 스트리밍 실습 ................................................................................................................. 85

Page 4: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

4

라즈베리파이 완성 매뉴얼

라즈베리 파이 완성 구성품

구성품 수량

라즈베리 파이 3 B+

라즈베리 파이 케이스

Micro SD Card

SD Card Reader

HDMI to HDMI 케이블

Micro 5핀 DC Adaptor

방열판

GPIO 40핀 케이블

GPIO 코블러 모듈

LED 소자

MCP3008

SG90 서브모터

먼지 센서

모션 센서

브레드보드

액체레벨센서

저항

5V 2.5A 어댑터

카메라모듈

푸시버튼

점퍼와이어MM

점퍼와이어MF

1

1

1

1

1

1

1

1

1

12

1

1

1

1

1

1

10

1

1

5

-

-

Page 5: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

5

라즈베리파이 완성 매뉴얼

Chapter 1. 라즈베리 파이 소개

1.1. 라즈베리 파이 개요

1.1.1. 라즈베리 파이는?

라즈베리 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교

육의 증진을 목적으로 만든 싱글 보드 컴퓨터입니다. 저 비용, 신용카드 크기의 컴퓨터로

컴퓨터 모니터나 TV에 연결하고 표준 키보드와 마우스를 사용합니다. 이것은 인터넷 검

색 및 고화질 비디오의 재생, 스프레드 시트, 워드 프로세싱, 게임 등 데스크톱 컴퓨터에

서 작업할 수 있다고 기대되는 모든 일을 할 수 있습니다.

1.1.2. 싱글 보드 컴퓨터

싱글 보드 컴퓨터(Single-board computer)는 명칭에서 알 수 있듯이 단일 보드(PCB) 위에

중앙처리장치(CPU), 그래픽처리장치(GPU), 메모리, 입출력 장치를 장착한 컴퓨터입니다.

이는 집이나 회사에서 사용되는 많이 사용하는 데스크톱 컴퓨터가 메인보드를 중심으로

각종 장치를 메인보드 슬롯에 끼우고 연결하는 형태와 구별되며, 여러장의 디바이스 보드

가 결합된 형태를 가지는 랩톱 컴퓨터와도 구별됩니다.

약자로 SBC라고 부르는 싱글 보드 컴퓨터는 한장의 보드로 구성되어 있기 때문에 관리가

쉽고 성능대비 비교적 저렴한 특징을 가진다. SoC를 사용하여 메인 칩은 소형에 저전력이

고, 다른 컴퓨터에 비해 비교적 작은 크기를 가집니다.

Page 6: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

6

라즈베리파이 완성 매뉴얼

1.2. 라즈베리 파이 구성

1.2.1. 라즈베리 파이3 B+의 사양

라즈베리파이 3 B+ 사양은 다음과 같습니다.

Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz

1GB LPDDR2 SDRAM

2.4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE

Gigabit Ethernet over USB 2.0 (maximum throughput 300 Mbps)

Extended 40-pin GPIO header

Full-size HDMI

4 USB 2.0 ports

CSI camera port for connecting a Raspberry Pi camera

DSI display port for connecting a Raspberry Pi touchscreen display

4-pole stereo output and composite video port

Micro SD port for loading your operating system and storing data

5V/2.5A DC power input

Power-over-Ethernet (PoE) support (requires separate PoE HAT)

이전 버전인 라즈베리파이 3 B 보다 약 17%의 성능향상이 있습니다. 주변 부품들이 메인

CPU로 원칩화되면서 상당히 심플해졌습니다. 또한 듀얼밴드 와이파이와 블루투스 4.2버

전을 지원하며 보조 GPIO가 4개 더 생긴 것이 눈에 띕니다. 공식적으로 5V/2.5A의 전력

을 표기한 부분은 기존과 다소 차이가 있습니다.

Page 7: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

7

라즈베리파이 완성 매뉴얼

1.2.2. 라즈베리 파이 필수 액세서리

라즈베리 파이는 기존에 데스크톱의 본체에 해당하는 부분으로 입출력 디바이스는 별도

로 구비해야 합니다.

필수로 사용해야하는 모니터와 같은 디스플레이 장치와 연결을 위한 HDMI 케이블, 그리

고 하드디스크와 같이 보조 기억장치 역할을 하는 Micro SD 메모리, 키보드와 마우스와

같은 입력 장치, 그리고 전원을 공급해 주기 위한 Micro USB 케이블이 필요합니다.

디스플레이 장치 – 모니터 또는 TV

라즈베리 파이는 보드에 HDMI를 가지고 있어 이를 통해 신호를 출력 할 수 있는 LCD

모니터나 TV가 연결됩니다. 또는 아날로그 컴포넌트 RCA 단자를 입력으로 하는 아날로그

모니터를 연결 합니다.

모니터 연결 케이블

준비한 모니터나 TV에 맞는 케이블을 준비합니다. 라즈베리파이는 RCA로도 영상 출력을

할수 있고 HDMI로 출력할수 있습니다.

입력 장치 – 키보드와 마우스

라즈베리 파이 보드의 USB 포트에 연결할 수 있는 키보드와 마우스를 준비합니다. 준비

한 마우스 키보드가 PS2라면 PS2toUSB 컨버터가 필요합니다.

저장 장치 – Micro SD 메모리 카드

마이크로 SD 메모리 카드에는 OS가 설치되며, 함께 제공되지 않으므로 별도로 준비합니

다. 4GB이상이면 사용에 지장은 없지만 적어도 8GB이상을 추천 합니다.

Micro SD 메모리 카드 리더

Micro SD 메모리 카드에 운영체제인 라즈비안을 설치하기 위해 필요합니다.

전원 케이블

라즈베리 파이3 B+는 전원으로 전압 5V, 전류 2.5A 이상을 공급하도록 권장하고 있습니

다. PC와 연결되는 Micro USB-USB 케이블과 전원 어댑터를 사용하여 전원을 공급 받으며,

5V, 2.5A이상의 전원을 공급하기 위한 전원 장치가 필요합니다.

Page 8: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

8

라즈베리파이 완성 매뉴얼

1.2.3. 라즈베리 파이 추가 액세서리

라즈베리 파이는 인터넷을 사용하거나 USB 포트 확을 위해, 또는 기타 목적을 위해 추가

액세서리의 사용이 가능합니다.

방열판

라즈베리파이에는 전체적으로 전력소모가 매우 적어 냉각장치가 필요없긴 하지만 오버클

럭 기능을 사용할 경우, 속도가 빨라지는 대신 발열이 심하게 될 수도 있습니다. 이를 방

지하려면 방열판을 사용하면 효과적입니다.

LAN케이블

라즈베리파이3는 무선 블루투스와 WI-FI기능이 있긴합니다만 이더넷 포트를 사용해서 인

터넷 기능을 부여할 수 있습니다. 더욱이 라즈베리파이3 B+버전은 전작에서 지원하지 않

던 기가 이더넷을 지원합니다.

케이스

라즈베리파이의 기판에 있는 부품들은 외부로 노출되어 있기 때문에 충격이나 수분, 먼지

와 같은 이유로 합선이 일어나 고장이 발생할 수 있으니 케이스를 사용하여 이를 보호해

주는게 좋습니다.

카메라

라즈베리파이는 CSI포트와 USB포트를 통해 카메라를 연결하여 사진 및 동영상을 촬영할

수 있습니다. 라즈베리파이 전용 카메라를 연결시켜 사용할 수 있으며, USB포트로는 일반

적으로 많이 사용하는 웹캠등을 연결해서 사용할수 있습니다.

그외 기타

USB포트가 부족하면 USB포트나 GPIO핀을 통해 외부 장치와 연결할 수 있으며, 각종 센

서, 모터, 출력 모듈 등을 연결하면 추가적으로 기능을 부여할수 있습니다.

Page 9: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

9

라즈베리파이 완성 매뉴얼

Chapter 2. 프로그래밍을 알아보자

2.1. 프로그래밍이란?

프로그래밍은 프로그램을 만드는 과정을 말하며 프로그램은 일의 순서 또는 과정을 말합

니다. 우선 다음의 그림을 보면서 프로그램이 무엇인지 설명드리겠습니다.

사과를 박스포장하는 프로그램을 간략화한 과정입니다. 이 프로그램을 만들어서 로봇에

입력한다면 사과를 박스포장하는 로봇이 되겠지요. 즉, 우리가 스마트폰이나 컴퓨터에서

사용하는 인터넷, 게임 등의 프로그램은 컴퓨터를 통해 제작하는 ‘컴퓨터 프로그램’이며,

C언어, 파이썬, 자바, 등의 프로그래밍 언어를 사용하여 프로그래밍함으로써 프로그램을

만드는 것입니다.

2.2. 프로그래밍 언어

프로그래밍 언어는 사람과 디바이스(컴퓨터, 아두이노 등)가 의사소통을 가능하게 해주는

언어입니다. 우리가 키보드로 A 를 입력하지만 사실 컴퓨터는 0 과 1 로 이루어진

Page 10: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

10

라즈베리파이 완성 매뉴얼

기계어로 표현합니다. 0 과 1 만을 사용하는 컴퓨터에서 기계어를 사용하여 프로그램을

제작하기란 쉽지 않습니다. 그렇기 때문에 만들어진 것이 C, C++, JAVA 등과 같은

프로그래밍 언어입니다. 즉, 프로그래밍 언어는 사람이 사용하는 언어를 컴퓨터가

사용하는 기계어로 바꿔주는 언어입니다.

2.3. 프로그래밍(코딩)을 왜 배워야 할까?

스티브 잡스는 이렇게 말했습니다. “이 나라 모든 사람들은 컴퓨터 프로그래밍을 배워야

하는 이유는 사고하는 법을 배워야 하기 때문이다.”

기본적으로 뭘 모르는지 모르는 것과, 뭘 모르는지 아는 것은 하늘과 땅만큼의 차이를 가

지고 있습니다. 즉, 뭘 모르는지 모른다면 그것은 개선의 의지가 없다는 것이지만 뭘 모

르는지 아는 것은 개선을 할 수 있다는 것입니다. 그리고 컴퓨터를 기반으로 한 응용프로

그램 활용 능력이 달라집니다. 만약 어떤 학교의 학생들의 반평균과 학년 평균을 구하는

경우 이것을 엑셀과 같은 프로그램으로 순식간에 끝낼지, 아니면 계산기나 암산을 통해서

일일이 사칙연산을 하는지는 시간적으로나 비용적으로나 충분히 우리에게 코딩의 중요성

을 일깨워 줍니다.

4차 산업혁명에선 빅 데이터 분석, 인공지능, 로봇공학, 사물인터넷, 무인 운송 수단, 3차

원 인쇄, 나노 기술과 같은 6대 분야에서 새로운 기술혁명입니다. 이들 분야에선 컴퓨터

는 빼놓을 수는 없을 것입니다. 즉, 프로그래밍을 모른다면 다른 사람들보다 뒤처질수 밖

에 없다고 생각합니다.

Page 11: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

11

라즈베리파이 완성 매뉴얼

Chapter 3. 전기전자 기초

3.1. 전기에 대한 이해

전기에너지는 화력, 원자력 등의 발전소에서 만들어진 후 재가공을 거쳐 가정이나 공장

등으로 공급이 됩니다. 집에서 흔히 볼수 있는 콘센트나 여러가지 건전지, 배터리들을 통

해 전기에너지를 공급받아 사용합니다.

일상에서 사용하는 전자 제품이나 부품들은 각각 사용하는 전기의 세기나 양이 정해져

있으므로 잘못 사용한다면 제품들이 고장이 나서 화재가 나거나 감전당할 수 있습니다.

우리가 앞으로 사용할 라즈베리파이나 센서, 모터 등의 전자 부품들 또한 전기에너지를

사용하니 올바른 방법으로만 사용하시기 바랍니다.

3.2. 직류 전기와 교류 전기

전기는 크게 직류전기와 교류 전기로 나뉩니다. 그렇다면 직류 전기와 교류 전기는 무엇

이 다를까요? 다음 그림을 보고 설명하겠습니다.

직류전기는 시간에 관계없이 항상 일정하게 음극에서 양극으로 한 뱡향으로만 흐르는 전

기입니다. 건전지가 이 방식에 해당합니다. 멀리 떨어진 곳으로 전기를 송전하기 위해서

는 전압을 고압으로 승압시켜야하지만 직류는 고압으로의 승압이 어렵기 때문에 일반 가

정에 보급하기가 힘듭니다.

교류전기는 전압, 전류 극성의 방향이 함께 바뀝니다. 그리고 일정 시간에 몇번 바뀌는지

에 따라서 주파수가 정해집니다. 우리가 가정에서 사용하고 있는 콘센트는 220VAC 입니

다.

3.3. 전기의 원리

전기는 원자안의 자유 전자가 외부로 이동하여 생기는 에너지의 한 형태입니다. 원자는

원자핵을 기준으로 전자와 원자핵의 인력을 덜 받는 자유전자가 회전하고 있습니다. 자유

전자는 원자의 외부로 벗어날 수 있으며, 이러한 현상을 ‘전기가 흐른다’고 표현할수 있습

Page 12: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

12

라즈베리파이 완성 매뉴얼

니다.

3.4. 전기의 성질

전기의 성질은 전압, 전류, 저항을 통해 정의할 수 있으며, 이는 물이 흐르는 성질에 비유

하여 나타낼 수 있습니다.

전압은 수압에 비유 할 수 있고 저항은 물의 흐름을 방해하는 지형지물과 같습니다. 또한

전류는 물의 흐름입니다.

3.5. 옴의 법칙

전기 회로에서 전지의 전압이 달라지면 같은 전구라도 밝기가 달라집니다. 또 전압이 같

더라도 전구의 저항에 따라 밝기가 달라집니다. 이는 전압은 전류가 흐르도록 도와주고,

저항은 전류의 흐름을 방해하기 때문입니다. 이와 같은 전압, 전류, 저항사이의 관계를 설

명하는 법칙이 옴의법칙입니다.

흔히 R=V/I으로 표현하는데 저항은 전압에 비례하고 전류의세기에 반비례합니다. 추가로

전류는 암페어(A)라는 단위를 사용하고, 전압은 볼트(V), 저항은 옴(Ω)으로 표현합니다.

3.6. 전압 분배 법칙

전압 분배 법칙은 전기 회로 안에 다수의 저항기가 있을 경우 저항기를 지날 때 마다 전

압이 사용되어 전압이 떨어지는 현상을 가지고 어떤 회로나 부품에서 필요로 하는 전압

을 만들어줄 때 사용합니다. 즉, 12V의 입력전압을 가지고 5V의 LED를 켜려고 하면 LED

는 고장이 납니다. 그렇기 때문에 저항기를 추가하여 12V의 전압을 5V로 낮춰 LED를 켤

수 있습니다.

Page 13: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

13

라즈베리파이 완성 매뉴얼

3.7. 아날로그 신호와 디지털 신호

전기 신호는 아날로그 신호와 디지털 신호로 나뉘며, 우리가 사용하는 라즈베리파이는 디

지털 신호와 아날로그 신호를 사용하여 부품들을 제어합니다.

Page 14: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

14

라즈베리파이 완성 매뉴얼

Chapter 4. 개발 환경 구축

4.1. 운영체제 설치

SD카드에 라즈베리파이 운영체제(OS)를 설치합니다.

4.1.1. 라즈베리 파이의 운영체제

4.1.1.1. 운영체제란?

운영 체제 또는 오퍼레이팅 시스템(영어: Operating System, OS)은 시스템 하드웨어를 관

리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시

스템 서비스를 제공하는 시스템 소프트웨어입니다. 최근에는 가상화 기술의 발전에 힘입

어 실제 하드웨어가 아닌 하이퍼바이저 위에서 실행되기도 합니다.

입출력과 메모리 할당과 같은 하드웨어 기능의 경우 운영 체제는 응용 프로그램과 컴퓨

터 하드웨어 사이의 중재 역할을 합니다. 그러나 응용 프로그램 코드는 일반적으로 하드

웨어에서 직접 실행됩니다. 운영 체제는 휴대 전화, 게임기에서부터 슈퍼컴퓨터, 웹 서버

에 이르기까지 컴퓨터를 포함하는 거의 모든 장치에서 볼 수 있습니다. 운영 체제는 한

면으로는 소비자를, 다른 한 면으로는 프로그램 개발자를 함께 하나의 시장으로 데려다

놓을 수 있는 양면 플랫폼입니다. 잘 알려진 현대의 PC 운영 체제에는 마이크로소프트

윈도우, 맥 OS X, 리눅스가 있습니다. 이 밖에 BSD, 유닉스 등의 PC용 운영 체제도 존재

합니다.

운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등의 자원들을 사

용할 수 있도록 만들어 주고, 이들을 추상화하여 파일 시스템 등의 서비스를 제공합니다.

또한 멀티태스킹을 지원하는 경우, 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영

체제는 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보

이는 효과를 냅니다.

라즈베리파이에는 라즈비안, 우분투 메이트, 윈도우 10 IoT Core 등의 운영체제가 있습니

다. 가장 많이 사용되는 운영체제들을 추려서 알아보겠습니다.

4.1.1.2. 라즈비안

데비안 리눅스를 기반으로 라즈베리파이에 최적화하여 개발된 전용 운영체제입니다. 라즈

베리파이 재단에서 공식적으로 권장 및 제공하고 있는 운영체제이며 라즈베리파이 계열

Page 15: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

15

라즈베리파이 완성 매뉴얼

의 저성능 ARM CPU에 상당히 최적화 되어 있습니다. 본 매뉴얼은 라즈비안 운영체제를

사용하여 공부합니다.

4.1.1.3. 우분투 메이트

리눅스 기반이며 자유 오픈 소스 리눅스 배포판입니다. 우분투 그놈을 기반으로 라즈베리

파이사용에 초점을 맞춘 이미지입니다. 데스크탑 환경을 기본 사용자 인터페이스로 사용

합니다.

4.1.1.4. 윈도우10 IoT Core

마이크로 소프트에서 개발 제공하는 싱글 보드 컴퓨터용 운영체제입니다. 무료로 비주얼

스튜디오 익스프레스를 사용해 해당 기기용으로 실질적인 개발 작업을 진행 할수 있습니

다.

4.1.2. 라즈비안 다운로드

라즈비안을 설치하는 방법은 2가지가 있습니다. 첫번째 방법은 NOOBS파일을 다운받아서

설치하는 방법과 이미지 파일을 다운로드해서 설치하는 방법이 있습니다. 두 방법에 대해

설명해드릴테니 편한 방법으로 설치해보세요.

https://www.raspberrypi.org/ 에 접속해 상단에 있는 Downloads를 클릭합니다.

Page 16: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

16

라즈베리파이 완성 매뉴얼

4.1.2.1. 라즈비안 NOOBS 다운로드

NOOBS를 클릭하여 Download ZIP 파일을 다운로드합니다.

Page 17: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

17

라즈베리파이 완성 매뉴얼

다운로드 된 압축파일을 압축을 풀어줍니다.

압축을 푼 폴더 안의 파일을 모두 복사해서 SD카드에 붙여넣기합니다.

Page 18: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

18

라즈베리파이 완성 매뉴얼

라즈베리파이에 SD카드를 삽입후 실행하면 다음과 같은 화면이 나옵니다.

라즈비안을 누르고 Install을 누르면 운영체제 설치가 진행됩니다. Warning 창이 뜨는데

YES를 눌러 진행하면 됩니다.

Page 19: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

19

라즈베리파이 완성 매뉴얼

4.1.2.2. 라즈비안 이미지파일 다운로드

Page 20: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

20

라즈베리파이 완성 매뉴얼

다운로드 된 압축파일을 압축을 풀어줍니다.

https://sourceforge.net/projects/win32diskimager/ 에 접속해서 Win32Disk Imager을 다운

받아 설치해줍니다.

Page 21: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

21

라즈베리파이 완성 매뉴얼

Page 22: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

22

라즈베리파이 완성 매뉴얼

Page 23: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

23

라즈베리파이 완성 매뉴얼

Page 24: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

24

라즈베리파이 완성 매뉴얼

설치가 완료되면 Win32 Disk Imager을 실행해줍니다. 다음의 그림과 같이 네모안의 버튼

을 눌러서 쓸 이미지파일을 지정하고, 이미지를 쓸 장치를 설정해줍니다.

Page 25: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

25

라즈베리파이 완성 매뉴얼

쓸 이미지 파일과 장치를 정하고 Write를 누르면 설치가 시작됩니다.

Write를 누르면 다음과 같은 경고창이 나오는데 Yes를 눌러주면 됩니다.

Page 26: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

26

라즈베리파이 완성 매뉴얼

4.2. 하드웨어 설치

Micro SD Card를 라즈베리파이에 삽입해주고 환경에 따라 모니터, 키보드, 마우스, LAN케

이블을 연결해줍니다. 마지막으로 전원을 연결하면 라즈베리파이를 실행됩니다.

Page 27: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

27

라즈베리파이 완성 매뉴얼

Chapter 5. 라즈베리 파이 시작하기

5.1. 시작하기 전에

시작하기 전에 우선 라즈비안을 어떻게 사용할지 알아봅시다.

1. Shell: 좌측상단에 보면 네모난 모양의 Terminal을 클릭하면 다음과 같이 터미널

창이 나옵니다. 이 터미널 창의 한줄 한줄을 쉘이라고 합니다.

2. Sudo: 본래 “Super user do”에서 유래 하였으나 후에 프로그램의 기능이 확장되

며 “Substitute user do”의 줄임말로 해석하게 되었습니다.

3. Apt: “Advanced Packaging Tool”의 줄임말입니다. 코어 라이브러리와 함꼐 동작하

는 자유 사용자 인터페이스로, 데비안/리눅스 계열 배포판에서 소프트웨어를 설

치하고 제거하는 일을 합니다.

4. Nano: 유닉스 계열 컴퓨팅 시스템이나 taudfud 줄 인터페이스를 사용하는 운영

환경을 위한 문서 편집기입니다.

5.1.1. 시작하기

라즈비안이 부팅되었습니다. 다음 그림을 보시면 Welcome to Rasspberry Pi라는 응용 프

로그램이 자동으로 시작됩니다. 이 프로그램은 닫기를 눌러서 닫아줍니다.

Page 28: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

28

라즈베리파이 완성 매뉴얼

5.1.1.1. LAN 연결 및 WIFI 연결

라즈베리파이에 필요한 자료들을 다운로드 받아야하므로 인터넷에 연결해줍니다.

LAN을 사용해서 연결하면 자동으로 IP를 받아 연결이됩니다. WIFI를 사용한다면 다음을

보고 따라하시면 됩니다.

우측 상단에 있는 블루투스 모양과 스피커 모양 사이에 있는 것을 클릭하면 Wifi를 연결

할수 있습니다. 연결할 와이파이를 누르면 비밀번호를 입력하는 창이 뜹니다.

비밀번호를 입력하고 OK를 누르면 와이파이가 연결된 표시가 나옵니다.

Page 29: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

29

라즈베리파이 완성 매뉴얼

인터넷이 연결됬으니 터미널 창을 열어줍니다. 좌측 상단에 있는 네모난 모양의 아이콘을

누르면 터미널이 켜집니다.

5.1.1.2. 환경설정

설정을 위해 Preferences – Praspberry Pi Configuration에 들어가줍니다.

Sudo apt-get update //어드밴스트 패키징 툴을 업데이트함

Sudo apt-get install fonts-unfonts-core //확인되지 않은 폰트를 설치함

Sudo apt-get install fcitx-hangul –y //다국어 입력기를 설치함

Sudo apt-get install git-core //git-core를 설치함

Git clone git://git.drogon.net/wiringPi //wiringPi 라이브러리 설치함.

Reboot // 재부팅

Page 30: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

30

라즈베리파이 완성 매뉴얼

System 탭에서 설 정할 내용은 없습니다. Localisation탭으로 이동합니다.

Page 31: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

31

라즈베리파이 완성 매뉴얼

Localisation 탭에서 Locale, Timezone, Keyboard를 설정합니다.

Page 32: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

32

라즈베리파이 완성 매뉴얼

WiFi Country는 설정하지 않습니다. 다음은 Interfaces탭으로 이동합니다.

자신에게 필요한 설정을 해주고 OK를 눌러 재부팅 합니다. 본 매뉴얼에서는 모든 항목을

Enable 하는 것을 권합니다.

Page 33: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

33

라즈베리파이 완성 매뉴얼

5.1.1.3. 다국어 입력기 fcitx 설정

재부팅을 하고나면 Fcitx를 시작합니다.

그러면 우측 상단에 키보드 모양이 생성됩니다.

Page 34: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

34

라즈베리파이 완성 매뉴얼

키보드 모양을 눌러서 [현재 입력기 설정]을 누릅니다.

Input Method Configuration이 켜집니다. 영어 입력기가 등록되어 있습니다.

왼쪽 아래에 있는 + 버튼을 눌러줍니다. 설치했던 Hangul을 선택하고 OK를 누릅니다.

Page 35: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

35

라즈베리파이 완성 매뉴얼

Global Config탭으로 가서 입력기 전환에 있는 Ctrl+Space 눌르고 자신이 원하는 키를 한

번 입력합니다.

Ctrl+Space가 Hangul로 바뀐 것이 보입니다. 한/영 키로 설정했습니다.

개인의 취향이나 상황에 따라서 한/영키를 쓰거나 합니다. 원격 제어시 한/영 키가 안되

는 경우가 있으므로 보조키로 Ctrl+Space를 입력하는 것을 추천합니다.

Page 36: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

36

라즈베리파이 완성 매뉴얼

이렇게 한글 입력을 설정이 끝났습니다. 텍스트 에디터를 열고 확인합니다.

텍스트 에디터를 열고 타이핑을 하여 확인할 수 있습니다.

Page 37: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

37

라즈베리파이 완성 매뉴얼

5.2. 라즈베리 파이 GPIO

5.2.1. GPIO 개요

라즈베리 파이는 일상생활에 보편화되어 사용되고 있는 컴퓨터의 축소판입니다. 즉, 라즈

베리 파이를 통해 영상을 보고, 문서작업을 하며, 웹서핑을 할 수 있습니다. 더 나아가 보

통 컴퓨터에서 찾아볼 수 없던 GPIO 컨넥터를 제공하고 있어 마이크로컨트롤러와 같이

입출력 신호의 제어가 가능합니다.

GPIO(General-purpose Input Output)란, 범용으로 사용되는 입출력 포트를 말하며, 임베디

드 시스템의 여러가지 기능을 위한 주변장치 및 소자들을 동작시키고 그것들이 원하는

방식으로 인터페이스를 하기 위해 적절한 신호를 전달하며, 설계자가 원하는 동작을 수행

하기 위하여 포트를 입력 및 출력으로 구성합니다.

간단히 예를 들면, LED ON/OFF, FND 제어, Buzzer 소리를 켜기 위해서 해당 소자에 0 혹

은, 1의 신호를 보내주는 것이고, TEXT-LCD에 글자를 출력하기 위한 병렬신호를 보내주는

것입니다.

라즈베리 파이 보드 상에 40개의 핀들을 쉽게 찾아볼 수 있습니다. 이 핀들이 외부와 인

터페이스가 가능하도록 구성되며, 이 핀들은 GPIO 기능 이외에도 다른 장비와의 통신을

위한 SPI, I2C, UART 기능을 가지고 있어 다양한 목적으로 활용이 가능합니다. 이 핀들의

구성은 다음과 같습니다.

GPIO Pin : 26개 (전용 핀 : 13개)

UART : 2개 (TX, RX)

SPI Pin : 9개 (SPI0, SPI1)

I2C Pin : 2개 (I2C1)

5V PWR Pin : 2개

3.3V PWR Pin : 2개

GND Pin : 8개

Reserved Pin : 2개 (I2C ID EEPROM)

Page 38: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

38

라즈베리파이 완성 매뉴얼

5.3. 액세서리 활용

라즈베리 파이의 GPIO 핀은 앞서 그림에서 확인한 바와 같이 명칭이 기재되어 있지 않습

니다. 또한 센서와 같이 아날로그 입력 신호를 수신하기 위해서 별도의 ADC 칩 구성이

필요한 점도 고려하여 추가 액세서리를 사용하면 회로 구성 등 활용에 용이합니다. 여기

서는 라즈베리 파이의 GPIO를 사용 시 연결을 편하게 하기 위해 브레드 보드와 GPIO 핀

을 연결하는 T-코블러(Cobbler)를 사용합니다. T-코블러는 라즈베리 파이와 40핀 케이블로

연결하며, 라즈베리 파이의 GPIO 핀을 브레드보드에서 사용할 수 있도록 규격화되어 있

습니다. 보드 위에는 GPIO 핀 명칭이 적혀있어 핀 연결을 도와줍니다.

T-코블러

Page 39: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

39

라즈베리파이 완성 매뉴얼

브레드 보드는 내부에 철심으로 구성되어 있으며, 같은 철심으로 연결된 부품들이 전기가

통할 수 있도록 구성됩니다. 다양한 규격의 브레드 보드가 있으나 내부의 철심 구조는 유

사하여 다음 그림과 같이 전기가 통할 수 있는 구조를 가집니다. (구멍들을 연결한 선을

따라 전기가 통합니다)

브레드 보드와 T-코블러를 활용하면 아날로그 신호를 입력 받기 위한 ADC 회로도 함께

구성할 수 있습니다.

Page 40: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

40

라즈베리파이 완성 매뉴얼

5.3.1. 라이브러리 설치

5.3.1.1. GPIO 라이브러리

라즈베리 파이의 GPIO를 제어하기 위해서 사용되는 언어는 C, C++, Java, Python 등 매우

다양하며, 각 언어에 따라 사용자들이 라이브러리를 작성하여 공유하고 있습니다. 그중에

본 교재에서는 C를 사용하여 GPIO를 제어하기 위하여 wiringPi를 사용합니다.

wiringPi는 GPIO 라이브러리이며, 라즈베리 파이 안에서 사용되는 BCM2835와 BCM 2836

을 위한 C로 작성되어 있습니다. 이것은 GNU LGPLv3 라이선스 아래에서 릴리즈되고, C와

C++, 그리고 많은 다른 언어를 사용할 수 있습니다. 이는 아두이노의 “wiring” 시스템을

사용해온 사람들에게 매우 친근하게 디자인되어 있습니다.

5.3.2. WiringPi 설치

WiringPi는 “GIT”이란 것에 의해 유지되고 있습니다. GIT은 프로그램 관리를 위한 분산 버

전 관리 시스템입니다. 이를 통해 WiringPi 라이브러리를 다운로드 할 수 있습니다.

5.3.2.1. GIT 설치

다음 명령어를 사용하여 GIT을 설치합니다.

5.3.2.2. WiringPi 라이브러리 다운로드

다음 명령어를 사용하여 GIT을 사용하여 WiringPi 라이브러리를 다운로드 합니다.

Page 41: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

41

라즈베리파이 완성 매뉴얼

5.3.2.3. WiringPi 라이브러리 빌드

다음 명령어를 사용하여 WiringPi 라이브러리를 빌드(Build) 합니다. 빌드를 위해 압축 해

제한 폴더로 이동합니다.

다음과 같이 빌드가 진행되고 마지막에 다음과 같은 문구를 확인할 수 있습니다.

참고로, WiringPi 라이브러리를 사용한 프로그램의 컴파일을 진행 할 때, 컴파일 명령의

끝에 “-lwiringPi”라는 문구를 같이 사용하게 됩니다(이것은 뒤에서 확인 가능합니다.).

Page 42: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

42

라즈베리파이 완성 매뉴얼

5.3.2.4. 설치 확인

다음 명령어를 사용하여 WiringPi 라이브러리의 설치를 확인합니다.

Raspberry Pi Details 부분을 보면 라즈베리 파이 상에 표시된 모델과 Revision이 일치되는

것을 확인 가능하며, 모델과 버전에 따라 다른 WiringPi가 필요합니다.

WiringPi가 설치되면 다음 명령어를 사용해 라즈베리 파이의 핀맵을 확인할 수 있습니다.

앞으로 프로그램을 작성 시, 종종 GPIO 핀 번호를 확인하므로 명령어를 숙지하는 것이

좋습니다.

Page 43: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

43

라즈베리파이 완성 매뉴얼

5.4. 프로그램 개발 방법

라즈베리 파이의 프로젝트를 위한 기본적인 하드웨어와 초기 설정이 완료되었습니다. 이

제 시스템 개발을 위한 프로그램 작성과 컴파일 및 실행 방법을 소개합니다. 라즈베리 파

이 프로그램을 위한 언어는 다양하지만, 여기에서는 C언어와 Python 언어를 이용하여 프

로그램을 작성합니다.

5.4.1. 프로그램 작성

라즈베리 파이 프로그램 작성 시, 텍스트 기반 프로그래밍 언어를 작성하기 위해서는 기

본적으로 텍스트 에디터가 필요합니다. 텍스트 에디터는 문자 기반으로 파일을 생성하고

수정할 수 있는 프로그램입니다. 프로그램 작성은 라즈비안에 설치된 유닉스 계열 텍스트

에디터를 사용할 수 있습니다. 보통 vi나 GNU nano를 많이 사용하며, vi가 강력한 기능을

제공하지만 배우기 어려운 반면에, nano는 기능은 단순하지만 편리한 편집기능을 제공합

니다.

5.4.1.1. nano 에디터

nano 에디터는 다른 텍스트 에디터들에 비해 가볍고 사용하기 쉽습니다. 다만, 다양한 기

능을 지원하지 않습니다. nano 에디터는 문서의 내용을 구분하기 위해 색상 등을 기본적

으로 제공합니다. 파일을 편집하려면 nano 에디터를 실행할 때 “nano [파일명]”을 입력하

여 불러올 파일을 지정하면 됩니다.

파일을 생성하고 싶을 때에도 같은 방식으로 명령을 입력하면, 해당파일이 없는 경우, 입

력한 파일명으로 파일이 생성됩니다. 이렇게 생성하고 불러온 파일에 프로그램을 하고,

Ctrl+X 키를 누르면 에디터를 종료할 수 있습니다. 내용이 편집된 경우에는 변경된 내용

의 저장 여부를 묻는데 “Yes”, “No”의 첫 알파벳을 입력하여 결정합니다. 이 밖에도 다양

한 기능을 제공하는데 추가적인 기능은 Ctrl+G 키를 눌러 도움말을 살펴봅니다.

Page 44: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

44

라즈베리파이 완성 매뉴얼

5.4.1.2. 소스 코드

다음과 같이 명령을 입력하여 nano 에디터를 이용한 helloworld.c 파일을 생성하고 다음

소스 코드를 작성합니다. (참고로 ‘\’는 백슬레시’\’와 같은 표현입니다.)

helloworld.c

Program Source Description

#include <stdio.h> 표준입출력 헤더파일 포함

int main (void) 메인 함수

{

printf(“Hello World\n”); “Hello World” 문장을 모니터에 출력

return 0;

}

라즈베리 파이 화면

소스 코드 작성이 완료되면 에디터를 종료하며 내용을 저장합니다.

5.4.2. 프로그램 빌드(Build)

작성된 소스코드는 빌드 과정을 거쳐 프로그램을 실행할 수 있는 실행 파일의 형태를 가

집니다. 빌드 과정은 크게 컴파일(Compile)과 링크(Link)로 나뉜다. 빌드 중에 소스코드의

문법에 오류가 있는 경우, 경고나 에러를 발생하고 중지합니다. 리눅스를 기반으로 하는

라즈베리 파이의 기본 컴파일러로 GCC를 사용하며, 빌드 명령은 다음과 같습니다.

gcc의 옵션으로 ‘-o’를 사용하였으며, 이는 실행파일에 대한 이름을 부여합니다. 여기서는

“helloworld”라는 이름을 부여하였습니다. 이 밖에도 gcc 컴파일러는 다양한 옵션을 가지

고 있는데 자세한 내용은 쉘(Command Line)에 “gcc --help"를 입력하여 확인할 수 있습니

다.

Page 45: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

45

라즈베리파이 완성 매뉴얼

5.4.3. 프로그램 실행

프로그램 빌드를 마치고 실행파일이 생성되면 쉘에 다음과 같이 입력하여 프로그램을 실

행할 수 있습니다.

5.4.4. GNU 컴파일러 모음

“CNU C Compiler”였지만 기능이 추가되면서 GNU 컴파일러 모음(GNU Compiler Collec-

tion, 줄여서 GCC)가 되었습니다. GUN프로젝트의 일환으로 개발되어 널리 쓰이고 있는

컴파일러입니다.

작성된 소스코드는 빌드 과정을 거쳐 프로그램을 실행할 수 있는 실행 파일의 형태를 가

집니다. 빌드 과정은 크게 컴파일(Compile)과 링크(Link)로 나뉩니다. 빌드 중에 소스코드

의 문법에 오류가 있는 경우, 경고나 에러를 발생하고 중지합니다. 라즈비안의 기본 컴파

일러인 GCC를 사용하며, 빌드 명령은 다음과 같습니다.

gcc –o [목적파일] [소스파일] [라이브러리]

gcc –o HelloWorld helloworld.c –lwiringPi

gcc의 옵션으로 ‘-o’를 사용하였으며, 이는 실행파일에 대한 이름을 부여합니다. 여기서는

“helloworld”라는 이름을 부여하였습니다. 이 밖에도 gcc 컴파일러는 다양한 옵션을 가지

고 있는데 자세한 내용은 쉘(Command Line)에 “gcc --help"를 입력하여 확인할 수 있습니

다.

Page 46: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

46

라즈베리파이 완성 매뉴얼

Chapter 6. 원격 제어

라즈베리파이를 원격으로 접속하면 기존에 사용하던 그래픽 사용자 환경으로 라즈베리파

이를 사용할수 있습니다. 이로써 키보드와 마우스, 모니터 등의 추가 구성을 손쉽게 진행

할 수 있습니다. 본 매뉴얼에서는 SSH와 VNC를 이용한 원격 접속 제어 방법을 소개합니

다.

Raspberry Pi Configuration에 들어갑니다.

Page 47: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

47

라즈베리파이 완성 매뉴얼

SSH와 VNC를 Enable 시켜주고 재부팅을 함으로써 라즈베이파이에서의 준비는 완료되었

습니다.

6.1. SSH 방식

SSH(Secure Shell)은 라즈베리파이의 원격에 접속하는 흔한 방법입니다. 라즈베리파이의

모든 명령어를 사용할 수 있을 뿐만 아니라, 통신을 암호화하기 때문에 보안이 뛰어나다

는 장점이 있지만, 터미널창(콘솔 환경)만 사용할 수 있다는 단점이 있습니다.

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 에 접속하여 putty를 다

운로드 받습니다. 여기가 아닌 다른곳에서 다운로드해도 됩니다. 다운로드한 putty를 실행

합니다.

Host Name에 라즈베리파이의 IP주소를 넣고 Open을 눌러줍니다. 그러면 login as: 라고

입력 창이 나옵니다. 여기는 라즈베리파이의 아이디와 비밀번호를 입력해줍니다. 아이디

와 비밀번호를 바뀐적이 없다면 아이디는 pi이고 비밀번호는 raspberry입니다.

Page 48: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

48

라즈베리파이 완성 매뉴얼

Page 49: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

49

라즈베리파이 완성 매뉴얼

6.2. VNC 방식

VNC(Virtual Network Computing, 가상 네트워크 컴퓨팅)는 컴퓨터 환경에서 RFB 프로토

콜을 이용하여 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템입니다. 자

판과 마우스 이벤트를 한 컴퓨터에서 다른 컴퓨터로 전송시켜서 네트워크를 거쳐 그래픽

화면을 갱신하는 방식을 제공합니다. SSH를 이용한 것보다 속도가 느린 점이 있지만 그래

픽을 활용할수 있다는 장점이 있습니다.

VNC를 통한 원격 연결은 VNC뷰어라고 불리는 프로그램을 PC 또는 스마트폰에 설치해야

합니다. VNC프로그램 간에 호환이 되기 때문에 어떤 VNC클라이언트 프로그램을 쓰던 상

관이 없습니다. 본 매뉴얼은 https://www.realvnc.com/en/connect/download/viewer/에서

받은 VNC Viewer을 사용합니다. 설치가 완료되면 VNC 뷰어를 실행해 봅니다.

Page 50: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

50

라즈베리파이 완성 매뉴얼

상단의 입력란에 라즈베리파이의 IP를 넣어줍니다. 그러면 다음과 같은 창이 뜹니다.

유저네임과 패스워드를 입력해줍니다. 아이디와 비밀번호를 바뀐적이 없다면 아이디는 pi

이고 비밀번호는 raspberry입니다. 다음과 같이 연결된 모습입니다.

Page 51: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

51

라즈베리파이 완성 매뉴얼

Chapter 7. 액츄에이터 및 센서 제어

7.1. LED 제어

7.1.1. LED 소개

요즘 전자제품이나 조명제품을 보면 LED란 용어를 쉽게 접할 수 있습니다. LED(Light

Emitting Diode)란 발광 다이오드라고 불리며 순방향으로 전압을 가했을 때 발광하는

반도체 소자입니다. 과거에는 백열전구나 형광등 같은 조명이 많이 사용되었으나, LED

에 비해 전력소모가 심하고 빛의 양이 적으며, 수명이 짧고 크기가 커서 LED로 상당

수가 대체되고 있는 실정입니다. 또한, LED는 앞선 조명기구들에 비해 충격에 강하고

점등과 소등이 쉬우며, 광량 조절과 색상 조합이 쉬워 전자제품에도 많이 사용되며,

환경 친화적이라는 점에서 크게 각광받고 있습니다.

일반적으로 LED 소자는 다리가 긴 쪽이 (+)극, 짧은 쪽이 (-)극에 해당합니다. 1.8V~2V

의 전압에서 작동하며, 그 이상의 전원에는 고장 및 파손의 위험이 있습니다. 라즈베

리 파이는 3.3V 및 5V 핀을 통해 전원을 출력하거나 GPIO 입출력 핀을 통해 3.3V의

전기 신호를 출력할 수 있습니다. 프로그램을 통해 GPIO 핀의 전기 신호를 제어함으

로써 LED의 ON/OFF를 제어할 수 있습니다.

7.1.2. 제어 방법

LED를 제어하기 위해 알아야 할 것 중 하나가 GPIO (General-purpose Input Output)

입니다. GPIO란 범용으로 사용되는 입출력 포트를 말합니다. 임베디드 시스템의 여러

가지 기능을 위한 주변장치 및 소자들을 동작시키기 위해서 그것들이 원하는 방식으

로 인터페이스를 하기 위해 적절한 신호를 보내주어야 하며, 이 때, 설계자가 원하는

방식으로 제어할 수 있도록 제공하는 입출력 포트입니다.

간단히 예를 들면, LED의 ON/OFF, 7-Segment 제어, Buzzer의 소리를 발생하기 위해서

Page 52: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

52

라즈베리파이 완성 매뉴얼

입출력 포트를 통해 해당 소자에 Low(0) 혹은, High(1)의 신호를 보내주는 것입니다.

LED 램프 제어를 위해서는, LED는 양극에 5볼트의 전압을 인가하고 음극에 0볼트(접

지)를 유지하면 LED 다이오드에 전류가 흐르게 되어 램프가 점등됩니다. 이때, CPU에

의하여 전압을 조절함으로써 LED 램프 점멸을 조정합니다.

7.1.3. 실습 재료

이번 실습에서는 사용하는 재료는 다음과 같습니다.

Raspberry Pi 3 Model B+ 모듈

브레드보드

Page 53: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

53

라즈베리파이 완성 매뉴얼

LED 소자

점퍼선 MM 타입

220옴 저항

Page 54: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

54

라즈베리파이 완성 매뉴얼

코블러 보드

코블러 케이블

Page 55: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

55

라즈베리파이 완성 매뉴얼

7.1.4. 회로도

다음은 Raspberry Pi 3 모듈의 GPIO 회로도입니다.

Page 56: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

56

라즈베리파이 완성 매뉴얼

7.1.5. LED 제어 실습

Raspberry Pi의 GPIO를 이용하여 LED를 켜는 가장 간단한 실습을 해보도록 합니다.

이번 예제에서는 500ms 간격으로 LED1 한개 LED 램프를 ON/OFF 합니다.

① 다음과 같이 결선합니다.

결선 방법

라즈베리 파이 LED 소자

GND 220옴 저항 -단자(짧은쪽)

GPIO #21 +단자(긴쪽)

라즈베리 파이 GND를 220옴 저항을 거쳐 LED 소자의 –단자와 연결

라즈베리 파이 #21을 LED 소자의 +단자와 연결

Page 57: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

57

라즈베리파이 완성 매뉴얼

② 텍스트 에디터를 사용하여 다음과 같이 파일을 생성하여 프로그램을 작성합니다.

파일 생성 및 nano 에디터 실행 : nano led.py

led.py

Program Source Description

import RPi.GPIO as GPIO

from time import sleep

GPIO 라이브러리 모듈 import

시간 관련 라이브러리 모듈 import

GPIO.setmode(GPIO.BCM)

GPIO.setup(21, GPIO.OUT)

GPIO 모드 설정

GPIO 21번 핀을 신호 출력 모드 설정

try:

while True:

GPIO.output(21, True)

sleep(0.5)

GPIO.output(21, False)

sleep(0.5)

try 안의 프로그램이 실행되는 동안 키보

드 인터럽트(Ctrl+C)가 실행되면 except 안

의 코드가 실행

True 설정 시, GPIO로 3.3V 출력

500ms 지연

False 설정 시, GPIO로 3.3V 출력

500ms 지연

except KeyboardInterrupt:

GPIO.cleanup()

키보드 인터럽트 시 실행

GPIO 핀 초기화

③ 작성한 프로그램 파일을 실행하여 동작을 확인합니다.

실행 명령 : sudo python led.py

Page 58: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

58

라즈베리파이 완성 매뉴얼

7.2. 스위치를 사용한 LED 제어

7.2.1. 스위치 소개

스위치(Switch, 개폐기)는 전류의 흐름을 막거나 계속 흐르게 하는 용도의 장치입니다.

스위치라고 하면 흔히 전등을 켜고 끄는 버튼을 생각하게 됩니다. 이것도 스위치의 일

종이며, 누름 버튼 스위치, 토글 스위치, DIP 스위치, 로터리 스위치 등 다양한 종류가

있습니다.

본 교재에서 사용하는 스위치는 푸쉬 버튼 스위치(Push Button Switch)로 버튼을 누르

면 전류를 계속 흐르게 하여 신호의 상태를 제어 합니다. 푸시 버튼 스위치는 상단의

버튼 부분과 하단의 다리 4개로 구성되어 있습니다.

7.2.2. 제어 방법

스위치는 버튼을 눌러 제어합니다. 푸쉬 버튼은 탄성이 있어 누르면 다시 튀어나오려

고 합니다. 버튼을 누르면 LED가 점등됩니다.

Page 59: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

59

라즈베리파이 완성 매뉴얼

7.2.3. 실습 재료

이번 실습에서는 사용하는 재료는 다음과 같습니다.

Raspberry Pi 3 Model B+ 모듈

브레드보드

LED 소자

점퍼선 MM 타입

220옴 저항

코블러 보드

코블러 케이블

푸시 버튼

Page 60: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

60

라즈베리파이 완성 매뉴얼

7.2.4. 스위치를 사용한 LED 제어 실습

이번 실험은 스위치 버튼을 눌러 LED를 ON/OFF 하는 예제입니다.

① 다음과 같이 결선합니다.

결선 방법

라즈베리 파이 LED 소자

GND ↔ 스위치C 스위치B ↔ -단자(짧은쪽)

5V 220옴 저항 +단자(긴쪽)

라즈베리 파이 GND를 스위치C와 연결

스위치B를 LED 소자의 -단자와 연결

라즈베리 파이 5V을 220옴 저항을 거처 LED 소자의 +단자와 연결

Page 61: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

61

라즈베리파이 완성 매뉴얼

7.3. PWM을 사용한 LED 제어

7.3.1. PWM 소개

PWM(Pulse Width Modulation)

PWM(Pulse Width Modulation)이란 펄스 폭 변조라고 하며, 명칭에서 알려주듯이 펄스

전압의 High/Low를 유지하는 폭을 조절함으로써 해당 시간에 전압이 어느 정도 걸리

는 지를 제어하는 방식입니다. 아래 그림을 보면 전압이 Low에서 High로, High에서

Low로 변하는 것을 볼 수 있습니다. 이렇게 어떤 기준에서 진폭이 신속하고 과도하게

변화하는 것을 펄스라고 합니다.

Page 62: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

62

라즈베리파이 완성 매뉴얼

PWM은 아래 그림과 같이, PWM 주기, 즉, 어떤 단위 기준시간에 신호 값을 나타내는

것으로 주기에서 얼만큼의 시간 동안 펄스가 발생했는지를 듀티(Duty)비로 나타낼 수

있습니다.

7.3.2. 제어 방법

PWM을 사용하여 LED를 제어하기 위해 GPIO 라이브러리 모듈에 포함된 PWM 함수

를 이용합니다. 이 함수를 이용하면 GPIO 핀을 통해 원하는 듀티비의 파형으로 신호

의 출력이 가능합니다. 함수의 사용은 실제 프로그램 코드의 설명을 통해 학습합니다.

7.3.3. 실습 재료

이번 실습에서는 사용하는 재료는 다음과 같습니다.

Raspberry Pi 3 Model B+ 모듈

브레드보드

LED 소자

점퍼선 MM 타입

220옴 저항

코블러 보드

코블러 케이블

Page 63: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

63

라즈베리파이 완성 매뉴얼

7.3.4. PWM을 사용한 LED 밝기 조절 실습

Raspberry Pi의 GPIO와 PWM을 이용하여 LED의 밝기를 제어하는 실습을 합니다. 이

번 예제에서는 LED 램프의 밝기를 점차 증가합니다.

② 다음과 같이 결선합니다.

결선 방법

라즈베리 파이 LED 소자

GND 220옴 저항 -단자(짧은쪽)

GPIO #21 +단자(긴쪽)

라즈베리 파이 GND를 220옴 저항을 거쳐 LED 소자의 –단자와 연결

라즈베리 파이 #21을 LED 소자의 +단자와 연결

Page 64: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

64

라즈베리파이 완성 매뉴얼

③ 텍스트 에디터를 사용하여 다음과 같이 파일을 생성하여 프로그램을 작성합니다.

파일 생성 및 nano 에디터 실행 : nano led_pwm.py

led_pwm.py

Program Source Description

import RPi.GPIO as GPIO

from time import sleep

GPIO 라이브러리 모듈 import

시간 관련 라이브러리 모듈 import

GPIO.setmode(GPIO.BCM)

GPIO.setup(21, GPIO.OUT)

GPIO 모드 설정

GPIO 21번 핀을 신호 출력 모드 설정

pwm = GPIO.PWM(21, 3000)

pwm.start(0)

pwm 이름으로 PWM 채널 생성

(21번 핀 사용, 초당 펄스 횟수 3000번)

0%로 출력 시작

(100%까지 조절 가능, 0~3.3V 신호 출력)

duty = 0

try:

while True:

pwm.ChangedutyCycle(duty)

duty = duty + 1

sleep(0.5)

pwm 출력 변수

try 프로그램 실행 동안 키보드 인터럽트

(Ctrl+C)가 실행되면 except 코드 실행

pwm 출력 변수에 0~100을 대입하여

1~100% 듀티비 조절

500ms 지연

except KeyboardInterrupt:

GPIO.cleanup()

pwm.stop()

키보드 인터럽트 시 실행

GPIO 핀 초기화

Pwm 출력 중단

④ 작성한 프로그램 파일을 실행하여 동작을 확인합니다.

실행 명령 : sudo python led_pwm.py

Page 65: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

65

라즈베리파이 완성 매뉴얼

7.4. 동작 센서

7.4.1. 동작 센서 소개

동작 센서는 동작을 감지하는 센서로 여기서는 BISS0001 칩을 사용하는 DYP-ME003

PIR Motion Sensor Module을 사용합니다.

PIR(Passive Infrared)센서는 사람이 센서의 범위에 들어왔는지, 또는 나갔는지 검출하기

위해 사용합니다. 센서는 작고, 저가이며, 저전력에 사용하기 쉬우며, 외부에 설치하지

않는다. 이런 이유로 일반적으로 가정이나 기업에서 사용되는 기기에서 사용됩니다.

이것은 종종 “Pyroelectric” 또는 “IR motion”이라고 언급되기도 합니다.

PIR은 기본적으로 적외선의 레벨을 검출할 수 있는 초전 센서로 구성됩니다(초전 센서

를 덮고 있는 반구 형태의 커버를 벗기면 중앙에 사각형 크리스탈을 장착한 둥근 금

속을 확인할 수 있습니다.). 즉, 적외선을 띈 물체의 움직임는 감지하는 센서입니다. 태

양 빛과 같이 PIR 센서가 감지 가능한 대역의 빛이 있다면 오동작 합니다.

이 모듈은 5V 전원에서 동작하며, 3개의 핀을 연결하여 사용합니다.

PIR Motion Sensor의 특징은 다음과 같습니다.

Input Voltage: DC 4.5-20V

Static current: 50uA

Trigger: H-Yes, L-No

Block time: 2.5 S(default)

Delay time: 5 S(default)

Sentry Angle: < 110 degree

Sentry Distance: 3 m(default) - max 7 m

Lens Size: Diameter: 23mm(Default)

Dimensions: 32mm * 24mm

Page 66: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

66

라즈베리파이 완성 매뉴얼

7.4.2. 제어 방법

동작 센서는 110도 범위각에서 기본 3m, 최대 7m 범위의 거리에 물체의 움직임을

감지합니다. 움직임이 감지되면 OUT 핀을 통하여 디지털 신호를 전송합니다. 전송된

신호는 라즈베리 파이에 전달되고 디지털 입력핀을 통하여 값을 읽어 확인합니다.

DYP-ME033 PIR Motion Sensor의 밑면을 살펴보면 다음 그림과 같이 2개의 가변

저항이 장착되어 있는 것을 확인할 수 있습니다. 사진의 우측 가변 저항은 지연

시간(Delay Time)을 조절하며, 좌측 가변 저항은 센싱 거리(Distance)를 조절합니다.

각각의 가변저항을 시계방향으로 돌리면, 지연 시간이 약 5초에서 300초까지

증가하며, 센싱 거리가 약 3m에서 7m까지 증가합니다.

Page 67: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

67

라즈베리파이 완성 매뉴얼

7.4.3. 실습 재료

이번 실습에서는 사용하는 재료는 다음과 같습니다.

Raspberry Pi 3 Model B+ 모듈

브레드보드

LED 소자

점퍼선 MM 타입

220옴 저항

코블러 보드

코블러 케이블

PIR Motion Sensor

Page 68: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

68

라즈베리파이 완성 매뉴얼

7.4.4. 회로도

다음은 PIR Motion Sensor의 회로도입니다.

7.4.5. 동작 센서 제어 실습

이번 실험은 동작 센서에 의해 동작 감지 여부를 확인합니다.

① 다음과 같이 결선합니다.

Page 69: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

69

라즈베리파이 완성 매뉴얼

결선 방법

라즈베리 파이 PIR 모션센서 LED 소자

GPIO #21 +단자(긴쪽)

GND 220옴 저항 -단자(짧은쪽)

GND GND

GPIO #18 신호핀(OUT)

5V VCC

라즈베리 파이 GPIO #21을 LED 소자의 +단자와 연결

라즈베리 파이 GND를 220옴 저항을 거처 LED 소자의 -단자와 연결

라즈베리 파이 GND를 PIR 모션센서의 GND와 연결

라즈베리 파이 GPIO #18을 PIR 모션센서의 신호핀(OUT)과 연결

라즈베리 파이 5V를 PIR 모션센서의 VCC와 연결

② 텍스트 에디터를 사용하여 다음과 같이 파일을 생성하여 프로그램을 작성합니다.

파일 생성 및 nano 에디터 실행 : nano motion.py

motion.py

Program Source Description

import RPi.GPIO as GPIO

from time import sleep

GPIO 라이브러리 모듈 import

시간 관련 라이브러리 모듈 import

GPIO.setmode(GPIO.BCM)

GPIO.setup(21, GPIO.OUT)

GPIO.setup(18, GPIO.IN)

GPIO 모드 설정

GPIO 21번 핀을 신호 출력 모드 설정

GPIO 18번 핀을 신호 입력 모드 설정

try:

while True:

if GPIO.input(18) == True:

print("Detect!")

GPIO.output(21, True)

sleep(0.3)

if GPIO.input(18) == False:

GPIO.output(21, False)

try 안의 프로그램이 실행되는 동안 키보

드 인터럽트(Ctrl+C)가 실행되면 except

안의 코드가 실행

입력 신호가 있으면,

“Detect!”를 출력

True 설정 시, GPIO로 3.3V 출력

300ms 지연

입력 신호가 없으면,

False 설정 시, GPIO로 3.3V 출력

except KeyboardInterrupt:

GPIO.cleanup()

키보드 인터럽트 시 실행

GPIO 핀 초기화

Page 70: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

70

라즈베리파이 완성 매뉴얼

③ 작성한 프로그램 파일을 실행하여 동작을 확인합니다.

실행 명령 : sudo python motion.py

④ 수행 tip

센서가 움직임을 감지 할 수 있는 범위 내에서 동작 여부를 확인 합니다. 움직임이 있

음에도 불구하고 감지가 정상적으로 이루어 지지 않는 경우, 동작센서에 부착되어 있

는 가변저항을 적절히 조절합니다.

Page 71: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

71

라즈베리파이 완성 매뉴얼

7.5. 수위 센서

7.5.1. 수위 센서 소개

수위 센서는 물의 높이를 측정하는 센서입니다. 센서의 측정부를 물에 담그고 물의

높이를 조절하며 출력되는 아날로그 센싱 값을 라즈베리 파이의 ADC 기능을 통하여

디지털로 변환하여 측정합니다.

7.5.2. 제어 방법

수위 센서는 측정된 수위를 해당하는 포트 핀으로 출력합니다. 출력 값은 아날로그

이므로 ADC(Analog to Digital Converter) 기능을 통하여 이를 디지털 수치로 변환하여

확인이 가능합니다. ADC를 통해 센서에서 출력되는 전압을 디지털로 변환하고 이

값을 출력합니다.

라즈베리 파이는 아날로그 신호 입력 단자가 없으므로 별도의 외부 장치를 사용해야

합니다. 일반적으로 ADC 칩을 사용하며, 본 교재에서는 MCP3008 칩을 사용하여

아날로그 신호를 디지털 신호로 변환하여 라즈베리 파이에 입력합니다.

MCP3008은 8개의 아날로그 신호 입력 채널을 가지고 있으며, 입력 신호는 디지털

신호로 변환하여 SPI 출력합니다. 라즈베리 파이는 SPI 통신을 사용할 수 있도록 다음

명령어를 통해 환경을 설정합니다.

sudo raspi-config

→ 5. Interfacing Optioins → P4 SPI → YES → OK

Page 72: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

72

라즈베리파이 완성 매뉴얼

그리고 다음과 같이 관련 파일을 설치하고 재부팅 합니다.

cd ~

sudo apt-get install python-dev

git clone git://github.com/Gadgetoid/py-spidev.git

cd py-spidev/

sudo python setup.py install

sudo shutdown –r now

ADC를 구동하기 위해서는 일단 입력 값이 필요합니다. 센서의 신호핀(S)을

MCP3008의 CH0 핀과 연결하여 센싱된 아날로그 입력을 받도록 합니다.

수위 센서는 수위가 높은 경우, 수치가 높게 나타나며, 수위가 낮은 경우, 수치가 낮게

나타난다.

7.5.3. 실습 재료

이번 실습에서는 사용하는 재료는 다음과 같습니다.

Raspberry Pi 3 Model B+ 모듈

브레드보드

LED 소자

점퍼선 MM 타입

220옴 저항

코블러 보드

코블러 케이블

수위 센서

Page 73: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

73

라즈베리파이 완성 매뉴얼

7.5.4. 수위 센서 제어 실습

이번 실험은 수위 센서에 의해 물 높이를 측정 합니다.

① 다음과 같이 결선합니다.

결선 방법

라즈베리파이 MCP3008 수위 센서 LED 소자

3.3V VDD

3.3V VREF

SCLK CLK

MISO DOUT

MOSI DIN

CEO CS/SHDN

GND DGND 220옴 저항 -단자(짧은쪽)

GND AGND - (GND)

5V + (VCC)

CH0 S (Signal) +단자(긴쪽)

라즈베리 파이 3.3V를 MCP3008 VDD와 연결

라즈베리 파이 3.3V를 MCP3008 VREF와 연결

라즈베리 파이 SCLK를 MCP3008 CLK와 연결

Page 74: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

74

라즈베리파이 완성 매뉴얼

라즈베리 파이 MISO를 MCP3008 DOUT과 연결

라즈베리 파이 MOSI를 MCP3008 DIN과 연결

라즈베리 파이 CEO를 MCP3008 CS/SHDN과 연결

라즈베리 파이 GND를 MCP3008 DGND와 연결

라즈베리 파이 GND를 MCP3008 AGND와 연결

라즈베리 파이 GND를 수위 센서 –(GND)와 연결

라즈베리 파이 GND를 220옴 저항을 거처 LED 소자의 –단자와 연결

라즈베리 파이 5V를 수위 센서 +(VCC)와 연결

MCP3008 CH0을 수위 센서 S(Signal)와 연결

MCP3008 CH0을 LED 소자의 +단자와 연결

⑤ 텍스트 에디터를 사용하여 다음과 같이 파일을 생성하여 프로그램을 작성합니다.

파일 생성 및 nano 에디터 실행 : nano water.py

water.py

Program Source Description

import spidev

from time import sleep

SPI 라이브러리 모듈 import

시간 관련 라이브러리 모듈 import

spi = spidev.SpiDev()

spi.open(0,0)

spi.max_speed_hz = 1000000

spi.mode = 3

WATER_CHANNEL = 0

spi 이름으로 장치 설정

spi 시작

spi 속도 설정 1MHz

spi 모드 설정

센서 spi 채널 0

def readAnalog(channel):

r = spi.xfer2([1, (8 + channel) << 4, 0])

adc_out = ((r[1]&3) << 8) + r[2]

return adc_out

해당 채널의 아날로그 값 읽는 함수

while True:

voltage = readAnalog(0)*3.3/1024

print(voltage)

sleep(1)

읽은 아날로그 데이터값을 전압으로 변환

디버깅 창에 출력

1초 지연

② 작성한 프로그램 파일을 실행하여 동작을 확인합니다.

실행 명령 : sudo python water.py

Page 75: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

75

라즈베리파이 완성 매뉴얼

7.6. 초음파 센서

7.6.1. 초음파 센서 소개

초음파 센서는 센서와 물체 사이의 거리를 측정하는 센서로 여기서는 HC-SR04 Ultra-

sonic Sensor Distance Measuring Module을 사용합니다. 이 모듈은 2 - 500cm의 거리

의 비 연결 측정 기능을 제공합니다. 센싱되는 범위는 3mm의 정확성을 가질 수 있습

니다. 모듈은 초음파 송신기 및 수신기, 그리고 제어 회로를 포함합니다. 5V 전원에서

동작하며, 4개의 핀을 연결하여 사용합니다.

HC-SR04 Ultrasonic Sensor의 특징은 다음과 같습니다.

power supply :5V DC

quiescent current : <2mA

effectual angle: <15°

ranging distance : 2cm – 500 cm

resolution : 0.3 cm

7.6.2. 제어 방법

초음파 센서는 초음파를 발생하고 물체에 부딪혀 돌아오는 시간을 측정함으로써

거리를 센싱합니다. Echo 핀(EP) 출력 신호와 Trig 핀(TP) 입력 신호를 이용합니다.

최소 10us HIGH 레벨 신호를 통한 IO trigger를 사용하며, 모듈은 자동으로 8번의

40kH 신호를 보내고 펄스 신호가 돌아오는지 여부를 검출합니다. 만약, HIGH 레벨을

통해 신호가 돌아오면, HIGH 출력 IO 지속 시간은 되돌아 오는 초음파가 보내지는

시간입니다. 이 때, 시험 거리는 다음과 같이 계산합니다.

Distance = (high level time × velocity of sound (340M/S) / 2

Page 76: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

76

라즈베리파이 완성 매뉴얼

다음은 타이밍 다이어그램입니다.

센싱을 시작할 때, 트리거 입력에 짧은 10uS 펄스를 제공해야 합니다. 그리고 모듈은

40kHz의 초음파의 버스트(Burst)를 8차례 전송하고, 그것의 에코를 수신합니다. 에코는

펄스의 폭과 비례한 범위의 거리 객체입니다.

전송하는 트리거 신호와 받는 에코 신호 사이의 시간 간격을 통하여 그 범위를

계산할 수 있습니다. 센싱이 시작되고 다음 센싱이 시작 되기까지의 간격, 즉, 측정

주기는 60ms 이상으로 사용하는 것이 좋다. 이는 에코 신호 중에 트리거 신호가

전달되는 것을 방지하기 위함입니다.

Page 77: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

77

라즈베리파이 완성 매뉴얼

7.6.3. 실습 재료

이번 실습에서는 사용하는 재료는 다음과 같습니다.

Raspberry Pi 3 Model B+ 모듈

브레드보드

점퍼선 MM 타입

코블러 보드

코블러 케이블

초음파 센서(HC-SR04)

7.6.4. 회로도

다음은 HC-SR04 Ultrasonic Sensor의 회로도입니다.

Page 78: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

78

라즈베리파이 완성 매뉴얼

7.6.5. 초음파 센서 제어 실습

이번 실험은 초음파 센서로부터 측정한 거리 값을 모니터링 합니다.

① 다음과 같이 결선합니다.

결선 방법

Raspberry Pi Adapter Board의 포트 J6의 핀 GPIO4를 HC-SR04 Ultrasonic

Sensor 모듈의 Trig 핀에 연결

Raspberry Pi Adapter Board의 포트 J6의 핀 GPIO17을 HC-SR04 Ultrasonic

Sensor 모듈의 Echo 핀에 연결

Raspberry Pi Adapter Board의 포트 J6의 핀 GND를 HC-SR04 Ultrasonic

Sensor 모듈의 GND 핀에 연결

Raspberry Pi Adapter Board의 포트 J6의 핀 +5V를 HC-SR04 Ultrasonic Sen-

sor 모듈의 Vcc 핀에 연결

Page 79: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

79

라즈베리파이 완성 매뉴얼

결선 방법

라즈베리 파이 초음파 센서

GPIO #20 Trig

GPIO #21 Echo

GND GND

5V VCC

라즈베리 파이 GPIO #20을 초음파 센서의 Trig 핀과 연결

라즈베리 파이 GPIO #21을 초음파 센서의 Echo 핀과 연결

라즈베리 파이 GND를 초음파 센서의 GND와 연결

라즈베리 파이 GND를 초음파 센서의 VCC와 연결

⑥ 텍스트 에디터를 사용하여 다음과 같이 파일을 생성하여 프로그램을 작성합니다.

파일 생성 및 nano 에디터 실행 : nano ultrasonic.py

ultrasonic.py

Program Source Description

import RPi.GPIO as GPIO

import time

GPIO 라이브러리 모듈 import

시간 관련 라이브러리 모듈 import

TRIG_PIN = 20

ECHO_PIN = 21

Trig 핀 지정

Echo 핀 지정

def initUltrasonic():

GPIO.setup(TRIG_PIN, GPIO.OUT)

GPIO.setup(ECHO_PIN, GPIO.IN)

초음파 센서 초기화 함수

Trig핀 출력 설정

Echo핀 출력 설정

def controlUltrasonic():

distance = 0.0

GPIO.output(TRIG_PIN, False)

time.sleep(0.5)

GPIO.output(TRIG_PIN, True)

time.sleep(0.00001)

GPIO.output(TRIG_PIN, False)

while GPIO.input(ECHO_PIN) == 0 :

pulse_start = time.time()

while GPIO.input(ECHO_PIN) == 1 :

초음파 센서 제어 함수

거리 변수 선언

Trig핀 LOW 신호 출력

500ms 지연

Trig핀 HIGH 신호 출력

10us 지연

Trig핀 LOW 신호 출력

Echo 핀 신호 입력 대기

대기 시작 시간 측정

Echo 핀 신호 입력

Page 80: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

80

라즈베리파이 완성 매뉴얼

pulse_end = time.time()

pulse_duration = pulse_end - pulse_start

distance = pulse_duration * 17000

distance = round(distance, 2)

return distance

입력 시간 측정

시간차 계산

거리 계산

def main():

GPIO.setmode(GPIO.BCM)

distance = 0.0

initUltrasonic()

print "Ultrasonic Operating ..."

try:

while True:

distance = controlUltrasonic()

print("Distance:%.2f cm"%distance)

except KeyboardInterrupt:

GPIO.cleanup()

메인 함수

GPIO 모드 설정

거리 변수 설정

초음파 센서 초기화

try 안 프로그램 실행 동안 키보드 인터

럽트(Ctrl+C) 실행시 except 안 코드 실행

거리 측정

터미널 창에 거리 출력

키보드 인터럽트 시 실행

GPIO 핀 초기화

if __name__ == '__main__':

main()

메인 함수 실행

⑦ 작성한 프로그램 파일을 실행하여 동작을 확인합니다.

실행 명령 : sudo python ultrasonic.py

Page 81: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

81

라즈베리파이 완성 매뉴얼

Chapter 8. 라즈베리 파이 카메라 사용하기

8.1. 라즈베리 파이 카메라

카메라 보드는 라즈베리 파이 상의 CSI 커넥터에 직접 연결합니다. 그것은 최신 1.3버

전으로 맑은 5M 화소(Pixel) 해상도 이미지, 또는 초당 30 프레임의 1080p HD 비디오

레코딩을 제공할 수 있습니다. 보드는 고정 초점 모듈인 5M 픽셀(2592ⅹ1944 픽셀)

옴니비전(Omnivision) 5647 센서를 사용합니다. 이 모듈은 15핀 리본(Ribbon) 케이블

을 사용하여 카메라 인터페이스를 위해 특별히 디자인된 전용 15핀 MIPI 카메라 시리

얼 인터페이스(CSI)를 사용하는 라즈베리 파이에 연결됩니다. CSI 버스는 매우 높은 데

이터 전송률을 가지며, 독점적으로 BCM2835/2836 프로세서로 픽셀 데이터를 전송합

니다.

카메라 모듈의 특징은 다음과 같습니다.

Compatible with all models of Raspberry Pi 1 and 2

5MP omnivision 5647 camera module

Still picture resolution of 2592 x 1944

Video supports 1080p at 30fps, 720p at 60fps and 640x480p 60/90 recording

15 pin MIPI camera serial interface plugs directly into the Raspberry Pi Board

Size is 20mm x 25mm x 9mm

Weight of 3g

Fully compatible with the ModMyPi Raspberry Pi Case

8.2. 제어 방법

라즈베리 파이에 카메라 모듈을 연결하기 위해 플렉스(flex) 케이블은 HDMI 포트와 이

더넷 포트 사이에 위치한 커넥터에 삽입합니다. 플렉스 케이블 커넥터는 커넥터의 상

단에 위치한 탭을 위쪽으로 당김으로써 개방되어야 합니다. 플렉스 케이블은 너무 심

각한 각도로 구부러지지 않도록 주의하며 커넥터에 단단히 삽입되어야 합니다. 커넥터

의 상단 부분은 플렉스 케이블이 제 위치에 유지되는 동안 아래쪽으로 밀어 연결합니

다. 라즈베리 파이 카메라 모듈의 연결 방법을 다룬 영상이 홈페이지에 배포되어 있으

므로 이를 참고합니다.

카메라 모듈은 투명 청색 플라스틱 필름의 작은 조각이 렌즈를 덮고 있습니다. 이것은

카메라 모듈이 운송되는 동안 렌즈를 보호하기 위해 존재하므로, 부드럽게 제거 해줍

Page 82: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

82

라즈베리파이 완성 매뉴얼

니다.

라즈베리 파이에서 카메라를 사용하기 위해서는 설정에서 이를 허용해 주어야 합니다.

터미널에서 “sudo raspi-config” 명령을 이용하여 설정 메뉴로 들어간다.

“Enable camera”를 선택하고, 설정을 종료하며 재부팅합니다.

Page 83: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

83

라즈베리파이 완성 매뉴얼

카메라 모듈의 연결과 설정이 완료되면 쉘 터미널(리눅스 명령 줄)을 통해 카메라 라

이브러리를 사용할 수 있습니다. 기본적으로 사진과 비디오를 캡처할 수 있으며, 옵션

을 통해 동작을 다양하게 제어할 수 있습니다.

기본 명령어 용법은 다음과 같습니다.

raspistill

카메라 모듈로 스틸(still) 사진을 캡처합니다.

raspivid

카메라 모듈로 비디오를 캡처합니다.

raspiyuv

스틸 사진을 캡처하고 원시의 처리되지 않은 이미지 파일을 생성합니다.

명령어와 함께 사용되는 옵션은 실험을 통해 알아봅니다.

8.3. 사용 모듈

이번 실험에서는 다음 모듈을 사용합니다.

Raspberry Pi 3 B+ 모듈

Camera 모듈

Page 84: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

84

라즈베리파이 완성 매뉴얼

8.4. 카메라 제어 실습

이번 실험은 Camera 모듈과 라즈베리 파이에서 제공하는 제어 명령어와 명령어 옵션

을 사용하여 사진과 비디오를 캡처합니다. 스틸 캡처시, 생성되는 파일 이름이나 캡처

시간, 이미지 크기, 화질, Timelapse 등을 옵션을 통해 설정합니다(raspistill Camera

App v1.3.8). 또한, 비디오 캡처시, 생성되는 파일 이름과 캡처 시간, bitrate, framerate

등을 옵션을 통해 설정합니다(raspivid Camera App v1.3.12).

① Raspberry Pi와 Camera 모듈을 다음과 같이 결선합니다.

결선 방법

Raspberry Pi 모듈의 CSI 커넥터에 Camera 모듈과 연결된 플렉스(flex) 케이

블을 연결

Page 85: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

85

라즈베리파이 완성 매뉴얼

② 라즈비안의 쉘(명령 줄)에 다음 명령어와 옵션을 입력하여 파일을 생성하고 생성된

파일을 통해 동작을 확인합니다.

스틸 사진 캡처

명령어 [옵션] 설명

raspistill -o image.jpg “image.jpg”로 파일 이름 지정

raspistill -t 2000 -o image.jpg 사진 캡처 전 2초 시간 대기

raspistill -o image.jpg -w 640 -h 480 이미지 폭을 640, 높이를 480으로 지정

raspistill -o image.jpg –q 5 Jpeg 화질을 5로 설정(0~100 가능)

raspistill -o image_%d.jpg –tl 2000 –t 8000 8초 동안 2초 경과할 때 마다

“%d”의 숫자를 1씩 증가하는 이름으로

파일을 생성하며 사진 캡처

비디오 캡처

명령어 [옵션] 설명

raspivid -o video.h264 “video.h264”로 파일 이름 지정

raspivid -t 10000 -o video.h264 10초 동안 영상 캡처(기본 5초)

raspivid -t 5000 -o video.h264 -b 3500000 3.5Mbits/s로 영상 캡처

raspivid -t 5000 -o video.h264 -f 5 5fps로 영상 캡처

8.5. 카메라 웹 스트리밍 실습

라즈베리 카메라를 사용하면 웹을 통해 CCTV를 촬영하는 것과 유사한 방식으로 사용

이 가능합니다. JPG 이미지를 연속으로 촬영하여 웹으로 전송하고 웹을 통해 확인 합

니다.

① Mjpg-stream 컴파일을 위한 라이브러리 및 cmake 패키지를 설치합니다.

sudo apt-get install git cmake libjpeg8-dev imagemagick –y

② vediodev.h 헤더파일을 변경된 videodev2.h 파일로 링크합니다.

sudo ln –s /usr/include/linex/videodev2.h /usr/include/linux/videodev.h

③ mjpg-streamer 다운로드 및 컴파일을 합니다.

git clone https://github.com/liamfraser/mjpg-streamer

cd ~

cd ~/mjpg-streamer/mjpg-streamer-experimental

Page 86: 라즈베리 파이 완성 매뉴얼 - cndiworld.cafe24.com · 파이(Raspberry Pi)는 영국의 라즈베리 파이 재단이 학교에서 컴퓨터 및 과학 교 육의 증진을

86

라즈베리파이 완성 매뉴얼

④ 이동한 폴더에서 다음 명령어를 통해 컴파일 합니다.

make clean all

⑤ 웹 스트리밍을 구현하기 위해 다음을 실행한다.

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 "out-

put_http.so -w $STREAMER_PATH/www"

크롬으로 다음 주소에 접속합니다.

http://라즈베리 파이 아이피:8080/?action=stream

예) http://192.168.10.113:8080/?action=stream

라즈베리 파이 아이피 주소는 터미널에서 ifconfig 명령어를 통해 확인 가능합니다.