General Purpose Input/Output 

GPIO (General Purpose Input/Output) zijn de 40 programmeerbare pinnen op de Raspberry Pi 5 die fysieke interactie met elektronica mogelijk maken. Ze sturen componenten aan (output, zoals LED's/motoren) of lezen sensoren uit (input). De Pi 5 gebruikt een nieuwe RP1-chip voor snellere GPIO-prestaties. De GPIO-header is het kloppend hart van je Raspberry Pi-projecten. Beginnend of gevorderde? Kennis van de pinout is cruciaal. Zo haal je het meeste uit je Pi !

 

Om een directe aansturing van de GPIO pins mogelijk te maken moeten we 'Raspbian'  installeren. 

Raspbian is de oude naam voor Raspberry Pi OS, het officiële, op Debian gebaseerde Linux-besturingssysteem (OS) voor de Raspberry Pi's (Bookworm). Om de pinnen aan te kunnen sturen is een GPIO  package  nodig (bibliotheek), zie hiervoor het document 'GPIO-package RPiOS.pdf'.

 

De pinnen kunnen worden aangestuurd via de programmeertaal Python. Hiervoor moet in Python een GPIO module (bibliotheek) worden geïmporteerd, zie hiervoor het document 'GPIO-module Python.pdf'

 

De Raspberry Pi 5 in combinatie met het Raspberry Pi OS en GPIO-aansturing via Python is zeer populair en vormt de standaard voor hobbyisten, educatie en prototyping. 

 

 

Omschrijving 40 GPIO pins van de Raspberry Pi 5

 

Op de Raspberry Pi 5 bevindt de fysieke pin 1 zich in de hoek dichtst bij de SD-kaartlezer, aan de linkerkant van de 40-pins header

 

De twee nummeringsschema’s voor Raspberry Pi GPIO-pinnen.

 

Het begrijpen van GPIO-pinnummering is essentieel wanneer je met de GPIO-pinnen van een Raspberry Pi werkt. De Raspberry Pi ondersteunt twee schema’s

1) BCM-nummering

2) Fysieke pinnummering

die elk voor verschillende doeleinden worden gebruikt om naar de pinnen te verwijzen.

 

Fysieke pinnummering (Board Numbering)

De fysieke pinnummering verwijst naar de werkelijke positie van de pinnen op de 40-pins header van de Raspberry Pi. De pinnen worden opeenvolgend geteld van Pin 1 (linksboven) tot Pin 40 (rechtsonder). Dit nummeringssysteem is puur gebaseerd op de fysieke indeling van de pinnen.

Voorbeeld:

Pin  1: 3.3V voeding

Pin  2: 5V voeding

Pin  6: Ground (GND)

Pin 11: GPIO 17

Fysieke nummering is handig bij het aansluiten van componenten wanneer je een visuele handleiding of schema volgt.

Het weerspiegelt namelijk direct de fysieke positie van de pinnen op de header.

 

BCM-nummering (Broadcom SOC Channel)

BCM-nummering verwijst naar de GPIO-nummers die door de Broadcom-chip worden toegewezen aan elke pin, 

gebaseerd op de interne SOC (System on Chip) van de Raspberry Pi. Deze GPIO-nummers komen overeen met de daadwerkelijke functionele kanalen op de Broadcom-processor.

Voorbeeld:

BCM GPIO 2  : Pin 3    (gebruikt voor I2C SDA)

BCM GPIO 3  : Pin 5    (gebruikt voor I2C SCL)

BCM GPIO 11: Pin 11  (gebruikt voor algemene toepassingen                                                                                                                                                                                                                          BCM GPIO 18: Pin 12 (gebruikt voor PWM)

 

BCM-nummering wordt meestal gebruikt in software, bijvoorbeeld bij het schrijven van scripts of programma’s 

in talen zoals Python (met libraries zoals RPi.GPIO of gpiozero). De interne code en bibliotheken van de 

Raspberry Pi herkennen pinnen doorgaans via hun BCM-nummer in plaats van hun fysieke positie.

 

Waarom zijn er twee nummeringssystemen?

De twee schema’s bestaan omdat ze verschillende behoeften ondersteunen:

Fysieke pinnummering: eenvoudig en intuïtief bij het fysiek aansluiten van componenten.

BCM-nummering: nauwkeuriger voor programmeren, omdat het de echte hardwareconfiguratie

en functies van specifieke GPIO-kanalen weergeeft.

 

Overzicht van de 40 pinnen op basis van functie.

 

Er zijn 12 voedingspinnen (Power Pins):

 

Deze pinnen leveren stroom aan externe componenten.Er worden 2 spanningen gevoerd, 3,3 volt en 5 Volt.

 

De 5 volt wordt direct geleverd volt rechtstreeks van de voeding van de Raspberry Pi.

Geschikt voor componenten die meer vermogen nodig hebben, zoals relais.

 

De 3.3 volt wordt  door de Raspberry Pi 5 geleverd als een stabiele spanning.

Wordt vaak gebruikt voor sensoren en andere kleine elektronische onderdelen.

 

De GND (Ground)pinnen worden gebruikt om het elektrische circuit te sluiten.

 

De pinnen voor de 3,3v en 5v worden ook wel de "Plus" (+) genoemd (aanvoer).

De GND pinnen worden ook wel de "min" (-) genoemd (afvoer).

 

_______                                                                                   

Functie    Pin # _                                   Aantal pinnen 

5V            2 en 4.                                               2

3.3V         1 en 17                                             2

GND        6,9,14,20,25,30,34,39                8      ___      

Totaal         __                                                12 __                 

 

Er zijn 28 GPIO pinnen, en die zijn als volgt ingedeeld, 6 specifieke functies en de algemene toepasbare pinnen:

                                                                                                                                                   ______________                             __ __     

Functie       Pinnen                                                             Omschrijving                       __ _                              Aantal pinnen 

UART                  8 en 10                                                        Universal Asynchronous Receiver-Transmitter                 2

12C                     3 en 5                                                           Inter-Integrated Circuit                                                                2

SPI                      19, 21, 23, 24, 26                                     Serial Peripheral Interface                                                          5

PWM                   32 en 33                                                     Pulse Width Modulation                                                              2

GPCLK0             7                                                                   General Purpose Clock                                                                 1

PCM                    12, 35, 38, 40                                           Pulse Code Modulation                                                                4

EEPROM           27  en 28                                                    Identificatiepinnen voor "advanced"toepassingen        2

Algemeen        11,13,15,16,18,22,29,31,36,37         GPIO Algemene toepassingen                                                 10                          

Totaal aantal GPIO pinnen                                                                                                                                                           28       

 

Toelichting op de functies:

 

UART-pinnen (Universal Asynchronous Receiver-Transmitter)

Deze pinnen worden gebruikt voor seriële communicatie met andere apparaten zoals microcontrollers

of zelfs andere Raspberry Pi-borden.

 

TXD (Transmit): Pin 8 (BCM GPIO 14)

RXD (Receive): Pin 10 (BCM GPIO 15)

 

Ideaal voor communicatie tussen de Raspberry Pi en een ander apparaat via een seriële protocol,

bijvoorbeeld een GPS-module of een draadloze communicatiechip.


I2C-pinnen (Inter-Integrated Circuit)

Het I2C-protocol op de Raspberry Pi 5 GPIO wordt gebruikt voor communicatie met

meerdere langzamere apparaten via twee gedeelde lijnen.

 

SDA (Data-lijn): Pin 3 (BCM GPIO 2)

SCL (Kloklijn): Pin 5 (BCM GPIO 3)

 

Wordt vaak gebruikt om de Raspberry Pi te verbinden met sensoren zoals temperatuur-, vochtigheids- of druksensoren.

 

SPI-pinnen (Serial Peripheral Interface)

De Raspberry Pi GPIO-pinout bevat meerdere SPI-pinnen die snelle communicatie ondersteunen met

bijvoorbeeld displays, sensoren en SD-kaarten.

 

MOSI (Master Out Slave In): Pin 19 (BCM GPIO 10)

MISO (Master In Slave Out): Pin 21 (BCM GPIO 9)

SCLK (Serial Clock): Pin 23 (BCM GPIO 11)

CE0 (Chip Enable 0): Pin 24 (BCM GPIO 8)

CE1 (Chip Enable 1): Pin 26 (BCM GPIO 7)

 

Deze worden vaak gebruikt voor snelle datacommunicatie met apparaten zoals TFT-displays of hogesnelheidssensoren.

 

PWM-pinnen (Pulse Width Modulation)

Pulse Width Modulation (PWM) is een techniek waarmee de snelheid van motoren kan worden geregeld of LED’s

kunnen worden gedimd door de duty cycle van een signaal te variëren.

 

PWM0: Pin 12 (BCM GPIO 18)

PWM1: Pin 33 (BCM GPIO 13)

 

Deze pinnen worden vaak gebruikt voor het regelen van motorsnelheid, LED-helderheid of servo’s,

wat de veelzijdigheid van GPIO-functies in robotica laat zien.

 

GPCLK0 (General Purpose Clock 0)

Dit is een alternatieve functie van GPIO4 (pin 7) die een stabiel kloksignaal (frequentie) genereert

zonder constante softwarebesturing. 

 

GPCLK0: Pin 7 (BCM GPIO 4)

 

Het wordt gebruikt voor externe timing van apparaten, zoals I2S-audio of sensoren,

en kan worden geconfigureerd op verschillende frequenties (vaak 19.2 MHz oscillator).

 

PCM-pinnen (Pulse Code Modulation)

 

Op de Raspberry Pi 5 staat PCM voor Pulse-Code Modulation. Dit is een interface voor digitale audio (bijvoorbeeld I2S).

 

PCM-CLK: Pin 12 : BCM GPIO 18

PCM-FS: Pin 35 : BCM GPIO 19

PCM-DIN: Pin 38 : BCM GPIO 20

PCM-DOUT: Pin 40 : BCM GPIO 21

 

Hiermee kan de Raspberry Pi communiceren met externe audioapparaten zoals DAC’s (Digital-to-Analog Converters) of microfoons.

 

EEPROM-identificatiepinnen

ID_SD (Data): Pin 27 (BCM GPIO 0)

ID_SC (Clock): Pin 28 (BCM GPIO 1)

 

Binnen de Raspberry Pi 5 GPIO-pinnen helpen deze EEPROM-ID-pinnen bij het identificeren van uitbreidingsborden.

Hierdoor kan de Raspberry Pi automatisch instellingen configureren wanneer een uitbreidingsbord wordt aangesloten.

 

GPIO Algemene toepassingen

Algemeen: Pin 11,13,15,16,18,22,29,31,36,37  (BCM GPIO5 en 6, GPIO 16 en 17, GPIO 22 t/m 27)

 

Deze pinnen fungeren als de programmeerbare fysieke interface waarmee de Raspberry Pi 5

kan communiceren met elektronische componenten in de buitenwereld. 

 

 

PINCONFIGURTIE OP BASIS VAN BCM

__________                                                                                                                         

BCM                    Functie                                                    Pin-nummer   

GPIO 0                EEPROM - ID_SD (Data):                             27
GPIO 1                EEPROM - ID_SC (Clock):                           28
GPIO 2                I2C - SDA (Data Line):                                    3         
GPIO 3                I2C - SCL (Clock Line):                                   5         

GPIO 4                GPCLK0                                                          7

GPIO 5                Generiek                                                       29

GPIO 6                Generiek                                                       31

GPIO 7                SPI - Chip Enable 1):                                    26

GPIO 8                SPI - CE0 (Chip Enable 0):                           24

GPIO 9                SPI - MISO (Master In Slave Out):                21          
GPIO 10              SPI - MOSI (Master Out Slave In):               19          
GPIO 11              SPI - SCLK (Serial Clock):                            23          

GPIO 12              PWM0: (motors, LED dim)                            32
GPIO 13              PWM1: (motors, LED dim)                            33
GPIO 14              UART - TXD (Transmit):                                  8
GPIO 15              UART - RXD (Receive):                                10

GPIO 16              Generiek                                                        36          

GPIO 17              Generiek                                                        11          

GPIO 18              PCM-CLK                                                      12

GPIO 19              PCM-FS                                                         35

GPIO 20              PCM-DIN                                                       38

GPIO 21              PCM-DOUT                                                   40

GPIO 22              Generiek                                                        15

GPIO 23              Generiek                                                        16

GPIO 24              Generiek                                                        18

GPIO 25              Generiek                                                        22

GPIO 26              Generiek                                                        37

GPIO 27              Generiek                                                        13            

 

Opmerkingen en aandachtspunten:

- Hoewel de Raspberry Pi 5 dezelfde pinout gebruikt als de Pi 4, worden de GPIO’s nu aangestuurd door de RP1 I/O-controller,

  wat zorgt voor betere timing. Hiervoor is binnen python een nieuwe bibliotheek ontwikkeld. Dit is de gpiozero module, en vervangt de RPi.GPIO library.

 

- Pinout-diagrammen op de Raspberry Pi 5

Om een overzicht te krijgen van de GPIO-pinindeling rechtstreeks op je Raspberry Pi, kun je het ingebouwde pinout-commando gebruiken. Dit is een eenvoudige command-line tool die een visuele weergave toont van de GPIO-pinnen, inclusief hun nummers en functies. Elke Raspberry Pi GPIO-handleiding of Raspberry Pi 5-pindiagram zal aanraden het volgende commando uit te voeren voor referentie

 

In de bash-terminal:

/home/pi>  pinout  <enter>

 

*******  GPIO-VEILIGHEID *******

- Vermijd bijvoorbeeld het aansluiten van 5V op 3,3V GPIO-pinnen. De Raspberry Pi werkt met een 3,3V logicaniveau.

  Het aansluiten van een 5V-signaal op een van de GPIO-pinnen kan de interne circuits van de Raspberry Pi gemakkelijk beschadigen.

  Controleer daarom altijd het spanningsniveau van de apparaten of sensoren die je aansluit.

  Gebruik indien nodig een spanningsconverter om 5V-signalen om te zetten naar 3,3V.

 

- Beperk de stroom door 3,3V GPIO-pinnen

  De GPIO-pinnen kunnen slechts een beperkte stroom verwerken:

     - Ongeveer 16 mA per pin

     - Totaal maximaal 50 mA over alle GPIO-pinnen

 

   Gebruik altijd stroombegrenzende weerstanden (bijv. 330Ω tot 1kΩ) bij het aansluiten van leds of andere componenten.

   Dit voorkomt dat er te veel stroom wordt getrokken, wat de elektronica voor het aansturen van de GPIO-pinnen permanent kan beschadigen.

 

-  De 5 Volt aansluitingen  (GPIO pinnen  2 en 4) zijn direct gekoppeld aan de 5V USB voeding. 

   In tegenstelling tot oudere modellen, heeft de Pi 5 geen vervangbare zekering op de voedingsingang, maar is deze direct verbonden. 

   Als je via de 5V-pinnen te veel stroom trekt of kortsluiting maakt, is er kans op het beschadigen van het moederbord. 

   De belasting die je maximaal kan onttrekken is bij de officiële Raspberry Pi 5 voeding 25W verminderd met het verbruik van de Pi 5.  

   De totale stroomsterkte wordt  dus verdeeld tussen de Pi 5, de USB-poorten en de 5V GPIO-pinnen.

   Aangezien de Pi 5 onder volledige belasting meer verbruikt dan zijn voorgangers (pieken tot wel 15W), is de stroom voor de 5 Volt pinnen dus minder.

   Als er zo'n 10W overblijft, dan zal de maximale stroom op 2 Ampere komen, voor de veiligheid is het aan te bevelen daar onder te blijven.

   Men kan ook overwegen een externe voeding toe te passen. 

 

-  Pas op voor kortsluiting

   Een kortsluiting ontstaat wanneer stroom geen weerstand ondervind. Als bijvoorbeeld een +3V3 aansluiting onbedoeld in aanraking komt met de 

   (GND), kan er te veel stroom gaan lopen, wat hitteontwikkeling en mogelijke hardwarebeschadiging veroorzaakt.

 

- Gebruik de GND (Ground) correct.

   Elke schakeling heeft een gemeenschappelijke massa (GND) nodig om het circuit te sluiten. Componenten niet op de massa aansluiten,

   of de massa verkeerd aansluiten, kan leiden tot niet of slecht werkende schakelingen. 

 

 - Vermijd het aansluiten of loskoppelen terwijl de Raspberry Pi aan staat (hot swapping)

  Componenten aansluiten of loshalen terwijl de Raspberry Pi onder spanning staat kan elektrische pieken of spanningsstoten

  veroorzaken. Dit kan zowel de Raspberry Pi als de aangesloten componenten beschadigen. Het is daarom verstandig de

  Raspberry Pi eerst uit te schakelen voordat je verbindingen maakt of verbreekt.

 

-  Statische elektriciteit.

   Als je een breadboard gebruikt om een elektrische schakeling te koppelen aan GPIO-pinnen, gebruik dan een antistatische mat, en een 

   geaarde polsband. Hiermee voorkom je dat eventele statische elektriciteit aangesloten componenten beschadigen.

 

- Wanneer je apparaten gebruikt die met hogere spanningen werken (bijv. 5V , 9V of 12V), moet je ervoor zorgen dat de 

  3,3V GPIO-pinnen van de Raspberry Pi niet aan deze hogere spanning worden blootgesteld. 

 

- Trek niet te veel vermogen uit de Raspberry Pi, gebruik eventueel een aparte (externe)  voeding/adapter.

   De voeding van de Raspberry Pi heeft grenzen. Als je te veel stroom afneemt van de 5V- of 3,3V-pinnen,

   kan dit leiden tot instabiliteit, herstarts of schade aan het bord. Zie hiervoor ook de opmerkingen hierboven bij de 3,3V en 5V GPIO pinnen.

   Als er teveel stroom wordt gevraagd van de Raspberry Pi, bijvoorbeeld voor het aansturen van een (zware) speaker of motor,

   dan kan er beter een externe voeding worden gebruikt, bijvoorbeeld de Breadboard voeding - 3,3V / 5V, of gewoon een externe adapter.

   Voorbeeld: