라즈베리파이:GPIO

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동

틀:라즈베리파이

  1. 라즈베리파이:개요
    1. 틀:우분투
    2. 라즈베리파이:무선랜
    3. 라즈베리파이:블루투스
  2. 라즈베리파이:파이썬 제어
  3. 라즈베리파이:하드웨어
    1. 라즈베리파이:GPIO
      1. 라즈베리파이:시리얼 통신
    2. 라즈베리파이:카메라
    3. 라즈베리파이:서보모터
    4. 라즈베리파이:모터

개요[편집 | 원본 편집]

general-purpose input/output. 다용도 입출력. 라즈베리파이 보드에서 센서들을 추가하기 위해 기본적으로 사용되는 인터페이스. 기본적으로 아두이노와 유사한 구조로, 핀을 통해 신호를 읽거나 내뱉는 방식이다.

유의[편집 | 원본 편집]

  • GPIO 핀으로 3.3V 이상이 들어오지 않게 각별히 주의하자.
  • 코드가 종료되는 등 상황에서 GPIO.cleanup() 을 실행해주어 자원을 돌려주고 점유한 핀을 초기화 해야 한다.

다양하게 제어하는 방식이 있지만, 파이썬이 적절한 대안일 듯하다.

파이썬의 RPi.GPIO, WiringPi로 제어가 가능하다.

입출력[편집 | 원본 편집]

입력[편집 | 원본 편집]

3.3V까지 받아들이며, 디지털신호만 받는다. 아날로그를 받기 위해선 ADC기능을 가진 IC를 사용해야 한다.

의도 설명 방법
호출 import RPi.GPIO as GPIO
핀 설정 GPIO.setmode(GPIO.BOARD) # 핀 번호로 사용하겠다는 설정.

GPIO.setmode(GPIO.BCM) # GPIO번호로 사용하겠다는 설정.

핀 설정2 스위치를 누르지 않은 상태에선 0이 되야 할 것 같지만..

라즈베리파이에선 아무 값도 들어오지 않는 floating 상태가 된다.

이를 위해 풀다운 저항을 달아주어 이를 통해 GND에 연결되게 하는데, 소프트웨어로도 조작이 가능하다.

GPIO.setup(채널, GPIO.OUT) # 출력으로 사용.

GPIO.setup(채널, GPIO.IN) # 입력으로 사용.

GPIO.setup(채널, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # 신호가 들어오지 않을 땐 0을 주겠다는 의미.

핀 출력 GPIO.output(채널, 1) # 3.3v 출력. GPIO.HIGH, True로 대체 가능.

GPIO.output(채널, 0) # GPIO.LOW, False로 대체 가능.

초기화 세팅을 초기화하고 리소스 반환.

GPIO 핀 쇼트 등의 하드웨어 문제를 방지한다.

코드의 시작이나 끝에 넣어주면 좋다.

GPIO.cleanup()