A resposta curta
Não, você (quase) não. Na verdade, é o contrário - você precisa configurá-los para não serem GPIO, mas para servir a seus propósitos especiais. A única exceção são os pinos UART. Os pinos I e C também são especiais.
Pinos UART
Os pinos UART são usados pelo kernel para o console. Você precisará configurar o sistema para não usá-los se desejar que eles estejam disponíveis para seu uso:
- editar
/boot/cmdline.txt
e remover console=ttyAMA0,115200
e kgdboc=ttyAMA0,115200
parâmetros
edite /etc/inittab
e comente (coloque um #
caractere na frente) a linha:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
reinicie o seu RaspberryPi
Agora, os pinos não devem ser usados pelo sistema e você pode usá-los
Pinos I²C
Os pinos I²C possuem resistores pull-up de 1,8k instalados. Eles não podem ser desativados. Isso limita o uso desses pinos em algumas situações (mas pode ser útil em outras).
Soluções adicionais
Se estiver com poucos pinos GPIO, às vezes você pode estender seu número facilmente usando algum hardware adicional (mas simples). Para saída, por exemplo, você pode usar shift registers
ou I²C I/O expanders
(também chamado de `expansores de barramento I²C) ', ambos facilmente para comprar e usar. Você pode encontrar exemplos de seu uso aqui .
PFC8574
(ou similar desta família) são tão populares que existe um módulo do kernel pronto para usar que lida com toda a comunicação para você ( ele não está ativado no kernel oficial do RaspberryPi, você precisará compilar seu próprio kernel para usá-lo ). O módulo é chamado gpio_pcf857x
, desde que você o carregue modprobe
(junto com os drivers I²C) e que tenha o chip conectado ao I²C
barramento, você pode ativá-lo desta forma:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
onde pcf8574
está o nome atual do chip (este módulo pode lidar com alguns chips diferentes como pca967x
e max732x
) e 0x27
o endereço dele I²C
(você pode configurar o endereço do chip ao conectá-lo).
Isso criará entradas no /sys/class/gpio/
diretório que permitirão que você as use da mesma maneira que outras portas GPIO no RaspberryPi, desde que você esteja usando a sys
interface (por exemplo, wiringPiSetupSys()
na fiaçãoPi). Infelizmente, o RPi.GPIO
módulo do Python não suporta esse modo, portanto, não será possível usar esses pinos nesta biblioteca. Os pinos terão alguns números altos, como 248-255 ou similar.
Nota: PCF8574
é sinking current
- ele pode fornecer dissipador de unidade (aceitar em estado baixo) até 20mA, mas pode fornecer apenas 0,1mA em estado alto. Isso significa que você geralmente o usará em lógica reversa, ie +3.3V -> LED -> RESISTOR -> PCF8574_PIN
.