- 필요한 배경 지식
- Raspberry Pi GPIO(General Purpose Input Output)
- Python의 Gpiozero Library를 사용한 GPIO 제어
- Gpiozero Library를 이용한 PWM(LED 밝기 제어) 예
- HTML: Web pages 작성에 필요한 Markup language
- Linux OS: Raspberry Pi의 OS 가 Linux 이다.
- Python: Programming language
- Raspberry Pi 3의 GPIO Header
Raspberry Pi에는 외부 장치와 연결을 위한 2줄의 GPIO Pin(40 Pin)이 준비되어 있다.
Output pin은 Low(0V) 또는 High(3.3V) 값을 출력 하여 LED와 같은 외부 장치를 제어 할 수 있다.
Input pin은 Pin의 상태 Low(0V) 또는 High(3.3V) 값을 입력 받을 수 있기 때문에 Push button switch 등의 상태를 입력 받을 수 있다.
Raspberry Pi 3의 GPIO Header의 Pin 배치는 아래 그림과 같다.
- Gpiozero Library 설치하기
- Gpiozero Library Update 하기
- 아래 명령으로 Python3에 설치된 Python package를 확인 할 수 있다.
- piozero Library를 이용하여 LED 제어하기
- 실험을 위한 준비
- Raspberry Pi Pin11(GPIO17)과 330옴 저항,
- 330옴 저항과 LED의 + 단자,
- LED의 - 단자을 Breadboard의 GND 에 연결 한다.
- Raspberry Pi의 GND(Pin9)과 Breadboard GND를 연결 한다.
- Windows PC에서 Notepad++ 편집기를 열고 아래와 같이 프로그램을 작성하여 저장(File name: led-blinking.py) 한다.
Raspberry Pi에는 Python과 Python을 위한 Gpiozero Library가 이미 설치되어 있기 때문에 별도로 설치 할 필요가 없습니다. Update가 필요한 경우 아래 명령으로 Update를 실행 한다.
sudo apt update
sudo apt install python3-gpiozero python-gpiozero
pip3 list
Raspberry Pi와 LED, Button switch를 사용한 실험을 위한 회로와 연결 사진
이 실험에서는 LED만 사용한다.
led-blinking.py
# gpiozero library의 LED Class를 Import 한다.
from gpiozero import LED
# time module의 sleep function을 Import 한다.
from time import sleep
# GPIO17을 LED Port로 사용한다.
led = LED(17)
while True:
led.on()
sleep(1)
led.off()
sleep(1)
- PuTTY를 실행하고 Raspberry Pi에 로그인 한다.
- led-blinking.py File이 있는 폴더로 이동 한다.
- 아래 명령으로 Python3에서 led-blinking.py를 실행 한다.
python3 led-blinking.py
- 실험을 위한 준비
- 위 "piozero Library를 이용하여 LED 제어하기"와 같이 LED를 연결 한다.
- Raspberry Pi Pin12(GPIO18)와 Button switch의 한 단자을 연결 한다.
- Raspberry Pi Pin12(GPIO18)에 Button pull up 저항(10K)을 연결한다.
- Pull up 저항(10K)의 다른 단자를 Vcc에 연결한다.
- Button switch의 다른 단자와 Breadboard GND를 연결 한다.
- Windows PC에서 Notepad++ 편집기를 열고 아래와 같이 프로그램을 작성하여 저장(File name: led-button.py) 한다.
위 "Raspberry Pi와 LED, Button switch를 사용한 실험을 위한 회로와 연결 사진"을 참고하여 아래와 같이 회로를 연결한다.
위 "piozero Library를 이용하여 LED 제어하기" 사진 참고요. 이 실험에서는 2개의 버튼 중 좌측 1개만 사용함.
led-button.py
# gpiozero library의 LED Class를 Import 한다.
from gpiozero import LED, Button
# GPIO17을 LED Port로 사용한다.
led = LED(17)
# GPIO18을 Button Port로 사용한다.
button = Button(18)
while True:
if button.is_pressed:
led.on()
else:
led.off()
- PuTTY를 실행하고 Raspberry Pi에 로그인 한다.
- led-button.py File이 있는 폴더로 이동 한다.
- 아래 명령으로 Python3에서 led-button.py를 실행 한다.
python3 led-button.py
- 실험을 위한 준비
- Raspberry Pi Pin11(GPIO17)과 330옴 저항,
- 330옴 저항과 LED의 + 단자,
- LED의 - 단자을 Breadboard의 GND 에 연결 한다.
- Raspberry Pi의 GND(Pin9)과 Breadboard GND를 연결 한다.
- Windows PC에서 Notepad++ 편집기를 열고 아래와 같이 프로그램을 작성하여 저장(File name: led-pwm.py) 한다.
위 "Raspberry Pi와 LED, Button switch를 사용한 실험을 위한 회로와 연결 사진"을 참고하여 아래와 같이 회로를 연결한다.
이 실험에서는 LED만 사용한다.
led-pwm.py
# gpiozero library의 PWMLED Class를 Import 한다.
from gpiozero import PWMLED
# time module의 sleep function을 Import 한다.
from time import sleep
# GPIO17을 PWMLED Port로 사용한다.
led = PWMLED(17)
while True:
led.value = 0 # off
sleep(1)
led.value = 0.3 # 0.3 brightness
sleep(1)
led.value = 1 # full brightness
sleep(1)
- PuTTY를 실행하고 Raspberry Pi에 로그인 한다.
- led-pwm.py File이 있는 폴더로 이동 한다.
- 아래 명령으로 Python3에서 led-pwm.py를 실행 한다.
python3 led-pwm.py