Een rondleiding door de Raspberry Pi GPIO
De Raspberry Pi kan veel zijn. Dat is een deel van zijn aantrekkingskracht. Je kunt de Pi gebruiken als een gewone pc en randapparatuur aansluiten via de USB- en HDMI-poorten van het bord. Als je je wilt verdiepen in de technische aspecten van de Pi, richt je aandacht dan op de set pinnen langs de zijkant van de printplaat. Die pinnen vormen de sleutel tot het gebruik van de Raspberry Pi in IoT, robotica en andere projecten. De pinnen zijn niet zo intimiderend als je misschien denkt, als ze eenmaal zijn afgebroken en uitgelegd.

Een inleiding tot de pinnen van de Raspberry Pi
De term GPIO (General Purpose Input Output) is niet exclusief voor de Raspberry Pi. Input- en output-pinnen zijn te vinden op de meeste microcontrollers, zoals de Arduino, Beaglebone en meer.
De GPIO met de Raspberry Pi is het lange blok pinnen in de linkerbovenhoek van het bord. Oudere modellen hadden 26 pinnen en huidige modellen hebben 40 pinnen.
U kunt componenten en andere hardwareapparaten op deze pinnen aansluiten en code gebruiken om te bepalen wat de componenten doen. Het is een belangrijk onderdeel van de Raspberry Pi en een uitstekende manier om over elektronica te leren.
Na een paar softwareprojecten zul je waarschijnlijk merken dat je met deze pinnen gaat experimenteren, en je graag je code wilt mixen met hardware om dingen in het echte leven te laten gebeuren.
Dit proces kan intimiderend zijn als je nieuw bent bij de Pi. Aangezien één verkeerde beweging je Raspberry Pi kan beschadigen, is het begrijpelijk dat het een nerveus gebied is voor beginners om te verkennen.
In dit artikel wordt uitgelegd wat elk type GPIO-pin doet en wat de beperkingen zijn.
De GPIO
Laten we eerst eens kijken naar de GPIO als geheel. De pinnen zien er misschien hetzelfde uit, maar hebben allemaal verschillende functies. Onderstaande afbeelding toont deze functies in verschillende kleuren.

Elke pin is genummerd van 1 tot 40, beginnend in de linkerbenedenhoek. Dit zijn de fysieke pinnummers. Er zijn echter ook conventies voor nummering en etikettering, zoals BCM, die worden gebruikt bij het schrijven van code.
Stroom en aarde
Rood gemarkeerd zijn voedingspinnen met het label 3 of 5 voor 3,3V of 5V. Met deze pinnen kunt u stroom naar een apparaat sturen zonder dat u een code nodig heeft. Er is ook geen manier om deze uit te schakelen.

Er zijn twee stroomrails: 3,3 volt en 5 volt. De 3,3V-rail is beperkt tot 50mA stroomafname. Daarentegen biedt de 5V-rail de huidige capaciteit die over is van de voeding nadat de Pi heeft genomen wat hij nodig heeft.
In bruin gemarkeerd zijn de grondpennen (GND). Deze aardpennen zijn een essentieel onderdeel van elk elektronicaproject.
5V GPIO-pinnen zijn fysieke nummers 2 en 4. 3.3V GPIO-pinnen zijn fysieke nummers 1 en 17. Ground GPIO-pinnen zijn fysieke nummers 6, 9, 14, 20, 25, 30, 34 en 39.
Invoer-/uitvoerpinnen
De groene pinnen zijn generieke invoer-/uitvoerpinnen. Deze kunnen eenvoudig worden gebruikt als in- of uitgangen zonder te botsen met andere functies zoals I2C, SPI of UART.
Deze pinnen kunnen stroom naar een LED, zoemer of andere componenten sturen, of ze kunnen worden gebruikt als invoer om sensoren, schakelaars of andere invoerapparaten te lezen.

Het uitgangsvermogen van deze pinnen is 3,3V. Elke pin mag de 16mA stroom niet overschrijden, zowel zinkend als sourcing. De hele set GPIO-pinnen mag niet meer dan 50 mA tegelijk overschrijden. Dit kan beperkend zijn, dus het kan zijn dat u bij bepaalde projecten creatief moet zijn.
Generieke GPIO-pinnen zijn fysieke nummers 7, 11, 12, 13, 15, 16, 18, 22, 29, 31, 32, 33, 35, 36, 37, 38 en 40.
I2C-pinnen
De I2C-pinnen zijn in het geel. I2C is een communicatieprotocol waarmee apparaten kunnen communiceren met de Raspberry Pi. Deze pinnen kunnen ook worden gebruikt als generieke GPIO-pinnen.

Een goed voorbeeld van het gebruik van I2C is de populaire MCP23017 poortuitbreidingschip, die u via dit I2C-protocol meer input/output-pinnen kan geven.
I2C GPIO-pinnen zijn fysieke pinnummers 3 en 5.
UART (seriële) pinnen
De UART-pinnen zijn grijs. Deze pinnen zijn een ander communicatieprotocol dat seriële verbindingen biedt en kan worden gebruikt als generieke GPIO-ingangen/uitgangen.

Een gebruik voor UART is om een seriële verbinding van een Pi naar een laptop via USB mogelijk te maken. Dit kan worden bereikt met behulp van add-on boards of eenvoudige kabels. Het maakt een scherm of internetverbinding overbodig om toegang te krijgen tot uw Pi.
UART GPIO-pinnen zijn fysieke pinnummers 8 en 10.
SPI-pinnen
De SPI-pinnen zijn in het roze. SPI is een interfacebus die gegevens verzendt tussen de Pi en andere hardware en randapparatuur. Het wordt vaak gebruikt voor het koppelen van apparaten zoals een LED matrix of scherm.

Net als andere kunnen deze pinnen ook worden gebruikt als generieke GPIO-ingangen/uitgangen.
SPI GPIO-pinnen zijn fysieke pinnummers 19, 21, 23, 24 en 26.
DNC-pinnen
De laatste zijn twee pinnen in blauw die momenteel zijn gelabeld als DNC, wat staat voor Do Not Connect. Dit kan in de toekomst veranderen als de Raspberry Pi Foundation de borden of software wijzigt.

DNC GPIO-pinnen zijn fysieke pinnummers 27 en 28.
GPIO-nummeringconventies
Bij het coderen met de GPIO heb je de keuze om de GPIO-bibliotheek op twee manieren te importeren: BCM of BOARD.
De eerste optie is GPIO BCM. Dit is de Broadcom-nummeringsconventie. Het wordt vaak gebruikt in projecten en hardware-add-ons.
De tweede optie is GPIO BOARD. Deze methode gebruikt in plaats daarvan de fysieke pinnummers, wat handig is bij het tellen van pinnen. Je zult zien dat het minder wordt gebruikt in projectvoorbeelden.

De GPIO-modus wordt ingesteld bij het importeren van de GPIO-bibliotheek:
RPi importeren. GPIO als GPIO.
Importeren als BCM:
GPIO.setmode (GPIO.BCM)
Importeren als BORD:
GPIO.setmode (GPIO.BOARD)
Beide methoden doen hetzelfde werk. Het is een kwestie van nummering voorkeur.
U kunt GPIO-labelborden gebruiken, zoals de RasPiO-poortenplus (afgebeeld) om te controleren op welke pinnen u de draden aansluit. De ene kant toont de BCM-nummeringsconventie. De andere toont BOARD. U bent dus gedekt voor elk project dat u vindt.