Raspberry Pi GPIO pin out-in, pull down vanuit de shell
GPIO chaos
Het “leuke” van de GPIO pinnen van de Raspberry Pi is, dat er verschillende manieren zijn om ze te nummeren. Ja, echt.
– Broadcom BCM-nummering (GPIO 2, 3, 4 …)
– WiringPi/Pi4J nummering (GPIO 8, 9, 7, …)
We gebruiken hierna de WiringPi/Pi4J/BCM nummering vanuit de shell (parameter.
Met de parameter -g schakel je bv naar BCM nummering (ipv standaard WiringPi).
GPIO command
Je moet het gpio
programma hebben (zal meestal wel standaard geïnstalleerd zijn op je raspberry pi os). Check:
gpio -h
Krijg een overzicht van de pinnen: (inclusief de BCM nummers)
gpio -g readall
Pin als “in” gebruiken
Pin 23 eerst als “in” definiëren, dan pull up (naar 3.3 V):
gpio -g mode 23 in
gpio -g mode 23 up
Daarna kan je de waarde op de pin lezen:
gpio -g read 27
1
0
(staat voor spanning/geen spanning, normaal 3.3 volt)
Stabiele input
Om de als “IN” gedefinieerde pin nergens mee verbonden is, “zweeft” de waarde, ze is “onbepaald”, en je weet niet wat je er leest. Om nu een duidelijk verschil te maken met in of niet in, wordt een basistoestand aangenomen, meestal “pull up” (naar 3,3 V of VCC) ofwel “pull down” (naar ground).
Als je een “pull-up” verbinding maakt over een weerstand naar VCC (met een waarde van rond 10kOhm, afhankelijk van de impedantie van de processorpin), dan lees je met zekerheid op die input pin de toestand “high”. Als je de stand van een schakelaar of drukknop uitleest, die een verbinding maakt met ground als hij ingedrukt wordt, weet je heel duidelijk dat je nu nul Volt uitleest.
De weerstand zorgt er nu voor dat er niet te veel stroom vloeit (zonder weerstand: rechtstreekse verbinding naar ground; kortsluiting).
__-v^v^R1-- GND--/ .---== ---- IN
De weerstand R1 bepaalt ook de snelheid van uitlezen van een andere toestand; hoe groter de weerstand hoe trager. Daarom zal bij een “snelle” poort (zoals usb) een lagere weerstand gebruikt worden.
Veel microcontrollers (bv Arduino, Raspberry Pi) hebben voor het gemak een ingebouwde weerstand die ingeschakeld kan worden met software.
Wat en waarom van “pull-up resistors”
Uit sturen
Schrijven of een spanning uitsturen naar een pin:
– eerst definiëren als “uit”.
– dan een 1 sturen (is spanning op pin zetten)
gpio -g mode 18 out
gpio -g write 18 1