라즈베리파이 GPIO 설치 및 LED 제어 > IoT 사물인터넷 유무선제어

본문 바로가기

[실습] 라즈베리파이 GPIO 설치 및 LED 제어

필기자
2024-02-23 12:30 400 0
  • - 첨부파일 : KakaoTalk_20240223_152419025.mp4 (1.5M) - 다운로드

본문

라즈베리파이 GPIO 설치 및 LED 제어

목 적
  • 라즈베리파이에 GPIO에 대해 이해한다.
  • 라즈베리파이에 GPIO 패키지를 설치하고 테스트 한다.
목 차
1. 라즈베리파이 GPIO 패키지 설치
2. RGB Color 액츄레이터 모듈 설치
3. RGB Color 액츄레이터 모듈 구동

1. 라즈베리파이 GPIO 패키지 설치
  • GPIO 핀(General Purpose Input/Output) 이란?(복습)
    • 컴퓨터에서 범용 입력/출력 핀을 의미하며, 라즈베리파이 같은 마이크로컨트롤러 또는 단일 보드 컴퓨터에서 다양한 전자 부품과의 물리적 연결을 가능하게 하는 핀이다.
    • GPIO 핀들을 통해 센서, 모터, LED 등 외부 장치를 컨트롤러에 연결하고, 프로그래밍을 통해 데이터를 읽거나 장치를 제어할 수 있다.
    • GPIO 핀은 디지털 신호를 입력(읽기)하거나 출력(쓰기)하는 용도로 사용되며, 사용자가 직접 제어할 수 있다는 점에서 유연성을 제공한다. 
20240227131905_5653f0ae585766c56547c3fa2fa04460_7gcv.png
 
핀 번호 기능 사용처 예시 핀 번호 기능 사용처 예시
1 3.3V 전원 센서 및 기타 모듈에 전원 공급 2 5V 전원 센서 및 기타 모듈에 전원 공급
3 GPIO 2 (SDA1) I2C 데이터 라인, 센서 연결 4 5V 전원 센서 및 기타 모듈에 전원 공급
5 GPIO 3 (SCL1) I2C 클럭 라인, 센서 연결 6 접지 전기적 접지
7 GPIO 4 일반 목적 I/O, 가정 자동화 8 GPIO 14 (TXD0) 시리얼(UART) 통신 송신, 디버깅 포트
9 접지 전기적 접지 10 GPIO 15 (RXD0) 시리얼(UART) 통신 수신, 디버깅 포트
11 GPIO 17 일반 목적 I/O, 버튼 연결 12 GPIO 18 PWM 출력, 오디오 제어
13 GPIO 27 일반 목적 I/O, 가정 자동화 14 접지 전기적 접지
15 GPIO 22 일반 목적 I/O, 모터 제어 16 GPIO 23 일반 목적 I/O, 모터 제어
17 3.3V 전원 센서 및 기타 모듈에 전원 공급 18 GPIO 24 일반 목적 I/O, 가정 자동화
19 GPIO 10 (MOSI) SPI 통신 MOSI 라인, 디스플레이 연결 20 접지 전기적 접지
21 GPIO 9 (MISO) SPI 통신 MISO 라인, 디스플레이 연결 22 GPIO 25 일반 목적 I/O, LED 연결
23 GPIO 11 (SCLK) SPI 클럭 라인, 디스플레이 연결 24 GPIO 8 (CE0) SPI 칩 선택, 디스플레이 연결
25 접지 전기적 접지 26 GPIO 7 (CE1) SPI 칩 선택, 디스플레이 연결
27 ID_SD (EEPROM) HAT 식별, EEPROM 데이터 라인 28 ID_SC (EEPROM) HAT 식별, EEPROM 클럭 라인
29 GPIO 5 일반 목적 I/O, 재부팅 스위치 30 접지 전기적 접지
31 GPIO 6 일반 목적 I/O, 가정 자동화 32 GPIO 12 PWM 출력, 모터 제어
33 GPIO 13 PWM 출력, LED 디밍 34 접지 전기적 접지
35 GPIO 19 PWM 출력, 오디오 제어 36 GPIO 16 일반 목적 I/O, 가정 자동화
37 GPIO 26 일반 목적 I/O, 센서 연결 38 GPIO 20 SPI 통신, 디스플레이 연결
39 접지 전기적 접지 40 GPIO 21 SPI 통신, 디스플레이 연결
 
  • 라즈베리파이 GPIO 패키지 설치
    • 모든 설치 및 세팅은 MobaXterm으로 라즈베리파이 SSH서버 접속하여 가상환경에서 실행한다.
    • 패키지 설치 명령어 : sudo pip install RPi.GPIO

#가상환경 접근( 참고 : https://hull.kr/IoT/6 )
iot_
#파이썬 GPIO 패키지 설치
pip install RPi.GPIO


20240223121818_75ee7b5f6499d927c8b0ed2477c9859f_4f3e.png

2. RGB Color 액츄레이터 모듈 설치
  • 빵판(Breadboard)
    • 전자회로의 시제품(시작품)을 만드는 데 사용하는 무땜납 장치
    • 천공 아래에 많은 납이 도금된 인청동 스프핑 클립이 있는 플라스틱 천공 블록
20240223134605_261723ef9739e8924015042427f870b5_qtny.png
  • SMD형 LED 모듈
    • 표면 실장 디자인(Surface-Mount Device, SMD)을 채택한 LED 모듈이다.
    • Keyes SMD LED 모듈 작고, 설치가 간편하며, 다양한 전자 프로젝트와 실험에서 광원이나 지시등으로 사용된다.
    • SMD LED는 전통적인 스루홀(Through-Hole) 타입 LED보다 작고, 발열이 적으며, 에너지 효율이 좋다는 특징이 있다.
    • GPIO 연결
      • - : Ground 접지(핀 14)
      • G : GPIO 22(핀 15)
      • R : GPIO 27(핀 13)
      • B : GPIO 17(핀 11)
20240223135943_261723ef9739e8924015042427f870b5_4wjy.png

20240223151337_261723ef9739e8924015042427f870b5_skf3.png

3. RGB Color 액츄레이터 모듈 구동
  • 라즈베리파이 가상환경에서 파이썬 코딩
    • VSCode에서 3_color_led.py 파일 생성
    • GPIO 17, 27, 22 핀을 출력 모드로 설정하여 순회하면 On/Off 코딩
20240223152111_261723ef9739e8924015042427f870b5_72zl.png


import RPi.GPIO as GPIO
import time
# 핀 번호 설정
BLUE_PIN = 17
GREEN_PIN = 27
RED_PIN = 22
# GPIO 핀의 번호 모드 설정
GPIO.setmode(GPIO.BCM)
# LED 핀의 모드를 출력으로 설정
GPIO.setup(BLUE_PIN, GPIO.OUT)
GPIO.setup(GREEN_PIN, GPIO.OUT)
GPIO.setup(RED_PIN, GPIO.OUT)
# LED를 순차적으로 켜고 끄는 함수
def cycle_leds():
    # 파란색 LED 켜기
    GPIO.output(BLUE_PIN, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(BLUE_PIN, GPIO.LOW)
   
    # 초록색 LED 켜기
    GPIO.output(GREEN_PIN, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(GREEN_PIN, GPIO.LOW)
   
    # 빨간색 LED 켜기
    GPIO.output(RED_PIN, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(RED_PIN, GPIO.LOW)
# 메인 프로그램
try:
    while True:
        cycle_leds()
except KeyboardInterrupt:
    # Ctrl+C 눌렀을 때 실행 종료
    GPIO.cleanup()  # GPIO 설정 초기화
  • GPIO.setmode()
    • Raspberry Pi의 GPIO 핀 사용 시 핀 번호링 체계를 설정하는 데 사용된다. 주로 두 가지 인자 값을 사용한다.
인자 값 기능
GPIO.BOARD 핀 번호를 보드의 물리적 위치로 지정.
GPIO.BCM 핀 번호를 Broadcom SOC 채널 번호로 지정.
 
  • GPIO.setup()
    • Raspberry Pi의 GPIO 핀을 입력 또는 출력 모드로 설정하는 데 사용된다.
인자 이름 데이터 타입 기능
channel int or list 설정할 GPIO 핀의 번호. 단일 핀을 설정할 때는 정수, 여러 핀을 설정할 때는 리스트 사용.
direction int 핀의 모드 설정. GPIO.IN은 입력 모드, GPIO.OUT은 출력 모드를 의미.
pull_up_down int 선택적. 내부 풀업/풀다운 저항을 설정. GPIO.PUD_OFF (기본값), GPIO.PUD_UP, GPIO.PUD_DOWN 중 선택.
initial int 선택적. 출력 모드에서 핀의 초기 상태 설정. GPIO.HIGH 또는 GPIO.LOW.
 
설정 동작 상태 설명
GPIO.PUD_UP 내부 풀업 저항 활성화 버튼 눌리지 않을 때 HIGH, 눌렸을 때 LOW.
GPIO.PUD_DOWN 내부 풀다운 저항 활성화 버튼 눌리지 않을 때 LOW, 눌렸을 때 HIGH.
 
  • GPIO.output()
    • Raspberry Pi의 GPIO 핀에 전압을 출력하여 핀 상태를 변경하는 데 사용된다. 주로 출력 모드로 설정된 핀에 사용된다.
    • 핀 18을 높은 상태로 설정(ON) : GPIO.output(18, GPIO.HIGH)
    • 여러 핀의 상태를 한 번에 변경 : GPIO.output([pin1, pin2], [GPIO.HIGH, GPIO.LOW])
인자 이름 데이터 타입 기능
channel int or list 출력 상태를 변경할 GPIO 핀의 번호. 단일 핀에 대해서는 정수, 여러 핀에 대해서는 리스트 사용.
state int or bool 핀의 상태를 설정. GPIO.HIGH 또는 True는 핀을 높은 상태로, GPIO.LOW 또는 False는 핀을 낮은 상태로 설정.
 
  • 3_color_led.py 실행
    • VSCode > 하단 터미널 > python 3_color_led.py 실행
20240223152325_261723ef9739e8924015042427f870b5_inv3.png

20240223221111_1061acc314b12b723dd28a2ee902c934_y82y.gif

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색