Raspberry Pi_Kor_25.7.2 Digital 입력 – button 입력

25.7.2 Digital 입력 – button 입력

여기서는 button을 Raspberry Pi에 연결하고, button이 눌려졌는지를 확인하기 위해서 pin의 입력 신호를 읽어서 처리하는 사례에 대해서 살펴 볼 것이다.

25.7.2.1 library의 입력 방식

library를 이용하여 입력을 처리하는 방법에는 falling 방식과 interrupt 방식이 있다. 다음은 그 각각에 대해서 설명하고자 한다.

Raspberry Pi_Kor_25.7.1 Digital 출력 – LED On/Off

25.7 digital 입/출력

25.7.1 Digital 출력 – LED On/Off

여기서는 LED를 Raspberry Pi에 연결하고, 프로그램을 이용하여 LED를 깜박이게 하는 사례를 구현해 보도록 한다.

25.7.1.1 LED의 설치

회로를 만들 때는 breadboard를 이용하여 아래의 그림과 같이 LED, 저항, Raspberry Pi를 연결한다.

먼저 LED를 breadboard에서 양쪽 다리가 다른 행에 있도록 설치한다. 그런 다음 LED를 아래와 같이 Raspberry Pi의 GPIO connector에 연결한다. 즉 LED 긴 다리(+)를 physical 번호 11 번 pin(wiringPi 기준 0 번 pin)에 연결하고, LED 짧은 다리(-)를 physical 번호 6 번 pin(ground)에 연결되도록 한다. 회로에 사용되는 LED에는 가장 일반적인 5mm diameter LED를 사용하고, 저항에는 330Ω을 사용한다.

blink1

Raspberry Pi_Kor_25.5.6 LED light

25.5.6 LED light

발광다이오드(LEDs; Light-emitting diodes)는 전자회로를 구성할 때 특정 선로에 전기가 흐르는지, 그렇지 않은지를 판단하는 장치로 많이 사용되는 출력 장치이다. LED는 전압이 가해졌을 때 빛을 내므로 Raspberry Pi의 특정 GPIO port가 high 상태인지 low 상태인지를 나타낼 수 있고, 회로의 특정 선로에 전기가 흐르는지를 판단할 수 있다. Raspberry PI의 GPIO 포트는 고휘도 LED를 구동할 정도의 고전력을 내지 못하므로 LED를 구매할 때 저전력 LED(일반적인 LED)를 구매한다.

Raspberry Pi_Kor_25.8.3 Digital DHT11 Humidity/Temperature Sensor 활용

25.8.3 Digital DHT11 Humidity/Temperature Sensor 활용

25.8.3.1 sensor의 특징

여기서는 아래와 같이 DHT11 sensor와 다른 필요한 부품들을 조그마한 PCB에 통합한 모듈을 사용할 것이다. DHT11 sensor는 저항 타입의 습도 측정 부품과, NTC 온도 측정 부품, 그리고 고성능의 8 bit microcontroller가 장치되어 있으며 정밀한 digital 신호 출력을 보내준다. DHT11 sensor는 원래 4개의 선이 있지만, 이 모듈은 3개의 선으로 되어 있다.

Raspberry Pi_Kor_25.8.2 digital sensor DS18b20를 이용한 온도 측정

25.8.2 digital sensor DS18b20를 이용한 온도 측정

25.8.2.1 DS18B20 sensor 특징

시중에는 온도를 측정하는 여러 가지의 센스가 있지만, Raspberry Pi는 ADC (Analog to Digital Converter) 장치가 없으므로 TMP36과 같은 analog 온도 sensor는 직접적으로 사용할 수 없다.

여기서는 digital sensor인 DS18B20을 Raspberry Pi와 직접 연결하여 온도를 측정할 것이다.

시중에서 판매되는 DS18B20 sensor에는 여러 가지가 있는데, 아래 그림과 같이 원래의 원형 sensor도 있고, 일반적인 DS18B20 sensor를 Arduino와 같은 실험용 interface board에서 용이하게 사용할 수 있도록 약간 변형한 것도 있다. 두 가지 모두 모든 성능과 특징은 동일하지만 connector의 배열 위치가 약간 다르게 되어 있다. 어떤 것을 사용하더라도 pin의 위치만 고려하면 모든 것이 동일하다.

Raspberry Pi_Kor_25.8.1 Sensor 개요

25.8 Sensor

25.8.1 Sensor 개요

Sensor는 주위 대상물의 상태를 파악하는 장치로 사람의 감각에 해당하는 기능을 수행하는 소자이다. sensor는 자신의 주위에 있는 대상물의 상태를 탐지하고, 사건의 발생을 탐지하고, 수량의 변동을 감지하고 측정하여, 전기신호 또는 광학신호로 전달해 준다. 이러한 sensor에는 빛 센서, 온도 센서, 가스 센서, 압력 센서, 자기 센서 등 다양한 종류가 있다.

Raspberry Pi_Kor_25.6.3 RPi.GPIO library

25.6.3 library

25.6.3.1 library 개요

이 library는 Python 개발언어에서 Raspberry Pi의 GPIO를 조정할 수 있는 class 모듈을 제공해 준다.

이 library는 실시간이거나 시간 동기화가 중요한 application에서는 부적합하다. 왜냐하면 python이 언제 garbage collect을 할지 예측할 수 없고, 실시간 처리에 적합하지 않는 Linux kernel에서 실행되기 때문이다. Linux는 multitasking O/S로서 CPU에 대해서 GPIO 처리 프로그램보다 다른 프로세서가 더 높은 우선순위를 가질 수도 있고, 그럴 경우는 GPIO 처리 프로그램이 혼란에 빠질 수도 있기 때문이다.

Raspberry Pi_Kor_25.6.2 WiringPi library

25.6.2 library

25.6.2.1 library 개요

library는 Gordon Henderson이 개발한 GPIO 도구이다. 이것은 Raspberry Pi에서 사용되는 BCM2835에서 사용하기 위해 C 언어로 개발된 GPIO 처리 library로서 GNU LGPLv3 라이선스 조건으로 배포되고 있다. 이 library는 원래 Arduino의 “wiring” system에 익숙한 사용자들이 Raspberry Pi를 쉽게 사용할 수 있도록 하기 위해서 개발되었다.

Raspberry Pi_Kor_25.6.1 GPIO library 의미

25.6 GPIO Library

25.6.1 GPIO library 의미

Raspberry Pi에서 GPIO를 프로그램에서 활용하기 위해서는 하드웨어에 대한 깊은 이해가 필요할 뿐만 아니라 하드웨어를 조작하는데 필요한 전문가 수준의 저수준 프로그래밍 지식이 필요하다. 일반 사용자들이 이러한 어려움을 겪지 않고 손쉽게 GPIO기능을 활용할 수 있도록 전문가들이 이미 만들어 놓은 놓은 소프트웨어 모듈을 library라고 한다. library는 공통으로 사용되는 여러 가지 기능을 제공해 주는 프로그램을 미리 만들어서 다른 프로그램들에서 쉽게 가져다 쓸 수 있는 형태로 만들어 놓은 모듈의 집합을 말한다.