GPIO

Een krachtige eigenschap van de Raspberry Pi is de rij GPIO (general-purpose input/output) pinnen langs de bovenrand van het bord. Een 40-pins GPIO header is te vinden op alle huidige Raspberry Pi boards (ongepopt op de Pi Zero en Pi Zero W). Vóór de Pi 1 Model B+ (2014) hadden de borden een kortere 26-pins header.

Elke GPIO-pin kan (in de software) worden aangeduid als een invoer- of uitvoerpin en worden gebruikt voor een breed scala aan doeleinden.

Note: de nummering van de GPIO-pinnen is niet in numerieke volgorde; GPIO-pinnen 0 en 1 zijn aanwezig op de kaart (fysieke pinnen 27 en 28) maar zijn gereserveerd voor geavanceerd gebruik (zie hieronder).

Voltages

Twee 5V-pinnen en twee 3V3-pinnen zijn aanwezig op de kaart, evenals een aantal aardpennen (0V), die niet configureerbaar zijn. De overige pinnen zijn allemaal 3V3 pinnen voor algemeen gebruik, wat betekent dat de uitgangen zijn ingesteld op 3V3 en de ingangen 3V3-tolerant zijn.

Uitgangen

Een GPIO-pin die is aangewezen als een uitgang kan worden ingesteld op hoog (3V3) of laag (0V).

Ingangen

Een GPIO-pin die is aangewezen als een ingang kan worden gelezen als hoog (3V3) of laag (0V). Dit wordt vergemakkelijkt door het gebruik van interne pull-up of pull-down weerstanden. Pinnen GPIO2 en GPIO3 hebben vaste pull-up-weerstanden, maar voor andere pinnen kan dit in de software worden geconfigureerd.

Meer

Naast eenvoudige in- en uitvoerapparaten kunnen de GPIO-pinnen worden gebruikt met een verscheidenheid aan alternatieve functies, sommige zijn beschikbaar op alle pennen, andere op specifieke pennen.

  • PWM (pulse-width modulation)
    • Software PWM beschikbaar op alle pinnen
    • Hardware PWM beschikbaar op GPIO12, GPIO13, GPIO18, GPIO19
  • SPI
    • SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7)
    • SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16)
  • I2C
    • Data: (GPIO2); Klok (GPIO3)
    • EEPROM Data: (GPIO0); EEPROM Klok (GPIO1)
  • Serieel
    • TX (GPIO14); RX (GPIO15)

GPIO pinout

Het is belangrijk om te weten welke pin welke is. Sommige mensen gebruiken pinlabels (zoals de RasPiO Portsplus PCB, of de printbare Raspberry Leaf).

Een handige referentie kan op de Raspberry Pi worden opgeroepen door een terminalvenster te openen en het commando pinout uit te voeren. Deze tool wordt geleverd door de GPIO Zero Python-bibliotheek, die standaard is geïnstalleerd op de Raspberry Pi OS desktop image, maar niet op Raspberry Pi OS Lite.

Voor meer details over de geavanceerde mogelijkheden van de GPIO-pinnen zie gadgetoid’s interactieve pinout diagram.

Programmeren met GPIO

Het is mogelijk om GPIO-pinnen te besturen met behulp van een aantal programmeertalen en tools. Zie de volgende gidsen om aan de slag te gaan:

  • GPIO met Scratch 1.4
  • GPIO met Scratch 2
  • GPIO met Python
  • GPIO met C/C++ met behulp van standaard kernel interface via libgpiod
  • GPIO met C/C++ met behulp van 3rd party library pigpio
  • GPIO met Processing3

Waarschuwing: hoewel het aansluiten van eenvoudige componenten op de GPIO-pennen volkomen veilig is, is het belangrijk om voorzichtig te zijn met hoe je dingen bedraad. LED’s moeten weerstanden hebben om de stroom die er doorheen gaat te beperken. Gebruik geen 5V voor 3V3 componenten. Sluit motoren niet direct aan op de GPIO pinnen, maar gebruik een H-brug circuit of een motor controller board.

Permissions

Om de GPIO poorten te kunnen gebruiken moet uw gebruiker lid zijn van de gpio groep. De pi gebruiker is standaard lid, andere gebruikers moeten handmatig worden toegevoegd.

sudo usermod -a -G gpio <username>

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.