Home » 산딸기 가지고 놀기 » 라즈베리파이 GPIO 강좌 : 03. Input 테스트 (스위치 입력, 파이썬)

라즈베리파이 GPIO 강좌

라즈베리파이 GPIO 강좌 : 03. Input 테스트 (스위치 입력, 파이썬)

 

2013.03.01

1. 학습내용

: 라즈베리파이 GPIO 를 다루어보기로 하겠다. 이번 강좌에서는 GPIO의 Input 기능을 테스트하기로 하자. 이를 위해서는 이전 “02. Output 테스트 (LED 키고 끄기, 파이썬)” 강좌에서 처럼 간단히 LED를 연결하고, 추가로 스위치 회로를 추가로 해주도록 하자. 이 스위치의 On/Off 신호를 입력신호로 받고 LED를 키고 끄기는 프로그램을 해 볼 것이다. 사용언어는 파이썬(Python)이다.

2. 개발환경

: 개발환경은 하드웨어적으로는 라즈베리파이 모델B 버전2 512RAM 환경에, 소프트웨어적으로는 라즈베리파이의 공식 OS라고도 할 수 있는 데비안 리눅스계열의 Raspbian “wheezy”의 “2013-02-09-wheezy”버전을 사용하기로 하겠다. Raspbian “wheezy” 설치방법은 이전 강좌 “05. Raspberry Pi 퀵스타트 (OS 설치 및 테스트 구동)” 을 참고하기 바란다. 또한, 사용되는 언어로는 파이썬을 이용할 생각이다. 이는 Raspbian “wheezy”의 “2013-02-09-wheezy” 버전을 설치하면 기본 설치되어 있다.

끝으로, 라즈베리파이 OS의 의존패키지 등이 변경 및 업데이트 되었을 가능성도 있기때문에 본강좌를 시작하기 전에 기본적인 업데이트를 실행해주자. 명령어는 아래와 같이 두 개로 구성되어 있으며 터미널창에서 실행하도록 하자.
1. 업데이트 된 라이브러리 및 프로그램을 업데이트한다. 다운로드 개념이라고 보면된다.

sudo apt-get update

2. 업데이트된 라이브러리 및 프로그램을 설정 및 설치하게 된다.

sudo apt-get upgrade

 

3. 스위치 회로

: 이번 GPIO Output 테스트에 사용될 GPIO는 18번이다. 이는 P1 헤더핀의 12번핀에 해당된다. 회로도는 아래와 같이 구성하도록 하자. 브레드보드에서 작업해도 되고, 별도의 기판에 납땜을 해도 좋다.

아래의 회로도는 GPIO 18번에 연결된 스위치의 On/Off 의 Input 값으로 받을 수 있도록 스위치 한 개와 저항 10K옴 하나로 구성된 간단한 풀업 스위치 회로이다. 스위치가 On 이면 Low 값을 받고 이를 프로그래밍 적으로 LED가 On 이 되게하고, 스위치가 Off 이면 High 값을 받게 되어 LED를 Off 시키려는 목적으로 구성하였다.

 gpio-3-1

gpio-2-4

gpio-2-3

 

4. 프로그램 작성

: 이번 스위치 테스트는 파이썬으로 작성해 보고자 한다. 매우 간단하니 천천히 따라해 보자. 우선, 위와 같은 회로를 구성한 후 전원을 넣고, 라즈베리파이를 구동하자. 원래 라즈베리파이의 GPIO를 제어하기 위해서는 파이썬의 RPi.GPIO 라이브러리를 설치해야하나 Raspbian “wheezy”의 “2013-02-09-wheezy”버전 설치하게 되면 기본적으로 설치가 되어있어서 바로 프로그램 작성 후 실행이 가능하게 되어있다. 자~ 그럼 쉘에서 아래의 프로그램을 실행하며 스위치로부터 입력값을 받아 LED를 켜보도록 하자.
1. 자신의 작업 폴더 생성 및 이동 (이전 강의에서 생성하였다면 생략)

mkdir gpio-test
cd gpio-test

 

2. 프로그램 작성 (편집기는 vi, nano, Leafpad 등 원하는 것을 사용한다. )

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)

GPIO.setup(18 , GPIO.IN)

print “Press the button”

try:

while True :

GPIO.output(23, False)
GPIO.output(24, False)
if GPIO.input(18)==0:
print ” Button pressed!”

GPIO.output(23, True)
GPIO.output(24, True)

time.sleep(1)

print “Press the button (CTRL-C to exit)”

except KeyboardInterrupt:
GPIO.cleanup()

 

gpio-3-4

 

위 내용은 GPIO 18번으로부터 입력받은 값이 Low 이면 GPIO 23번, 24번핀에 연결된 LED를 모두 ON 시킨 후, 1초 대기한다. 그 후 다시 Off 시키는 내용이다. 그 후 다시 반복문 while 문으로 돌아와서 마찬가지로 GPIO 18번의 스위치 값을 받아 처리하는 내용이다. 위와 같이 내용을 전부 입력해주고, “gpio-test2.py” 라는 이름으로 저장해주자.

 

5. 프로그램 실행

: GPIO 관련 프로그램 실행은 항상 루트 권한으로 실행해줘야 한다. 작성한 프로그램을 실행해 보자. 스위치의 On / Off 신호에 따라 LED가 켜지고 꺼지는 모습을 확인할 수 있을 것이다.

sudo python gpio-test2.py

gpio-3-5

 

[ 참고자료 ]

[1] “라즈베리파이 공식 사이트”, http://www.raspberrypi.org/
[2] “라즈베리파이 위키미디어 설명”, http://en.wikipedia.org/wiki/Raspberry_Pi
[3] “Embedded Linux Wiki”, http://elinux.org/
[4] “공식 판매점 Element14”, http://downloads.element14.com/raspberryPi1.html?COM=raspi-group
[5] “공식 판매점 RS Componts”, http://uk.rs-online.com/web/generalDisplay.html?id=raspberrypi
[6] “공식 판매점 Allied Electronics”, http://www.alliedelec.com/lp/120626raso/
[7] “element14의 레즈베리파이 커뮤니티”, http://www.element14.com/community/groups/raspberry-pi
[8] Embedded Linux 커뮤니티의 “RPi Tutorials”, http://elinux.org/RPi_Tutorials
[9] “RASPBERRY PI INFORMATION AND VIDEOS”, http://raspi.tv/
[10] “Raspberry Pi Spy”, http://www.raspberrypi-spy.co.uk/
[11] “RaspiHub”, http://www.raspihub.com/
[12] “Adafruit Blog”, http://www.adafruit.com/blog/category/raspberry-pi/
[13] “Raspberry Pi Pod”, http://www.recantha.co.uk/blog/
[14] “bcm2835”, http://www.open.com.au/mikem/bcm2835/

 

End.

written by Yoonseok Pyo
http://robotpilot.net/
http://cafe.naver.com/openrt
http://www.rasplay.org/


이 저작물은 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 Unported 라이선스 에
따라 이용할 수 있습니다.

산딸기마을 포스트 검색

공동제작 공동프로젝트 무상후원 기관

산딸기마을 기부하기

산딸기마을 방문자 현황

Flags Countries Visits Page views
South Korea 626063 1845660
United States 10882 26091
Japan 5011 13204
Germany 2755 5151
India 1897 2902
Canada 1729 4640
United Kingdom 1596 2642
Australia 1240 2901
Russia 1219 1677
China 1077 2239
Total Pageviews: 1936700