본문 바로가기

코딩/파이썬과 라즈베리파이

[Raspberry Pi 3 B+] GPIO 핀 기본/초기 상태 확인

LED를 GPIO 2번 핀에 (GPIO 해더에선 3번 핀) 연결하니,

아무 코딩도 하지 않았는데 라즈베리 파이가 부팅되면서 자동으로 LED가 ON 되어 초기 GPIO 핀 상태가 궁금해졌다.

 

각 GPIO 핀 상태를 확인할 수 있는 간단한 방법으로 터미널 창에서 gpio readall 명령어를 실행한다.

 

아래 그림에서,

  • BCM은 라즈베리 파이의 GPIO 번호를 의미
  • wPi는 Wiring Pi 라이브러리 기준 핀 번호를 의미
  • Mode는 해당 핀이 임의 신호에 대하여 입력(IN) 모드인지 아니면 출력(OUT) 모드인지를 의미
  • V는 해당 핀의 상태가 논리적으로 1인지 아니면 0인지를 의미
  • Physical은 라즈베리 파이의 GPIO 해더의 핀 번호를 의미

 

2021.04.25 - [학습노트/Raspberry Pi] - [Raspberry Pi 3 B+] 라즈베리 파이의 GPIO

 

명령어 gpio 관련해서 찾아보니

라즈베리 파이에서의 gpio는 라즈베리 파이를 위한 C 언어 기반 GPIO 인터페이스 라이브러리인 Wiring Pi의미 한다고 한다.

 

추가 정보는 wiringpi.com에서 확인할 수 있을 것이며, 터미널 창에 gpio -h 명령어를 실행하면 사용 가능한 명령어 리스트를 확인할 수 있다.

 

 

간단한 시험을 해 보면,

LED를 GPIO 18번 핀에 (GPIO 해더에선 12번 핀) 연결하니 기본적으로 LED는 켜지지 않는다.

 

이 상태에서 아래의 파이썬 코드를 라즈베리 파이에서 실행하면,

 

from time import sleep
from gpiozero import LED

led = LED(18)
period = 0.5

for c in range(5):
    led.toggle()
    print(led.is_active)
    sleep(period)

led.on()  # LED ON 상태로 종료

 

LED는 수 차례 ON/OFF 되다가 프로그램이 종료된 이후 ON 상태를 유지한다.

 

이 상황에서 gpio readall 명령어를 실행하면 GPIO 18번 핀의 Mode가 IN -> OUT , V가 0 -> 1로 변경된 것을 확인할 수 있다.

 

 

다음으로 GPIO 2번 핀에 LED를 연결한 후 LED를 ON/OFF하는 파이쎤 코드를 실행하면,

 

from time import sleep
from gpiozero import LED

led = LED(2)
period = 0.5

for c in range(5):
    led.toggle()
    print(led.is_active)
    sleep(period)

led.off()  # LED OFF 상태로 종료

 

GPIO 2번 핀의 Mode가 IN -> OUT으로 변경된 것을 확인할 수 있다.