Raspberry Pi GPIO Pinout: waar is welke pin voor op de Pi 4 en voorgaande modellen?

Het beste van elke Raspberry Pi, inclusief de nieuwe Raspberry Pi 4, is dat je hem kunt gebruiken om allerlei geweldige dingen te bouwen, van robots tot retro-gameconsoles en detectoren.



De meeste sensoren, motoren, lichten en andere randapparatuur die deze projecten mogelijk maken, maken verbinding met de GPIO-pinnen van de Pi.
Sinds de Raspberry Pi B + heeft elk Pi-model 40 GPIO-pinnen, maar op de Pi Zero en Zero W heb je 40 gaten waar je pinnen of draden in kunt solderen.

Wat je ook bouwt, het is altijd goed om te weten wat welke pin doet. 
Terwijl sommige pinnen elektriciteit leveren, zijn  weer andere verbonden met verschillende soorten interfaces, die we hieronder allemaal uitleggen.

General Purpose Input Output (GPIO) -Pins

De GPIO is het meest basis, maar toch toegankelijke aspect van de Raspberry Pi.
GPIO-pinnen zijn digitaal, wat betekent dat ze twee toestanden kunnen hebben, uit of aan.
Ze kunnen een richting hebben voor het ontvangen of verzenden van stroom (respectievelijk invoer, uitvoer) en we kunnen de status en richting van de pinnen regelen met behulp van programmeertalen zoals Python, JavaScript, node-RED etc.

De bedrijfsspanning van de GPIO-pinnen is 3,3 v met een maximale stroomafname van 16 mA.
Dit betekent dat we veilig een of twee LED's (Light Emitting Diodes) kunnen voeden vanaf een enkele GPIO-pin, via een weerstand.
Maar voor alles wat meer stroom vereist, bijvoorbeeld een DC-motor, moeten we externe componenten gebruiken om ervoor te zorgen dat we de GPIO niet beschadigen.

Het besturen van een GPIO-pin met Python wordt bereikt door eerst een bibliotheek met vooraf geschreven code te importeren.
De meest voorkomende bibliotheek is RPi.GPIO en het is gebruikt om duizenden projecten te maken sinds de begindagen van de Raspberry Pi.
In recentere tijden is een nieuwe bibliotheek met de naam GPIO Zero geïntroduceerd, die gemakkelijker toegang biedt voor degenen die nieuw zijn met Python en basiselektronica.
Beide bibliotheken zijn vooraf geïnstalleerd met het Raspbian-besturingssysteem.

GPIO-pinnen hebben meerdere namen; de eerste meest voor de hand liggende referentie is hun 'fysieke' locatie op de GPIO.
Beginnend linksboven van de GPIO, en daarmee bedoelen we de pin die het dichtst bij de plaats is waar de micro SD-kaart is geplaatst, we hebben fysieke pin 1 die 3v3-stroom levert.
Rechts van die pin bevindt zich fysieke pin 2 die 5v stroom levert.
De pin nummers nemen dan toe naarmate we naar beneden in elke kolom gaan, waarbij pin 1 naar pin 3, 5,7 enz. Gaat totdat we pin 39 bereiken.
U zult snel zien dat elke pin van 1 tot 39 in deze kolom een ​​reeks met oneven nummers volgt.
En voor de kolom die begint met pin 2, gaat deze 4,6,8 enz. Totdat deze 40 bereikt. Volg een even reeks.
Fysieke pinnummering is de meest eenvoudige manier om een ​​pin nummer  te vinden, maar veel van de tutorials die voor de Raspberry Pi zijn geschreven, volgen een andere nummeringsreeks.

Broadcom (BCM) pinnummering (ook wel GPIO pinnummering genoemd) lijkt chaotisch te zijn voor de gemiddelde gebruiker.
Met GPIO17, 22 en 27 elkaar opvolgend met weinig nadenken over logische nummering.
De BCM-pintoewijzing verwijst naar de GPIO-pinnen die rechtstreeks zijn verbonden met het systeem op een chip (SoC) van de Raspberry Pi.
In wezen hebben we directe links naar de hersenen van onze Pi om sensoren en componenten aan te sluiten voor gebruik in onze projecten.

Je zult de meerderheid van de Raspberry Pi-zelfstudies met behulp van deze referentie zien en dat komt omdat het het officieel ondersteunde pinnummeringsschema van de Raspberry Pi Foundation is.
Het is dus het beste om te beginnen met het gebruiken en leren van het BCM pin-nummeringsschema, omdat dit na verloop van tijd een tweede natuur voor je wordt.
Merk ook op dat BCM- en GPIO-pinnummering naar hetzelfde schema verwijzen.
Dus GPIO17 is bijvoorbeeld hetzelfde als BCM17.

Bepaalde GPIO-pinnen hebben ook alternatieve functies waarmee ze kunnen communiceren met verschillende soorten apparaten die de I2C-, SPI- of UART-protocollen gebruiken.
GPIO3 en GPIO 4 zijn bijvoorbeeld ook SDA- en SCL I2C-pinnen die worden gebruikt om apparaten met behulp van het I2C-protocol te verbinden.
Om deze pins met deze protocollen te gebruiken, moeten we de interfaces inschakelen met behulp van de Raspberry Pi-configuratietoepassing in het Raspbian OS, menu Voorkeuren.

I2C, SPI en UART: Welke gebruik je?

We zullen hieronder ingaan op de specifieke verschillen tussen I2C, SPI en UART, maar als je je afvraagt ​​welke je moet gebruiken om verbinding te maken met een bepaald apparaat, is het korte antwoord om het specificatieblad te controleren.
Het ene kleine LED-scherm kan bijvoorbeeld SPI vereisen en het andere kan I2C gebruiken (bijna niets gebruikt UART).
Als je de documentatie bij een product leest, zal het je meestal vertellen welke Pi-pinnen u moet gebruiken. (mits documentatie beschikbaar)

Gebruikers van Raspberry Pi 4 merken op dat er nu veel meer I2C-, SPI- en UART-pins beschikbaar zijn.
Deze extra interfaces worden geactiveerd met behulp van device tree overlays en kunnen vier extra SPI-, I2C- en UART-verbindingen bieden.

I2C - Geïntegreerde schakeling
I2C is een tweedraads serieel protocol met lage snelheid om apparaten met de I2C-standaard te verbinden.
Apparaten die de I2C-standaard gebruiken, hebben een master-slave-relatie.
Er kan meer dan één master zijn, maar elk slave-apparaat vereist een uniek adres, verkregen door de fabrikant van NXP, voorheen bekend als Philips Semiconductors.
Dit betekent dat we met meerdere apparaten op een enkele I2C-verbinding kunnen communiceren, omdat elk apparaat uniek en detecteerbaar is door de gebruiker en de computer met behulp van Linux-opdrachten zoals i2cdetect.

Zoals eerder vermeld, heeft I2C twee verbindingen: SDA en SCL.
Ze werken door gegevens van en naar de SDA-verbinding te verzenden, waarbij de snelheid wordt geregeld via de SCL-pin.
I2C is een snelle en eenvoudige manier om veel verschillende componenten, zoals LCD / OLED-schermen, temperatuursensoren en analoog-naar-digitaal converters voor gebruik met fotoresistors enz. Aan jouw project toe te voegen.
Hoewel het een beetje moeilijker te begrijpen is dan standaard GPIO-pins, zal de kennis die je hebt opgedaan bij het leren van I2C je goed van pas komen, omdat je begrijpt hoe je hogere precisiesensoren kunt aansluiten voor gebruik.

De Raspberry Pi heeft twee I2C-verbindingen op GPIO 2 en 3 (SDA en SCL) zijn voor I2C0 (master) en fysieke pinnen 27 en 28 zijn I2C-pinnen waarmee de Pi kan communiceren met compatibele HAT (Hardware Attached Top) add on boards .

SPI - Seriële randinterface

SPI is een ander protocol voor het aansluiten van compatibele apparaten op uw Raspberry Pi.
Het is vergelijkbaar met I2C in die zin dat er een master-slave-relatie bestaat tussen de Raspberry Pi en de apparaten die erop zijn aangesloten.

Doorgaans wordt SPI gebruikt om gegevens over korte afstanden tussen microcontrollers en componenten zoals schuifregisters, sensoren en zelfs een SD-kaart te verzenden.
Gegevens worden gesynchroniseerd met behulp van een klok (SCLK op GPIO11) van de master (onze Pi) en de gegevens worden verzonden van de Pi naar onze SPI-component met behulp van de MOSI (GPIO GPIO10) pin. MOSI staat voor Master Out Slave In.
Als het onderdeel op onze Pi moet antwoorden, stuurt het gegevens terug met behulp van de MISO-pin (GPIO9) die staat voor Master In Slave Out.

UART - Universele asynchrone ontvanger / zender

Algemeen bekend als "Serieel", bieden de UART-pinnen (Transmit GPIO14, Receive GPIO15) een console / terminal-login voor headless-installatie, wat betekent verbinding maken met de Pi zonder een toetsenbord of aanwijsapparaat.
Normaal gesproken is de eenvoudigste manier om een ​​Raspberry Pi-installatie zonder HAT te doen, om de Pi eenvoudig via een netwerk of directe USB-verbinding te bedienen (in het geval van Pi Zero).

Maar als er geen netwerkverbinding is, kunt u een HATless Pi ook bedienen met een seriële kabel of een USB-naar-seriële kaart vanaf een computer met een terminalconsole.
UART is uitzonderlijk betrouwbaar en biedt toegang tot een Pi zonder extra apparatuur.
Vergeet niet om de seriële console in te schakelen in de Raspberry Pi-configuratietoepassing.
De kans is groot dat je dit niet wilt doen, maar de UART-ondersteuning is er als je het nodig hebt.

Ground (gnd)

Ground wordt gewoonlijk GND, GND of - genoemd, maar ze betekenen allemaal hetzelfde. GND is waar alle spanningen kunnen worden gemeten en het voltooit ook een elektrisch circuit. Het is ons nulpunt en door een component, zoals een LED, aan te sluiten op een stroombron en aarde, wordt de component onderdeel van het circuit en stroomt er stroom door de LED en wordt er licht geproduceerd.

Bij het bouwen van circuits is het altijd verstandig om eerst uw aardeverbindingen te maken voordat u stroom aansluit, omdat hierdoor problemen met gevoelige componenten worden voorkomen.
De Raspberry Pi heeft acht aardverbindingen langs de GPIO en elk van deze aardpennen wordt verbonden met één enkele aardeverbinding.
De keuze van de aardpin die wordt gebruikt, wordt dus bepaald door persoonlijke voorkeur of gemak bij het aansluiten van componenten.

5v
De 5V-pinnen geven directe toegang tot de 5V-voeding van je netadapter, minder stroom dan de Raspberry Pi zelf.
Een Pi kan rechtstreeks van deze pinnen worden voorzien en kan ook andere 5v-apparaten van stroom voorzien.
Wanneer je deze pinnen direct gebruikt, moet je voorzichtig zijn en je spanningen controleren voordatje een verbinding maakt, omdat deze veiligheidsvoorzieningen omzeilt, zoals de spanningsregelaar en zekering die er zijn om jouw Pi te beschermen.
Omzeil deze met een hogere spanning en je kunt jouw Pi onbruikbaar maken.

3v3
De 3V-pin is er om een ​​stabiele 3.3V-voeding te bieden aan voedingscomponenten en om LED's te testen. In werkelijkheid zal het zeldzaam zijn dat je deze pin in een build factor, maar het heeft een speciaal gebruik.
Bij het aansluiten van een LED op de GPIO moeten we er eerst voor zorgen dat de LED correct is bedraad en dat deze oplicht.
Door de lange poot van de LED, de anode via een weerstand en de kortere poot, de kathode met een van de aardpinnen (gnd) te verbinden, kunnen we controleren of onze LED oplicht en werkt.
Dit elimineert een hardwarefout van het project en stelt ons in staat om ons project met vertrouwen te beginnen bouwen.