본문 바로가기

개발자/라즈베리파이4

RPi.GPIO 모듈, RPi.GPIO 라이브러리, RPi.GPIO API 사용법

반응형

 

 

RPi.GPIO 모듈, RPi.GPIO 라이브러리, RPi.GPIO API 사용법 

 

이름이야 어떤 이름으로 부르든 여하튼 라즈베리파이에서 파이선을 이용해 GPIO를 다루는 방법에 대해 알아봅니다. RPi.GPIO 라이브러리는 파이썬에서 라즈베리파이의 gpio핀을 제어할 수 있도록 해주는 라이브러리로 라즈베리파이 운영체제에 이미 설치되어 있습니다. 혹시 설치가 안 되어 있을 경우에는 아래 명령어로 설치합니다. 

 

pi@raspberrypi:~ $ sudo apt-get install python-dev
pi@raspberrypi:~ $ sudo apt-get install python-rpi.gpio

 

기본적인 사용법

 

RPi.GPIO 모듈을 가져오려면: 

 

import RPi.GPIO as GPIO

 

모듈을 가져오고 성공했는지 확인하려면: 

 

try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script")

 

 

 

RPi.GPIO 모듈, RPi.GPIO 라이브러리, RPi.GPIO API 사용법 

 

RPi.GPIO 모듈, RPi.GPIO 라이브러리, RPi.GPIO API 사용법

RPi.GPIO 모듈, RPi.GPIO 라이브러리, RPi.GPIO API 사용법 이름이야 어떤 이름으로 부르든 여하튼 라즈베리파이에서 파이선을 이용해 GPIO를 다루는 방법에 대해 알아봅니다. RPi.GPIO 라이브러리는 파이썬

fishpoint.tistory.com

라즈베리파이 GPIO 핀 번호, 사용 가능한 핀 정리 

 

라즈베리파이 GPIO 핀 번호, 사용 가능한 핀 정리

라즈베리파이 GPIO 핀 번호, 사용 가능한 핀 정리 라즈베리파이에서 실제 GPIO(General Purpose Input/Output) pin 으로 사용할 수 있는 핀을 계산해보자. GPIO 핀은 모든 마이크로 프로세서나 MCU, 온보드 컴퓨

fishpoint.tistory.com

Raspberry Pi GPIO와 wiringPi 라이브러리 

 

Raspberry Pi GPIO 와 wiringPi 라이브러리

Raspberry Pi GPIO 라즈베리파이의 GPIO 활용법을 알아보자. 사용 언어는 C 언어이다. 개발환경은 하드웨어적으로는 라즈베리파이 모델B 버전2 512RAM 환경에, 소프트웨어적으로는 라즈베리파이의 공식

fishpoint.tistory.com

Raspberry Pi4 GPIO Pinout 완벽 정리

 

Raspberry Pi4 GPIO Pinout 완벽 정리

Raspberry Pi4 GPIO Pinout Raspberry Pi 4는 이전 Raspberry Pi 모델보다 더 많은 고급 기능을 제공합니다. 2019년 6월에 출시되었으며 4GB 및 8GB RAM 메모리를 포함하여 이전 버전에 비해 처리 속도가 약 90% 향상

fishpoint.tistory.com

 

 

핀 번호 매기기

 

RPi.GPIO 내에서 Raspberry Pi의 IO 핀에 번호를 매기는 방법에는 두 가지가 있습니다.

 

첫 번째는 BOARD 번호 매기기 시스템을 사용하는 것입니다. 이것은 Raspberry Pi 보드의 P1 헤더에 있는 핀 번호를 나타냅니다. 이 번호 매기기 시스템을 사용하는 이점은 RPi의 보드 버전에 관계없이 하드웨어가 항상 작동한다는 것입니다. 커넥터를 다시 배선하거나 코드를 변경할 필요가 없습니다.

 

두 번째 번호 체계는 BCM 번호입니다. 이것은 낮은 수준의 작업 방식으로, Broadcom SOC의 채널 번호를 나타냅니다. 어떤 채널 번호가 RPi 보드의 어느 핀으로 가는지 다이어그램으로 항상 작업해야 합니다. Raspberry Pi 보드의 개정판 사이에 스크립트가 중단될 수 있습니다.

 

사용 중인 항목을 지정하려면(필수): 

 

GPIO.setmode(GPIO.BOARD)
  # or
GPIO.setmode(GPIO.BCM)

 

어떤 핀 번호 매기기 시스템이 설정되었는지 감지하려면(예: 다른 Python 모듈에 의해): 

 

mode = GPIO.getmode()

 

모드는 GPIO.BOARD, GPIO.BCM 또는 None입니다.

 

경고

 

Raspberry Pi의 GPIO에 둘 이상의 스크립트/회로가 있을 수 있습니다. 결과적으로 RPi.GPIO가 핀이 기본(입력)이 아닌 다른 것으로 구성되었음을 감지하면 스크립트를 구성하려고 할 때 경고가 표시됩니다. 이러한 경고를 비활성화하려면: 

 

GPIO.setwarnings(False)

 

채널 설정

 

입력 또는 출력으로 사용 중인 모든 채널을 설정해야 합니다.

 

채널을 입력으로 구성하려면: 

 

GPIO.setup(channel, GPIO.IN)

 

(여기서 channel은 지정한 번호 체계(BOARD 또는 BCM)를 기반으로 하는 채널 번호입니다.) 입력 채널 설정에 대한 고급 정보는 여기에서 찾을 수 있습니다.

 

채널을 출력으로 설정하려면: 

 

GPIO.setup(channel, GPIO.OUT)

 

(여기서 channel은 지정한 번호 체계(BOARD 또는 BCM)를 기반으로 하는 채널 번호입니다.)

 

출력 채널의 초기 값을 지정할 수도 있습니다. 

 

GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)

 

둘 이상의 채널 설정 통화당 둘 이상의 채널을 설정할 수 있습니다(릴리스 0.5.8 이상).

 

예를 들어: 

 

chan_list = [11,12]    # add as many channels as you want!
                       # you can tuples instead i.e.:
                       #   chan_list = (11,12)
GPIO.setup(chan_list, GPIO.OUT)

 

입력 GPIO 핀 값을 읽으려면: 

 

GPIO.input(channel)

 

(여기서 channel은 지정한 번호 체계(BOARD 또는 BCM)를 기반으로 하는 채널 번호입니다.) 이것은 0 / GPIO.LOW / False 또는 1 / GPIO.HIGH / True를 반환합니다. 

 

출력 GPIO 핀의 출력 상태를 설정하려면: 

 

GPIO.output(channel, state)

 

(여기서 channel은 지정한 번호 체계(BOARD 또는 BCM)를 기반으로 하는 채널 번호입니다.) 상태는 0 / GPIO.LOW / False 또는 1 / GPIO.HIGH / True일 수 있습니다.

 

여러 채널로 출력

 

동일한 호출에서 여러 채널로 출력할 수 있습니다(릴리스 0.5.8 이상).

 

예를 들어: 

chan_list = [11,12]                             # also works with tuples
GPIO.output(chan_list, GPIO.LOW)                # sets all to GPIO.LOW
GPIO.output(chan_list, (GPIO.HIGH, GPIO.LOW))   # sets first HIGH and second LOW

 

Cleanup

 

모든 프로그램이 끝나면 사용했을 수 있는 리소스를 정리하는 것이 좋습니다. 이것은 RPi.GPIO와 다르지 않습니다. 풀업/다운 없이 사용한 모든 채널을 다시 입력으로 되돌리면 핀이 단락 되어 우발적으로 RPi가 손상되는 것을 방지할 수 있습니다. 이것은 스크립트가 사용한 GPIO 채널만 정리한다는 점에 유의하십시오. GPIO.cleanup()은 사용 중인 핀 번호 매기기 시스템도 지웁니다.

 

스크립트 끝에서 정리하려면: 

 

GPIO.cleanup()

 

프로그램이 종료될 때 일부 설정을 남겨두고 모든 채널을 정리하고 싶지 않을 수 있습니다. 개별 채널, 목록 또는 채널 튜플을 정리할 수 있습니다. 

 

GPIO.cleanup(channel)
GPIO.cleanup( (channel1, channel2) )
GPIO.cleanup( [channel1, channel2] )

 

RPi 보드 정보 및 RPi.GPIO 버전 RPi에 대한 정보를 찾으려면: 

 

GPIO.RPI_INFO

 

Raspberry Pi 보드 개정판을 찾으려면: 

 

GPIO.RPI_INFO['P1_REVISION']
GPIO.RPI_REVISION    (deprecated)

 

RPi.GPIO 버전을 확인하려면: 

 

GPIO.VERSION

 

아래는 위 보드 정보와 버전을 아는 명령을 테스트하는 상태를 보여줍니다.

 

pi@raspberrypi:~ $
pi@raspberrypi:~ $ python
Python 2.7.13 (default, Aug 22 2020, 10:03:02)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> import RPi.GPIO as GPIO

>>> GPIO.VERSION
'0.6.5'

>>> GPIO.RPI_INFO
{'P1_REVISION': 3, 'RAM': '1024M', 'REVISION': 'a02082', 'TYPE': 'Pi 3 Model B', 'PROCESSOR': 'BCM2837', 'MANUFACTURER': 'Sony'}
>>> GPIO.RPI_INFO['P1_REVISION']
3

>>> GPIO.RPI_REVISION
3
>>>

 

 

 

참고

Raspberry gPIo - only 

Raspberry gPIo All 

Raspberry pi 에서 python으로 GPIO 사용하기  

RPi.GPIO module basics 

라즈베리파이 GPIO 제어 파이썬 Rpi.GPIO 패키지 

 

 

Raspberry Pi 4 GPIO Pinout, Specs, Schematic - https://www.etechnophiles.com/raspberry-pi-4-gpio-pinout-specifications-and-schematic/

 

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^