La réponse courte
Non, vous (presque) pas. C'est en fait l'inverse - vous devez les configurer non pas pour être GPIO mais pour servir leur objectif spécial. La seule exception concerne les broches UART. De plus, les broches I²C sont en quelque sorte spéciales.
Broches UART
Les broches UART sont utilisées par le noyau pour la console. Vous devrez configurer le système pour ne pas les utiliser si vous souhaitez qu'ils soient disponibles pour votre usage:
- éditer
/boot/cmdline.txtet supprimer console=ttyAMA0,115200et kgdboc=ttyAMA0,115200paramètres
éditez /etc/inittabet commentez (mettez le #caractère devant) la ligne:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
redémarrez votre RaspberryPi
Maintenant, les broches ne doivent pas être utilisées par le système et vous pouvez les utiliser
Broches I²C
Les broches I²C sont équipées de résistances de rappel 1,8 k intégrées. Ils ne peuvent pas être désactivés. Cela limite l'utilisation de ces broches dans certaines situations (mais peut être pratique dans d'autres).
Solutions complémentaires
Si vous manquez de broches GPIO, vous pouvez parfois facilement étendre son nombre en utilisant du matériel supplémentaire (mais simple). Pour la sortie par exemple, vous pouvez utiliser shift registersou I²C I/O expanders(aussi appelé `expandeurs de bus I²C), à la fois facilement à acheter et à utiliser. Vous pouvez trouver un exemple de son utilisation ici .
PFC8574(ou similaire de cette famille) sont si populaires qu'il existe un module de noyau prêt à l'emploi qui gère toutes les communications pour vous ( il n'est pas activé dans le noyau RaspberryPi officiel, vous devrez compiler votre propre noyau pour l'utiliser ). Le module est appelé gpio_pcf857x, à condition que vous l'ayez chargé modprobe(avec les pilotes I²C) et que vous ayez la puce connectée au I²Cbus, vous pouvez l'activer comme ceci:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
où pcf8574est le nom réel de votre puce (ce module peut gérer quelques puces différentes comme pca967xet max732x) et 0x27son adresse I²C(vous pouvez configurer l'adresse de la puce lors du câblage).
Cela créera des entrées dans le /sys/class/gpio/répertoire qui vous permettront de les utiliser de la même manière que les autres ports GPIO dans RaspberryPi, à condition que vous utilisiez l' sysinterface (par exemple wiringPiSetupSys()dans le câblagePi). Malheureusement, le RPi.GPIOmodule de Python ne prend pas en charge ce mode, il ne pourra donc pas utiliser ces broches avec cette bibliothèque. Les broches auront des chiffres élevés comme 248-255 ou similaire.
Remarque: PCF8574 est sinking current- il peut fournir un puits de disque (accepter à l'état bas) jusqu'à 20 mA, mais il ne peut fournir que 0,1 mA à l'état élevé. Cela signifie que vous allez généralement l'utiliser en logique inverse, c'est-à-dire +3.3V -> LED -> RESISTOR -> PCF8574_PIN.