라즈베리파이:GPIO

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2022년 11월 3일 (목) 08:27 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

틀:라즈베리파이

  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()