짧은 대답
아니, 당신은 (거의)하지 않습니다. 실제로 다른 방법입니다. GPIO가 아니라 특수 목적을 위해 설정해야합니다. 유일한 예외는 UART 핀입니다. 또한 I²C 핀은 어떻게 든 특별합니다.
UART 핀
UART 핀은 콘솔에서 커널에 의해 사용됩니다. 시스템을 사용할 수있게하려면 시스템을 사용하지 않도록 구성해야합니다.
이제 시스템에서 핀을 사용해서는 안되며 사용할 수 있습니다
I²C 핀
I²C 핀에는 1.8k 풀업 저항이 내장되어 있습니다. 비활성화 할 수 없습니다. 이것은 일부 상황에서 핀 사용을 제한하지만 다른 상황에서는 유용 할 수 있습니다.
추가 솔루션
GPIO 핀이 부족한 경우 추가 (단순한) 추가 하드웨어를 사용하여 핀 번호를 쉽게 확장 할 수 있습니다. 예를 들어, 출력의 경우 쉽게 구입하고 사용할 수있는 shift registers
또는 I²C I/O expanders
(I²C 버스 확장기라고도 함)를 사용할 수 있습니다. 사용법 예는 여기 에서 찾을 수 있습니다 .
PFC8574
(또는이 제품군과 유사한) 너무 인기가있어 모든 통신을 처리하는 커널 모듈을 사용할 준비가되어 있습니다 ( 공식 RaspberryPi 커널에서 활성화되어 있지 않으므로이를 사용하려면 자신의 커널을 컴파일해야합니다 ). 모듈은 (I²C 드라이버와 함께) gpio_pcf857x
로드 modprobe
되고 칩이 I²C
버스에 연결되어 있으면 다음과 같이 활성화 할 수 있습니다.
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
pcf8574
실제 칩 이름은 어디에 있고 (이 모듈은 pca967x
and와 같은 몇 가지 다른 칩을 처리 할 수 있습니다 max732x
) 0x27
주소는 켜져 있습니다 I²C
(칩을 배선 할 때 칩 주소를 구성 할 수 있음).
그러면 /sys/class/gpio/
디렉토리에 항목을 생성 하여 RaspberryPi의 다른 GPIO 포트와 같은 방식으로 sys
인터페이스를 사용할 수 있습니다 (예 wiringPiSetupSys()
: wireingPi). 불행히도 파이썬 RPi.GPIO
모듈은이 모드를 지원하지 않으므로이 라이브러리에서이 핀을 사용할 수 없습니다. 핀에는 248-255 또는 이와 유사한 숫자가 있습니다.
참고 : PCF8574
인 sinking current
- 20mA만큼 (낮은 상태에서 동의)가 드라이브 싱크를 줄 수 있지만, 높은 상태에서 그것을 할 수있는 유일한 소스 0.1mA의. 즉, 일반적으로 리버스 로직으로 사용한다는 의미입니다 +3.3V -> LED -> RESISTOR -> PCF8574_PIN
.