La respuesta corta
No, tú (casi) no lo haces. En realidad, es al revés: debe configurarlos para que no sean GPIO sino que cumplan su propósito especial. La única excepción son los pines UART. También y pines I²C de alguna manera especial.
Pasadores UART
Los pines UART son utilizados por el núcleo para la consola. Tendrá que configurar el sistema para que no los use si desea que estén disponibles para su uso:
Ahora los pines no deben ser utilizados por el sistema y puedes usarlos
Pines I²C
Los pines I²C tienen instaladas resistencias pull-up de 1.8k. No pueden ser deshabilitados. Esto limita el uso de esos pines en algunas situaciones (pero puede ser útil en otras).
Soluciones adicionales
Si se están agotando los pines GPIO, a veces puede ampliar fácilmente su número utilizando un hardware adicional (pero simple). Por ejemplo, para la salida, puede usar shift registers
o I²C I/O expanders
(también llamado `expansores de bus I²C), tanto para comprar como para usar fácilmente. Puede encontrar un ejemplo de su uso aquí .
PFC8574
(o similar de esta familia) son tan populares que hay un módulo de kernel listo para usar que maneja toda la comunicación por usted ( no está habilitado en el kernel oficial de RaspberryPi, deberá compilar su propio kernel para usarlo ). Se llama al módulo gpio_pcf857x
, siempre que lo haya cargado modprobe
(junto con los controladores I²C) y que tenga el chip conectado al I²C
bus, puede activarlo así:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
dónde pcf8574
está el nombre real de su chip (este módulo puede manejar algunos chips diferentes como pca967x
y max732x
) y 0x27
es su dirección activada I²C
(puede configurar la dirección del chip cuando lo conecta)
Esto creará entradas en el /sys/class/gpio/
directorio que le permitirán usarlas de la misma manera que otros puertos GPIO en RaspberryPi, siempre que esté usando la sys
interfaz (por ejemplo, wiringPiSetupSys()
en cableadoPi). Desafortunadamente, el RPi.GPIO
módulo de Python no admite este modo, por lo que no podrá usar estos pines con esta biblioteca. Los pines tendrán algunos números altos como 248-255 o similar.
Nota: PCF8574
es sinking current
- puede proporcionar un disipador de disco (aceptar en estado bajo) hasta 20 mA, pero solo puede generar 0.1 mA en estado alto. Esto significa que generalmente lo usará en lógica inversa, es decir +3.3V -> LED -> RESISTOR -> PCF8574_PIN
.