2. Chapter 4. 1 라즈베리파이란
영국에서 개발된 신용카드보다 조금 더 큰 사이즈의 소형 컴퓨터 (single-board computer)로
학교에서 컴퓨터 프로그래밍 교육을 촉진하기 위해서 개발됨.
실제 컴퓨터와 마찬가지로, 모니터, 키보드, 마우스 등을 연결할 수 있고, 이더넷 포트가 있음.
컴퓨터와 마찬가지로 시간이 지나면서 성능면에서 진화되는 양상을 보임
독자적인 운영체제(Operating System, OS)를 가지고 있으며, 라즈베리파이 웹사이트에서
무료로 다운로드 받을 수 있는 리눅스 기반 OS.
라즈베리파이
4. Chapter 4. 3 라즈베리파이 레이아웃 및 GPIO (B+, Pi2)
라즈베리파이1 B+와 라즈베리파이2 B의 레이아웃
파이카메라(PiCamera) 확장 쉴드들
5. Chapter 4. 3 라즈베리파이 레이아웃 및 GPIO (B+, Pi2)
라즈베리파이1 B+와 라즈베리파이2 B의 GPIO는 동일
GPIO: General Purpose Input/Output)
import RPi.GPIO as GPIO ## Import GPIO Library
import time ## Import 'time' library (for 'sleep')
outPin = 7 ## LED connected to pin 7
inPin = 13 ## Switch connected to pin 13
GPIO.setmode(GPIO.BOARD) ## Use BOARD pin numbering
GPIO.setup(outPin, GPIO.OUT) ## Set pin 7 to OUTPUT
GPIO.setup(inPin, GPIO.IN) ## Set pin 13 to INPUT
while True: ## Do this forever
value = GPIO.input(inPin) ## Read input from switch
if value: ## If switch is released
GPIO.output(outPin, 0) ## Turn off LED
else: ## Else switch is pressed
GPIO.output(outPin, 1) ## Turn on LED
GPIO.cleanup() ## Cleanup
6. Chapter 4. 4 라즈베리파이 for 사물인터넷
Why 라즈베리파이?
• 사물인터넷의 꽃인, 센서 네트워크라는 도메인에 적합한 가성비가 훌륭한 모델
• 와이파이 및 이더넷과 연결함으로, 원격 제어 및 모니터링이 가능하며, IoT 컨셉에 맞음
• 다양한 프로그래밍 언어(Java, Python, C 등)을 지원하며, 카메라를 통한 스트리밍이 가능
• 초소형 제품에는 적합하지 않을 수 있으나, 개발 툴 키트로는 훌륭함
• 사물인터넷의 핵심인, 1) 디바이스, 2) 인터넷, 3) 서비스를 모두 충족시킬 수 있는 제품
7. Chapter 4. 5 라즈베리파이에 OS 설치하기
http://www.raspberrypi.org/downloads/
Step 1. 라즈베리파이 웹사이트에 접속해서 압축된 NOOBS 파일을 풀어서 microSD 카드에 저장
8. Chapter 4. 5 라즈베리파이에 OS 설치하기
Step 2. Micro SD 카드를 라즈베리파이에 끼운 후, 전원/HDMI, 키보드, 마우스 등을 연결하
고 전원을 인가.
9. Chapter 4. 5 라즈베리파이에 OS 설치하기
Step 3. 대부분의 사람들이 사용하는 Raspbian이라는 OS를 설치 (많은 사람들이 사용하고
있기 때문에, 에러 및 문제를 해결하기 용이)
10. Chapter 4. 5 라즈베리파이에 OS 설치하기
Step 4. 비밀번호 변경, 국가 설정등을 하고 startx를 입력해서 GUI (Graphical User Interface)
에 로그인
GUI (Graphical User Interface)
11. Chapter 4. 5 라즈베리파이로 인터넷 연결하기
이더넷 연결시
WIFI 연결시
이더넷: 이더넷 케이블(LAN선)을 라우터에 연결
와이파이: WIFI 동글을 끼우고,
데스크탑의 WIFI config 사용
12. Chapter 4. 5 라즈베리파이 끄고 켜기
Username: pi
Password: raspberry
라즈베리파이에는 전원 스위치가 없기 때문에, 전원을 내리기 위해선 다음의 명령어를 통해
시스템을 정지 (halt)시킨 후, 전원 어댑터를 차단한다.
재부팅을 위해서는 –h 대신에 –r 파라미터를 통해 명령하고, 재부팅시 Username과 Password는
각각 pi 와 raspberry이다.
13. Chapter 4. 6 라즈베리파이 에디터 VIM
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install vim
$vim
14. Chapter 4. 6 라즈베리파이 에디터 VIM
알파벳 i 를 누르면 입력상태로 변경
Esc를 누르면 아래 INSERT가 사라짐
저장하기
:w [파일명] ex) :w test.txt
15. Chapter 4. 6 라즈베리파이 에디터 VIM
기본적인 세팅 구축하기 (색깔 Syntax 및 줄번호 등등
$vim ~/.vimrc
16. Chapter 4. 7 라즈베리파이를 활용한 모터 제어
준비물: 라즈베리파이, 브레드보드, T-코블러 브레이크아웃보드, 2N2222 트랜지스터, SG90
1K 저항 2개, 5V 전원
17. Chapter 4. 7 라즈베리파이를 활용한 모터 제어
wiringPi.h 설치
$cd
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install git-core
$git clone git://git.drogon.net/wiringPi
$cd wiringPi
$./build
$gpio readall
$gpio readall 결과
18. Chapter 4. 7 라즈베리파이를 활용한 모터 제어
#include <wiringPi.h> //wiringPi.h 선언
#include <stdio.h>
#include <stdlib.h>
#include <softPwm.h>
int main (int argc, char *argv[])
{
int pos = 180 ;
int dir = 1 ;
if (wiringPiSetup() == -1) exit(1) ; //init wiringPi
pinMode(0, OUTPUT) ; //set the 0 pin as OUTPUT
digitalWrite(0, LOW) ; //0 pin output LOW voltage
softPwmCreate(0, 0, 200) ; //pwm initialize HIGH time 0, LOW
time 200ms
while(1) {
pos += dir ;
if (pos < 180 || pos > 194) dir *= -1 ;
softPwmWrite(0, pos) ;
delay(50) ;
}
return 0 ;
}
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
gpio.setup(27, gpio.OUT)
val = 1
inc = 0.1
try :
while True :
gpio.output(27, False)
time.sleep(val / 1000.0)
gpio.output(27, True)
time.sleep((20 - val) / 1000.0)
val += inc
time.sleep(0.05)
if val > 2 or val < 0.6 :
inc *= -1
except KeyboardInterrupt :
gpio.cleanup()
$mkdir ~/py_sources
$cd ~/py_sources
$vim servo.py
$gcc servo.c -o servo –lwiringPi
$sudo ./servo
$mkdir ~/c_sources
$cd ~/c_sources
$vim servo.c
$sudo python servo.py
C 코딩 파이썬 코딩
19. Chapter 4. 8 라즈베리파이를 활용한 초음파 센서 사용
준비물: 라즈베리파이, 브레드보드, T-코블러 브레이크아웃보드, 2N2222 트랜지스터, SG90
1K 저항 2개, 5V 전원
5.0V
GND
13번핀 (BCM기준)
19번핀 (BCM기준)