SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
사물인터넷
Internet of Things (IoT)
CHAPTER 4
_라즈베리파이 기본
Chapter 4. 1 라즈베리파이란
영국에서 개발된 신용카드보다 조금 더 큰 사이즈의 소형 컴퓨터 (single-board computer)로
학교에서 컴퓨터 프로그래밍 교육을 촉진하기 위해서 개발됨.
실제 컴퓨터와 마찬가지로, 모니터, 키보드, 마우스 등을 연결할 수 있고, 이더넷 포트가 있음.
컴퓨터와 마찬가지로 시간이 지나면서 성능면에서 진화되는 양상을 보임
독자적인 운영체제(Operating System, OS)를 가지고 있으며, 라즈베리파이 웹사이트에서
무료로 다운로드 받을 수 있는 리눅스 기반 OS.
라즈베리파이
Chapter 4. 2 라즈베리파이 비교
Raspberry Pi1 A+ Raspberry Pi1 B+ Raspberry Pi2 B Beaglebone Black Intel Edison
CPU ARM11 ARM11 Cortex A7 Cortex A8 Atom+Quark
Cores 1 1 4 1 2+1
Clock 700MHz 700MHz 900MHz 1000MHz 500MHz
GPU Videocore IV Videocore IV Videocore IV PowerVR SGX530 없음
Memory 256MB 512MB 1GB 512MB 1GB
USB Ports 1 4 4 2 1*
Flash 없음 없음 없음 2GB 4GB
저장 microSD microSD microSD microSD mircoSD
GPIO 40핀 40핀 40핀 2x46핀 70핀
내장형 WIFI 없음 없음 없음 없음 있음
내장형 Bluetooth 없음 없음 없음 없음 있음
사이즈(cm) 6.5x5.3 8.5x5.3 8.5x5.3 8.6x5.3
가격(US) $20 $35 $35 $49 $85
Chapter 4. 3 라즈베리파이 레이아웃 및 GPIO (B+, Pi2)
라즈베리파이1 B+와 라즈베리파이2 B의 레이아웃
파이카메라(PiCamera) 확장 쉴드들
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
Chapter 4. 4 라즈베리파이 for 사물인터넷
Why 라즈베리파이?
• 사물인터넷의 꽃인, 센서 네트워크라는 도메인에 적합한 가성비가 훌륭한 모델
• 와이파이 및 이더넷과 연결함으로, 원격 제어 및 모니터링이 가능하며, IoT 컨셉에 맞음
• 다양한 프로그래밍 언어(Java, Python, C 등)을 지원하며, 카메라를 통한 스트리밍이 가능
• 초소형 제품에는 적합하지 않을 수 있으나, 개발 툴 키트로는 훌륭함
• 사물인터넷의 핵심인, 1) 디바이스, 2) 인터넷, 3) 서비스를 모두 충족시킬 수 있는 제품
Chapter 4. 5 라즈베리파이에 OS 설치하기
http://www.raspberrypi.org/downloads/
Step 1. 라즈베리파이 웹사이트에 접속해서 압축된 NOOBS 파일을 풀어서 microSD 카드에 저장
Chapter 4. 5 라즈베리파이에 OS 설치하기
Step 2. Micro SD 카드를 라즈베리파이에 끼운 후, 전원/HDMI, 키보드, 마우스 등을 연결하
고 전원을 인가.
Chapter 4. 5 라즈베리파이에 OS 설치하기
Step 3. 대부분의 사람들이 사용하는 Raspbian이라는 OS를 설치 (많은 사람들이 사용하고
있기 때문에, 에러 및 문제를 해결하기 용이)
Chapter 4. 5 라즈베리파이에 OS 설치하기
Step 4. 비밀번호 변경, 국가 설정등을 하고 startx를 입력해서 GUI (Graphical User Interface)
에 로그인
GUI (Graphical User Interface)
Chapter 4. 5 라즈베리파이로 인터넷 연결하기
이더넷 연결시
WIFI 연결시
이더넷: 이더넷 케이블(LAN선)을 라우터에 연결
와이파이: WIFI 동글을 끼우고,
데스크탑의 WIFI config 사용
Chapter 4. 5 라즈베리파이 끄고 켜기
Username: pi
Password: raspberry
라즈베리파이에는 전원 스위치가 없기 때문에, 전원을 내리기 위해선 다음의 명령어를 통해
시스템을 정지 (halt)시킨 후, 전원 어댑터를 차단한다.
재부팅을 위해서는 –h 대신에 –r 파라미터를 통해 명령하고, 재부팅시 Username과 Password는
각각 pi 와 raspberry이다.
Chapter 4. 6 라즈베리파이 에디터 VIM
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install vim
$vim
Chapter 4. 6 라즈베리파이 에디터 VIM
알파벳 i 를 누르면 입력상태로 변경
Esc를 누르면 아래 INSERT가 사라짐
저장하기
:w [파일명] ex) :w test.txt
Chapter 4. 6 라즈베리파이 에디터 VIM
기본적인 세팅 구축하기 (색깔 Syntax 및 줄번호 등등
$vim ~/.vimrc
Chapter 4. 7 라즈베리파이를 활용한 모터 제어
준비물: 라즈베리파이, 브레드보드, T-코블러 브레이크아웃보드, 2N2222 트랜지스터, SG90
1K 저항 2개, 5V 전원
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 결과
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 코딩 파이썬 코딩
Chapter 4. 8 라즈베리파이를 활용한 초음파 센서 사용
준비물: 라즈베리파이, 브레드보드, T-코블러 브레이크아웃보드, 2N2222 트랜지스터, SG90
1K 저항 2개, 5V 전원
5.0V
GND
13번핀 (BCM기준)
19번핀 (BCM기준)
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
int trig = 23 ;
int echo = 24 ;
int start_time, end_time ;
float distance ;
$cd
$cd ~/c_sources
$vim servo.c
$gcc ultra.c -o ultra –lwiringPi
$sudo ./ultra
C 코딩
Chapter 4. 8 라즈베리파이를 활용한 초음파 센서 사용
if (wiringPiSetup() == -1) exit(1) ;
pinMode(trig, OUTPUT) ;
pinMode(echo , INPUT) ;
while(1) {
digitalWrite(trig, LOW) ;
delay(500) ;
digitalWrite(trig, HIGH) ;
delayMicroseconds(10) ;
digitalWrite(trig, LOW) ;
while (digitalRead(echo) == 0) ;
start_time = micros() ;
while (digitalRead(echo) == 1) ;
end_time = micros() ;
distance = (end_time - start_time) / 29. / 2. ;
printf("distance %.2f cmn", distance) ;
}
return 0 ;
}
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
trig = 13
echo = 19
print "start"
gpio.setup(trig, gpio.OUT)
gpio.setup(echo, gpio.IN)
$cd
$cd py_sources
$vim ultra.py
$sudo python ultra.py
파이썬 코딩
Chapter 4. 8 라즈베리파이를 활용한 초음파 센서 사용
try :
while True :
gpio.output(trig, False)
time.sleep(0.5)
gpio.output(trig, True)
time.sleep(0.00001)
gpio.output(trig, False)
while gpio.input(echo) == 0 :
pulse_start = time.time()
while gpio.input(echo) == 1 :
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17000
distance = round(distance, 2)
print "Distance : ", distance, "cm"
except :
gpio.cleanup()
Chapter 4. 8 라즈베리파이를 활용한 초음파 센서 사용
• 초음파센서의 거리에 따른 값을 출력
• 프로그램을 멈추려면 ctrl + c
결과 화면

Contenu connexe

Tendances

라즈베리파이 환경설정
라즈베리파이 환경설정라즈베리파이 환경설정
라즈베리파이 환경설정
InHee Kim
 

Tendances (20)

NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기
 
라즈베리파이입문 - 연세대 특강
라즈베리파이입문 - 연세대 특강라즈베리파이입문 - 연세대 특강
라즈베리파이입문 - 연세대 특강
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
라즈베리파이 IoT 시작하기
라즈베리파이 IoT 시작하기라즈베리파이 IoT 시작하기
라즈베리파이 IoT 시작하기
 
IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1
 
Raspberry pi 개발환경 구축
Raspberry pi 개발환경 구축Raspberry pi 개발환경 구축
Raspberry pi 개발환경 구축
 
[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st
 
라즈베리파이 환경설정
라즈베리파이 환경설정라즈베리파이 환경설정
라즈베리파이 환경설정
 
Raspberry pi 2 설치 및 연결
Raspberry pi 2 설치 및 연결Raspberry pi 2 설치 및 연결
Raspberry pi 2 설치 및 연결
 
라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드
 
Raspberry-PI GPIO with Python
Raspberry-PI GPIO with PythonRaspberry-PI GPIO with Python
Raspberry-PI GPIO with Python
 
[IoT] MAKE with Open H/W + Node.JS - 4th
[IoT] MAKE with Open H/W + Node.JS - 4th[IoT] MAKE with Open H/W + Node.JS - 4th
[IoT] MAKE with Open H/W + Node.JS - 4th
 
허봉춘씨의 파란만장한 IoT 보드 만들기
허봉춘씨의 파란만장한 IoT 보드 만들기허봉춘씨의 파란만장한 IoT 보드 만들기
허봉춘씨의 파란만장한 IoT 보드 만들기
 
IoT with Raspberry Pi + Node JS - Chapter 2
IoT with Raspberry Pi + Node JS - Chapter 2IoT with Raspberry Pi + Node JS - Chapter 2
IoT with Raspberry Pi + Node JS - Chapter 2
 
3장 라즈베리 파이와 gpio
3장 라즈베리 파이와 gpio3장 라즈베리 파이와 gpio
3장 라즈베리 파이와 gpio
 
라즈베리파이 Iptime 150u a
라즈베리파이 Iptime 150u a라즈베리파이 Iptime 150u a
라즈베리파이 Iptime 150u a
 
Ubuntu Host AP Setting
Ubuntu Host AP SettingUbuntu Host AP Setting
Ubuntu Host AP Setting
 
메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)
 
아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작
 
Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치
 

Similaire à 사물인터넷 노트4_라즈베리파이기본

Jnetpcap quickguide
Jnetpcap quickguideJnetpcap quickguide
Jnetpcap quickguide
Sukjin Yun
 
kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340
Samsung Electronics
 
[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기
진현 조
 

Similaire à 사물인터넷 노트4_라즈베리파이기본 (20)

소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
 
Jnetpcap quickguide
Jnetpcap quickguideJnetpcap quickguide
Jnetpcap quickguide
 
kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340
 
OSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardwareOSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardware
 
2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)
2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)
2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)
 
PI day in COREA
PI day in COREAPI day in COREA
PI day in COREA
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
Hideroot - Inc0gnito 2016
Hideroot - Inc0gnito 2016Hideroot - Inc0gnito 2016
Hideroot - Inc0gnito 2016
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
Win10 iot core_pi2
Win10 iot core_pi2Win10 iot core_pi2
Win10 iot core_pi2
 
보안프로젝트 세미나 Viper-v1.2
보안프로젝트 세미나 Viper-v1.2보안프로젝트 세미나 Viper-v1.2
보안프로젝트 세미나 Viper-v1.2
 
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
 
02. led switch
02. led switch02. led switch
02. led switch
 
[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기
 
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)
 
Raspberry Pi Basic Usage
Raspberry Pi Basic UsageRaspberry Pi Basic Usage
Raspberry Pi Basic Usage
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
 
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
 

사물인터넷 노트4_라즈베리파이기본

  • 1. 사물인터넷 Internet of Things (IoT) CHAPTER 4 _라즈베리파이 기본
  • 2. Chapter 4. 1 라즈베리파이란 영국에서 개발된 신용카드보다 조금 더 큰 사이즈의 소형 컴퓨터 (single-board computer)로 학교에서 컴퓨터 프로그래밍 교육을 촉진하기 위해서 개발됨. 실제 컴퓨터와 마찬가지로, 모니터, 키보드, 마우스 등을 연결할 수 있고, 이더넷 포트가 있음. 컴퓨터와 마찬가지로 시간이 지나면서 성능면에서 진화되는 양상을 보임 독자적인 운영체제(Operating System, OS)를 가지고 있으며, 라즈베리파이 웹사이트에서 무료로 다운로드 받을 수 있는 리눅스 기반 OS. 라즈베리파이
  • 3. Chapter 4. 2 라즈베리파이 비교 Raspberry Pi1 A+ Raspberry Pi1 B+ Raspberry Pi2 B Beaglebone Black Intel Edison CPU ARM11 ARM11 Cortex A7 Cortex A8 Atom+Quark Cores 1 1 4 1 2+1 Clock 700MHz 700MHz 900MHz 1000MHz 500MHz GPU Videocore IV Videocore IV Videocore IV PowerVR SGX530 없음 Memory 256MB 512MB 1GB 512MB 1GB USB Ports 1 4 4 2 1* Flash 없음 없음 없음 2GB 4GB 저장 microSD microSD microSD microSD mircoSD GPIO 40핀 40핀 40핀 2x46핀 70핀 내장형 WIFI 없음 없음 없음 없음 있음 내장형 Bluetooth 없음 없음 없음 없음 있음 사이즈(cm) 6.5x5.3 8.5x5.3 8.5x5.3 8.6x5.3 가격(US) $20 $35 $35 $49 $85
  • 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기준)
  • 20. #include <wiringPi.h> #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int trig = 23 ; int echo = 24 ; int start_time, end_time ; float distance ; $cd $cd ~/c_sources $vim servo.c $gcc ultra.c -o ultra –lwiringPi $sudo ./ultra C 코딩 Chapter 4. 8 라즈베리파이를 활용한 초음파 센서 사용 if (wiringPiSetup() == -1) exit(1) ; pinMode(trig, OUTPUT) ; pinMode(echo , INPUT) ; while(1) { digitalWrite(trig, LOW) ; delay(500) ; digitalWrite(trig, HIGH) ; delayMicroseconds(10) ; digitalWrite(trig, LOW) ; while (digitalRead(echo) == 0) ; start_time = micros() ; while (digitalRead(echo) == 1) ; end_time = micros() ; distance = (end_time - start_time) / 29. / 2. ; printf("distance %.2f cmn", distance) ; } return 0 ; }
  • 21. import RPi.GPIO as gpio import time gpio.setmode(gpio.BCM) trig = 13 echo = 19 print "start" gpio.setup(trig, gpio.OUT) gpio.setup(echo, gpio.IN) $cd $cd py_sources $vim ultra.py $sudo python ultra.py 파이썬 코딩 Chapter 4. 8 라즈베리파이를 활용한 초음파 센서 사용 try : while True : gpio.output(trig, False) time.sleep(0.5) gpio.output(trig, True) time.sleep(0.00001) gpio.output(trig, False) while gpio.input(echo) == 0 : pulse_start = time.time() while gpio.input(echo) == 1 : pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17000 distance = round(distance, 2) print "Distance : ", distance, "cm" except : gpio.cleanup()
  • 22. Chapter 4. 8 라즈베리파이를 활용한 초음파 센서 사용 • 초음파센서의 거리에 따른 값을 출력 • 프로그램을 멈추려면 ctrl + c 결과 화면