GPIO(general-purpose input/output)
: 마이크로프로세서가 주변기기와 통신하기 위해 범용적으로 사용하는 포트
- Raspberry Pi 3/4 model B에는 40개의 핀이 있고 각 핀마다 고유의 기능이 정해져있음.
-기본적으로 모든 핀은 디지털 신호(데이터)를 입출력할 수 있는 기능을 가짐.
브레드 보드
: 일명 빵판이라 불리는 전기 전자 소자를 실습할 때 주로 사용되는 기판
-IC 영역은 세로로 전체가 연결되어 있고, 버스 영역은 가로로 5칸씩 연결되어 있음. (빨:+, 파:-)
1. GPIO LED 연결
*(-) 단자는 GND 와 연결 / (+) 단자는 GPIO와 연결 / (S) 단자는 DC 5V와 연결
1) GPIO17와 빨간색 LED 연결 ( GPIO17-RLED(+) / GND-RLED(-) )
2) GPIO17, GPIO27을 적색,녹색 LED에 연결 ( GPIO17-RLED(+) / GPIO27-GLED(+)/ GND-RLED(-)&GLED(-) )
3) '2)'에서 온습도 센서 추가 연결
( DC 5V -DHT11(S)/ GPIO4-DHT11(+) / GPIO17-RLED(+) / GPIO27-GLED(+)/ GND-RLED(-)&GLED(-)&DHT11(-))
2. GPIO 패키지 설치
sudo pip install RPi.GPIO
3. 파이썬 파일 만들기
mkdir DLETSGO #DLETSGO 폴더 생성
cd DLETSGO
nano test_LED.py #파이썬 파일 생성
1) 라즈베리 파이의 GPIO를 2초 간격으로 on/off하는 파이썬 코드 생성 및 실행 [적색 LED와 연결하여 확인하기]
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM) # BCM
GPIO.setup(17,GPIO.OUT)
while(True):
GPIO.output(17,False) #off
print("LED off")
time.sleep(2)
GPIO.output(17,True) #on
print("LED on")
time.sleep(2)
2) GPIO17, GPIO27을 적색, 녹색 LED에 연결하여 2초 간격으로 적색/녹색을 번갈아 가면서 출력하는 코드 생성 및 실행
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)
GPIO.setup(27,GPIO.OUT)
while(True):
GPIO.output(17,True)
GPIO.output(27,False)
print("Red LED on")
time.sleep(2)
GPIO.output(17,False)
GPIO.output(27,True)
print("Green LED on")
time.sleep(2)
3) DHT11 온습도 센서를 통해 2초 간격으로 목표 온도 25도 이하일 경우 적색 LED 켜고, 상대습도 60% 이하일 경우 녹색 LED 켜기
import time
import Adafruit_DHT
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT) # 적색 LED
GPIO.setup(27, GPIO.OUT) # 녹색 LED
sensor = Adafruit_DHT.DHT11
pin = 4
try:
while True:
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print(f"Temperature: {temperature}°C, Humidity: {humidity}%")
# 온도가 25도 이하일 경우 적색 LED 켜기
if temperature <= 25:
GPIO.output(17, True)
print("Red LED on")
else:
GPIO.output(17, False)
# 습도가 60% 이하일 경우 녹색 LED 켜기
if humidity <= 60:
GPIO.output(27, True)
print("Green LED on")
else:
GPIO.output(27, False)
else:
print("Read error")
time.sleep(2) # 2초 대기
except KeyboardInterrupt:
print("Terminated by Keyboard")
finally:
GPIO.cleanup()
print("End of program")
'라즈베리파이(Raspberry Pi)' 카테고리의 다른 글
(6) 라즈베리파이 토양수분센서/릴레이 모듈 (1) | 2023.12.04 |
---|---|
(5) 라즈베리 파이 가변저항 / ADC (1) | 2023.12.04 |
(4) 라즈베리 파이 카메라 제어 (Flask 서버) (1) | 2023.12.03 |
(2) 라즈베리파이 온습도 센서 연결 (2) | 2023.12.03 |
(1) 라즈베리 파이 부팅 / 초기 설정 (2) | 2023.12.03 |