3. GPIO
GPIO란?
GPIO(General Purpose Input Output)일반
적인 입/출력을 제공하는데, 하나의 단자로
입력 또는 출력이 고정되지 않고 선택적으
로 입력/출력이 가능하다. 하지만 동시에
입력과 출력을 겸용으로 할 수는 없다. 사
용 목적에 따라 먼저 GPIO모드 설정을 해
야합니다.
Raspberry Pi는 21개의 GPIO를 제공하고
있는데, 그 중에 17개는 핀헤드로 구성되어
있고, 나머지 8개는 보드에 핀헤드를 세워
서 사용할 수 있습니다.
4. SPI
직렬 주변기기 인터페이스 버스
(Serial Peripheral Interface Bus) 또는 SPI 버스
아키텍처 전이중 통신 모드로 동작하는 모토로라 아키텍처
에 이름을 딴 동기화 직렬 데이터 연결 표준이다. 장치들은
마스터 슬레이브 모드로 통신하며 여기서 마스터 장치는 데
이터 프레임을 초기화한다. 여러 슬레이브 장치들은 개별 슬
레이브 셀렉트 (칩 셀렉트) 라인과 함께 동작할 수 있다.
SCLK: 직렬 클럭 (마스터로부터의 출력)
MOSI; SIMO: 마스터 출력, 슬레이브 입
력 (마스터로부터의 출력)
MISO; SOMI: 마스터 입력, 슬레이브 출
력 (슬레이브로부터의 출력)
SS: 슬레이브 셀렉트 (active low, 마스
터로부터의 출력).
5. I2C
I²C(Inter-Integrated Circuit, 아이-스퀘어-씨)
필립스에서 개발한 직렬 컴퓨터 버스이며 마더보드, 임베디
드 시스템, 휴대전화등에 저속의 주변 기기를 연결하기 위해
사용된다.
I2C는 이종 컴퓨터간의 데이타 통신을 위해 사용되는 것으로
SPI와 그 목적은 같지만, 클럭선과 데이타선으로 단 두 개만
의 선만으로 통신을 하게된다. 주로 마이크로콘트롤러가 마
스터가 되고, 주변 장치들이 슬레이브가 되어, 주변 장치의
정보를 취득하는 용도로 많이 사용된다
7. RS232
...
RS-232는 PC와 음향 커플러, 모뎀 등을 접속하는 직렬 방식
의 인터페이스의 하나이다. 인터페이스는 포트라고도 하여
일반적으로 직렬 포트라고 불리기도 한다.
주변기기의 접속 용도에는 USB, IEEE1394 등과 통신 용도로
는 이더넷(ethernet) 등에 그 역할이 대체되고 있다. 그러나
노이즈에 큰 영향을 받지 않고 먼 곳까지 신호를 전달하고,
단순하게 사용하기 위해서는 아직까지도 유용하다.
9. Resistor
성능이 낮은 전도체의 양쪽 끝 또는 측면에 도선이나 전도체
2개가 붙어있는 형태로 되어있음 단위는 옴(ohm) 이며, 기호
로는 그리스어의 오메가를 사용
- 캐패시터 충전율 제한
- 양극성 트랜지스터와 같은 반도체 부품의 전압 제어
- LED 또는 기타 반도체 부품의 과다 전류 방지
- 다른 부품과 결합하여 사용하는 오디오 회로에서 주파수
응답의 조정 또는 제한
- 디지털 논리 회로에 입력되는 전압의 풀업 저항 또는 풀
다운 저항용
- 회로 내 한 지점에서의 전압 제어용
12. 센서(sensor, 문화어: 감지기, 感知器)
영어(sensor)로 직역하면 '느끼는 자'로, 무언가를 감각하는
것을 말한다. 즉, 센서는 무언가를 느끼는 것임을 알 수 있다.
또한 한자(感知器)로 직역하면 '감각하여 알아내는 기계'를
뜻한다. 즉, 센서는 무언가를 느끼고, 그 감각으로부터 무언
가를 알아내는 것이다. 물이 담긴 컵을 손으로 만져서 뜨거
움을 느끼면, 그 컵에는 뜨거운 물이 담겼다는 것을 알아내
는 것과 같이 말이다.
정리하면, 센서(sensor感知器)는 외부에서 발생한 어떤 신호
를 수집하여 알아내는 장치이다.
즉, 빛, 소리, 화학물질, 온도 등과 같은, 감각과 관련된 신호
들을 수집하여 이것들을 과학적인 방법으로 분석하여 외부
의 상태를 알아내는 장치이다.
Sensors
14. Speaker
amixer cset numid=3 n
오디오 재생은 ANALOG(3.5mm) 혹은 HDMI 를 통해 출력할
수 있다. 기본적으로는 HDMI 케이블이 연결된 경우는 HDMI,
그 이외의 경우는 ANALOG 로 출력되나, 수동으로 출력을
조절할 수 있다.
n은 출력 방식으로, 0 은 Auto, 1 은 Analog, 2 는 HDMI 이
다. ANALOG(3.5mm) 로 출력하고자 하면 다음과 같이 설정
한다.
amixer cset numid=3 1
15. Speaker
WAV 재생
샘플용 wave 다운로드
wget http://www.freespecialeffects.co.uk/soundfx/sirens/police_s.wav
wav 파일 재생
aplay police_s.wav
16. Speaker
MP3 재생
패키지 설치
sudo apt-get install mpg321
샘플 다운로드
wget
http://www.freespecialeffects.co.uk/soundfx/household/bub
bling_water_1.mp3
일반 재생
mpg321 bubbling_water_1.mp3
볼륨 50% 재생
mpg321 -g 50 bubbling_water_1.mp3
17. Speaker
OMXPlayer
패키지 설치 (기본적으로 설치되어 있음)
sudo apt-get install omxplayer
샘플 다운로드
wget http://goo.gl/MOXGX3 -O example.mp3 --no-check-
certificate
일반 재생
omxplayer example.mp3
강제 HDMI 출력 재생
omxplayer -o hdmi example.mp3
강제 HDMI 출력 재생
omxplayer -o local example.mp3
18. LED
발광 다이오드는 순방향으로
전압을 가했을 때 발광하는 반
도체 소자이다. LED(Light
Emitting Diode)라고도 불린다.
발광 원리는 전계 발광 효과를
이용하고 있다. 또한 수명도 백
열등보다 매우 길다.
발광색은 사용되는 재료에 따
라서 다르며 자외선 영역에서
가시광선, 적외선 영역까지 발
광하는 것을 제조할 수 있다. 일
리노이 대학의 닉 호로니악이
1962년에 최초로 개발하였다.
32. LCD
액정 디스플레이 또는 액정 표시장치,
줄여서 LCD(liquid crystal display)는
얇은 디스플레이 장치의 하나이
다. 전력이 적게 소모되기 때문에 휴
대용 장치에 많이 쓰인다.
33. LCD
반사형 TN(twisted nematic) LCD의 구조
빛을 편광으로 만들기 위한 수직 편광 필름
ITO 전극을 삽입한 유리 기판. 이 전극의
모양이 LCD를 켜거나 껐을 때 나타나는 모
양을 결정한다.
꼬인 네마틱(twisted nematic) 구조의 액정
ITO 전극을 삽입한 유리 기판
빛을 통과시키거나 차단할 수 있는 수평 편
광 필름
보는 사람에게 빛을 내보내기 위한 반사판
34. LCD
1.Ground
2.VCC - 5v not 3.3v
3.Contrast adjustment (VO) from potentiometer
4.Register Select (RS). RS=0: Command, RS=1: Data
5.Read/Write (R/W). R/W=0: Write, R/W=1: Read (we won't use this pin)
6.Clock (Enable). Falling edge triggered
7.Bit 0 (Not used in 4-bit operation)
8.Bit 1 (Not used in 4-bit operation)
9.Bit 2 (Not used in 4-bit operation)
10.Bit 3 (Not used in 4-bit operation)
11.Bit 4
12.Bit 5
13.Bit 6
14.Bit 7
15.Backlight LED Anode (+)
16.Backlight LED Cathode (-)
40. Source Code
기본 라이브러리 다운로드
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.38.tar.gz
기본 라이브러리 설치
> tar zxvf bcm2835-1.38.tar.gz
> cd bcm2835-1.38
> ./configure
> make
> sudo make check
> sudo make install
node.js 라이브러리 설치
> npm install node-dht-sensor
41. Source Code (general)
var sensorLib = require('node-dht-sensor');
var sensor = {
initialize: function () {
return sensorLib.initialize(11, 4);
},
read: function () {
var readout = sensorLib.read();
console.log('Temperature: ' +
readout.temperature.toFixed(2) + 'C, ' +
'humidity: ' + readout.humidity.toFixed(2) + '%');
setTimeout(function () {
sensor.read();
}, 2000);
}
};
43. Sensors
빛의 밝기를 측정하는 조도(照度) 센서
BH1750를 탑재한 GY-302 모듈을 붙여 보
았습니다. I2C 버스 인터페이스를 사용하기
때문에 전원과 SCL과 SDA 신호선만 연결
하면 됩니다. 요즈음 스마트 폰에도 조도
센서가 사용되어 주머니나 가방 같은 곳에
들어 있는 경우와 같이 어두운 곳에서는 화
면을 끄기 위한 용도로 사용되고, 밝은 곳
에서는 화면의 밝기를 더욱 높여 읽기 편하
게 만드는 용도로 사용
45. Source Code
I2C, SPI 기능 활성화
기본적으로 I2C, SPI 통신 기능이 block 되어 있으므로, 해당
블랙리스트를 제거해 주어야 한다.
$ sudo nano /etc/modprobe.d/raspi-blacklist.conf
#blacklist spi and i2c by default (many users don’t need
them)
#blacklist spi-bcm2708
#blacklist i2c-bcm2708
46. Source Code
I2C 설정
I2C 환경 설정용 툴 설치 및 다운로드
$ sudo apt-get install i2c-tools
설정 적용을 위한 재 부팅
$ sudo reboot
모듈 강제 로딩
$ sudo modprobe i2c-dev
커널로 i2c 드라이버 불러오기
$ gpio load i2c
47. Source Code
I2C 디바이스 확인
$ ls –l /dev/i2c*
i2c-1 에 연결된 디바이스 채널 정보 확인
$ sudo i2cdetect –y 1
BH1750 node.js 모듈 설치
$ npm install bh1750
48. Source Code
var BH1750 = require('bh1750');
var light = new BH1750();
light.readLight(function(value){
console.log(value);
});
50. Sensors
자이로스코프(gyroscope)는 방향의 측정
또는 유지에 사용되는 기구이다.
자이로스코프는 축이 어느 방향으로든지
놓일 수 있는 회전하는 바퀴이고 로터와 짐
벌로 이루어진 하나의 메커니즘이며 각운
동량 보존법칙에 근거한다. 자이로스코프
가 빠르게 회전할 때에는, 외부에서 토크
(torque; 회전우력)이 주어졌을 때 그 방향
이 회전에 의한 각운동량(angular
momentum)에 의해 회전하지 않을 때보다
훨씬 적게 변화하게 된다. 자이로스코프는
수평 유지 장치인 짐벌에 놓이게 되므로 외
부의 토크는 최소화되며, 장착된 받침이 움
직이더라도 그 방향은 거의 고정되게 된다.
53. Source Code
소스 코드
var mpu6050 = require('mpu6050');
// Instantiate and initialize.
var mpu = new mpu6050();
mpu.initialize();
// Test the connection before using.
if (mpu.testConnection()) {
console.log(mpu.getMotion6());
} // Put the MPU6050 back to sleep.
mpu.setSleepEnabled(1);
55. Servo Motor
서보모터라고 하면 일반적인 모터(원형으
로 빙빙 돌기만 함)와는 달리 움직임을 지
정하면 제어계측 회로에 의해 정확하게 움
직일 수 있는 모터란 뜻이다.
스텝모터를 각도를 조절해서 움직일 수 있
기 때문에 서보모터라고 착각할 수 있는데
회전상태를 파악하는 구조를 갖추지 않아
서보메커니즘이 없기 때문에 서보모터라고
할 수 없다.
무선 조종용 서보모터는 그 자체가 완제품
으로, 그 서보모터에 Horn 이라는 파츠를
달아 와이어링, 특정 파츠를 움직일 수 있
도록 해준다.
서보 컨트롤러는 내부에 내장되어 있고, 토
크 때문에 DC 를 많이 사용한다.
이런 제품들은 특정 포지션으로 이동하는
것을 주 목적으로 하므로, 속도 제어나 토
크 제어는 되지 않는다.
특히, 이런 제품은 제어할 때 PWM 시그널
의 폭을 기준으로 혼의 움직이는 각도가 변
한다.
60. Camera
Info Spec
ll resolution 5 Megapixels
Video modes
1080p30, 720p60 and
640x480
Sensor OmniVision OV5647
Sensor resolution 2592 x 1944 pixels
Optical size 1/4"
Horizontal field of view 53.50 +/- 0.13 degrees
Vertical field of view 41.41 +/- 0.11 degress
Focal ratio (F-Stop) 2.9
라즈베리파이에 장착할 수 있는 Pi Camera
를 이용하면 사진 촬영 및 동영상 촬영이
가능하다. OpenCV 와 같은 영상 처리 오픈
소스와 결합하면 얼굴 인식등 다양한 분야
로의 확대가 가능하다.
61. Source Code
카메라 활성화 하기
$ sudo raspi-config
Enable camera – Enter - Finish
사진 촬영하기
$ raspistill –o cam.jpg
사진 좌우/상하 뒤집기
$ raspistill –vf –hf –o cam2.jpg
62. Source Code
영상 촬영하기
$ raspivid –o vid.h264
영상 좌우/상하 뒤집기
$ raspivid –hf –vf –o video.h264
10초 동안 비디오 촬영하기
$ raspivid –o video.h264 –t 10000
http://www.raspberrypi.org/documentation/raspbian/applic
ations/camera.md