라즈베리파이(Raspberrypi)

[라즈베리파이] GPIO란? LED 켜기&끄기, 핀맵(Pinmap, Pinout)

끄적끄적아무거나 2022. 12. 22. 09:11
반응형

 

목차

     

     

     

     

    Raspberry Pi GPIO란? 핀맵

    라즈베리파이(Raspberry Pi)와 같은 임베디드(Embedded) 보드는 내부에 MCU 칩이 있고 칩을 프로 그램해서 외부 장치들로 부터 센서의 신호를 읽거나 제어를 위해 출력 신호를 보냅니다. 이때 입출력 신호를 주고 받을 수 있는 핀들을 GPIO(General Purpose Input/Output)이라고 합니다. 

     

    • 외부 장치와 입출력 신호를 주고 받는 핀
    • GPIO 핀 제어를 위해 임베디드 보드 내에 레지스터(Register)에 값을 입력하여 사용
    • 일반적으로 LED 구동 전력 정도의 파워를 공급

     

     

    제가 가지고 있는 라즈베리파이 4 보드의 핀맵(Pin Map)은 아래와 같습니다.

    https://www.raspberrypi.com/

     

     

     

     

     

     

     

     

    Raspberry LED 켜기&끄기(하드웨어)

    이번에는 앞서 핀아웃을 사용해서 간단하게 라즈베리 파이의 5V와 GND 선을 10kohm 저항에 연결하고 LED를 키는 방법에 대해 알아보고 다음은 프로그램을 사용해서 LED를 GPIO 핀으로 켜 보겠습니다.

     

     

    위 그림과 같이 라즈베리파이 4의 4번의 5V 핀과 6번의 접지(Ground) 핀을 사용해서 저항을 통해 전류를 공급해서 빨간색 LED 등을 켜보았습니다. 

     

     

     

    이번에는 프로그램을 통해 LED를 제어하는 방법에 대해 알아보겠습니다. 일반적으로 임베디스 시스템을 제어하기 위해서는 칩사(Chip Maker)에서 제공하는 전용 프로그램으로 제어를 하거나 커널을 이용해서 직접 레지스터를 세팅할 줄 알아야 하지만 라즈베리 파이는 파이썬(Python)으로 제어가 가능하게 내부에 드라이브가 설치되어 있습니다. 

     

    이번 내용은 파이썬(Python)을 사용해서 제어하는 방법에 대해 알아보겠습니다.

     

     

     

     

     

     

     

     

    Raspberry LED 켜기&끄기(파이썬 프로그래밍)

     

     

    GPIO 핀 제어를 위한 프로 그램을 아래와 같이 설치 합니다. 

     

    apt-get install python-dev
    apt-get install python-rpi.gpio

     

    혹시 저처럼 python3을 쓰신다면 아래와 같은 에러 메세지가 뜰 수 있습니다.

    "E: Package 'python-rpi.gpio' has no installation candidate"

     

     

    그럴 경우 아래와 같이 수정해서 install 해주시면 됩니다.

     

    apt-get install python3-rpi.gpio

     

     

     

     

    파이썬 코드>>

    import RPi.GPIO as GPIO
    import time
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(23, GPIO.OUT)
    while (True):
        GPIO.output(23, True)
        time.sleep(1)
        GPIO.output(23, False)
        time.sleep(1)

    코드는 nano로 작성하였습니다. GPIO23번 핀을 1초 간격으로 5V를 공급합니다. 23번 핀은 핀맵에서 16번 위치에 있습니다. 그러므로 보드에서 연결을 주의해서 16번으로 연결해야 합니다. 

     

     

    코드 주석>>

    import RPi.GPIO as GPIO

    파이썬으로 GPIO를 조작할 수 있는 RPi.GPIO 라이브러리를 import 해옵니다.

     

     

    GPIO.setmode(GPIO.BCM)
    GPIO.setup(23, GPIO.OUT)

    제가 사용하는 라즈베리파이 보드의 BCM 칩을 세팅하고 GPIO23번 핀을 출력 신호(GPIO.OUT)으로 설정 합니다. 

     

     

    while (True):
        GPIO.output(23, True)
        time.sleep(1)
        GPIO.output(23, False)
        time.sleep(1)

    while 문을 사용해서 1초 sleep 간격으로 출력 신호를 켰다 껐다 해줍니다.

     

     

     

     

     

     

    결과>>

    화질이 좋지 않아 잘 보이지는 않지만 LED 등이 깜빡이는 것을 알 수 있습니다.

     

     

     

    반응형