라즈베리파이:GPIO: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
편집 요약 없음
편집 요약 없음
32번째 줄: 32번째 줄:
|-
|-
|핀 설정2
|핀 설정2
|
|스위치를 누르지 않은 상태에선 0이 되야 할 것 같지만..
 
라즈베리파이에선 아무 값도 들어오지 않는 floating 상태가 된다.
 
이를 위해 풀다운 저항을 달아주어 이를 통해 GND에 연결되게 하는데, 소프트웨어로도 조작이 가능하다.
|GPIO.setup(채널, GPIO.OUT)  # 출력으로 사용.
|GPIO.setup(채널, GPIO.OUT)  # 출력으로 사용.
GPIO.setup(채널, GPIO.IN)  # 입력으로 사용.
GPIO.setup(채널, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)  # 신호가 들어오지 않을 땐 0을 주겠다는 의미.
|-
|-
|핀 출력
|핀 출력

2022년 11월 2일 (수) 18:01 판

틀:라즈베리파이

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


SPI 통신

Serial Peripheral Interface. 시리얼 통신을 사용하려면 다음과 같은 과정이 필요하다.

과정 설명 방법
설정 라즈베리파이의 설정을 변경한다. 라즈베리파이 설정 > 인터페이스 > SPI, I2C를 Enable로 설정
리부팅 설정을 반영하기 위해. sudo reboot
SPI라이브러리 설치 설치하고자 하는 위치에서 실행한다. git clone [./Git://github.com/doceme/py-spidev git://github.com/doceme/py-spidev]
파이썬에서의 활용
import spidev

spi = spidev.SpiDev()  # 인스턴스 생성.
spi.open(0,0)  # 통신 시작.
spi.max_speed_hz = 100000  # 통신속도 설정.

I^2C 통신

Inter-Integrated Circuit. 동기식 시리얼 통신. SPI통신에선 슬레이브 기기가 추가될 때마다 통신라인이 필요한 것에 비해, IIC에선 간단하게 많은 기기를 설치할 수 있다. 대신 느리다. 때문에 저속 장치들 사이의 통신에 사용된다.

모든 기기들을 SCL과 SDA핀에 병렬연결해주면 된다.

과정 설명 방법
설정 라즈베리파이의 설정을 변경한다. 라즈베리파이 설정 > 인터페이스 > SPI, I2C를 Enable로 설정
리부팅 설정을 반영하기 위해. sudo reboot
확인 /dev/i2c-1 과 같은 답변을 얻었다면 설정이 제대로 된 것. ls /dev/i2c*
툴 설치 기기를 SCL과 SDA에 연결한 후에

i2cdetect -y 1을 명령하면 연결된 주소가 나온다.

sudo apt-get install -y i2c-tools
파이썬에서의 활용 보통 기기를 활용하는 라이브러리를 사용할 때 자동으로 지정하여 읽는데..

라이브러리별로 지정하는 방법이 다르다.