Skip to main content

Raspberry Pi GPIO

Studenten woning in de Baarsjes - Amsterdam (April 2025)

Studenten woning in de Baarsjes - Amsterdam (April 2025)
Anonim
01 van 09

Een inleiding tot de pinnen van de Raspberry Pi

De term 'GPIO' (General Purpose Input Output) is niet exclusief voor de Raspberry Pi. Invoer- en uitvoerpinnen zijn te vinden op de meeste microcontrollers, zoals de Arduino, Beaglebone en meer.

Als we het hebben over GPIO met de Raspberry Pi, bedoelen we het lange blok pinnen in de linkerbovenhoek van het bord. Oudere modellen hadden 26 pinnen, maar de meesten van ons zullen een huidig ​​model met 40 gebruiken.

U kunt componenten en andere hardwareapparaten met deze pennen verbinden en code gebruiken om te bepalen wat ze 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 experimenteert, en je wilt je code graag combineren met hardware om dingen in het 'echte leven' te laten gebeuren.

Dit proces kan intimiderend zijn als je nieuw bent in de scene, en gezien het feit dat één verkeerde beweging je Raspberry Pi kan beschadigen, is het begrijpelijk dat het een nerveus gebied is dat beginners kunnen verkennen.

In dit artikel wordt uitgelegd wat elk type GPIO-pen doet en wat hun beperkingen zijn.

02 van 09

De GPIO

Laten we eerst eens kijken naar de GPIO als geheel. De pinnen kunnen er hetzelfde uitzien, maar ze hebben allemaal verschillende functies. De afbeelding hierboven toont deze functies in verschillende kleuren die we in de volgende stappen zullen uitleggen.

Elke pin is genummerd van 1 tot 40, links onderaan links. Dit zijn de fysieke pincodes, maar er zijn ook conventies voor nummering / labelling zoals 'BCM' die worden gebruikt bij het schrijven van code.

03 van 09

Power & Ground

Rood gemarkeerd, zijn spanningspinnen met het label '3' of '5' voor 3.3V of 5V.

Met deze pinnen kunt u rechtstreeks naar een apparaat sturen zonder dat u daarvoor code nodig hebt. Er is geen manier om deze uit te schakelen.

Er zijn 2 power-rails - 3,3 volt en 5 volt. Volgens dit artikel is de 3.3V-rail beperkt tot 50 mA stroomafname, terwijl de 5V-rail ongeacht de huidige capaciteit van uw stroomvoorziening kan leveren nadat de Pi heeft genomen wat hij nodig heeft.

Gemarkeerd bruinzijn de aardpennen (GND). Deze pennen zijn precies wat ze zeggen - grondpennen - die een vitaal onderdeel zijn van elk elektronica-project.

(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)

04 van 09

Input / Output-pins

De groene pinnen zijn wat ik 'generieke' invoer- / uitvoerpinnen noem. Deze kunnen eenvoudig worden gebruikt als invoer of uitvoer zonder zorgen over botsen met andere functies zoals I2C, SPI of UART.

Dit zijn de pinnen die stroom naar een LED, zoemer of andere componenten kunnen sturen, of kunnen worden gebruikt als invoer om sensoren, schakelaars of andere invoerapparaten uit te lezen.

Het uitgangsvermogen van deze pins is 3.3V. Elke pen mag niet groter zijn dan 16 mA stroom, ofwel zinken of sourcing, en de volledige set GPIO-pinnen mag nooit meer dan 50 mA overschrijden. Dit kan beperkend zijn, dus je moet misschien creatief worden in bepaalde projecten.

(Generieke GPIO-pinnen zijn fysieke nummers 7, 11, 12, 13, 15, 16, 18, 22, 29, 31, 32, 33, 35, 36, 37, 38 en 40)

05 van 09

I2C-pinnen

In geel hebben we de I2C-pinnen. I2C is een communicatieprotocol dat in eenvoudige bewoordingen toestaat dat apparaten communiceren met de Raspberry Pi. Deze pennen kunnen ook worden gebruikt als 'generieke' GPIO-pinnen.

Een goed voorbeeld van het gebruik van I2C is de zeer populaire MCP23017-poortuitbreidingschip, die u via dit I2C-protocol meer invoer / uitvoerpinnen kan geven.

(I2C GPIO-pinnen zijn fysieke pincodes 3 en 5)

06 van 09

UART (seriële) pennen

In grijs zijn de UART-pinnen. Deze pennen zijn een ander communicatieprotocol dat seriële verbindingen biedt en kan ook worden gebruikt als 'generieke' GPIO-ingangen / uitgangen.

Mijn favoriete gebruik voor UART is om via USB een seriële verbinding van mijn Pi naar mijn laptop mogelijk te maken. Dit kan worden bereikt met behulp van uitbreidingskaarten of eenvoudige kabels en de noodzaak voor een scherm of internetverbinding om toegang te krijgen tot uw Pi.

(UART GPIO-pinnen zijn fysieke pinnummers 8 en 10)

07 van 09

SPI-pins

In het roze, we hebben de SPI-pinnen. SPI is een interfacebus die gegevens verzendt tussen de Pi en andere hardware / randapparatuur. Het wordt meestal gebruikt voor het ketenen van apparaten zoals een LED-matrix of display.

Net als andere kunnen deze pinnen ook als 'generieke' GPIO-ingangen / uitgangen worden gebruikt.

(SPI GPIO-pinnen zijn fysieke pincodes 19, 21, 23, 24 en 26)

08 van 09

DNC Pins

Ten slotte zijn twee pinnen in blauw die momenteel zijn aangeduid als DNC, wat staat voor 'Do Not Connect'. Dit kan in de toekomst veranderen als de Raspberry Pi Foundation de boards / software verandert.

(DNC GPIO-pinnen zijn fysieke pinaantallen 27 en 28)

09 van 09

GPIO-nummeringsconventies

Wanneer u codeert met de GPIO, hebt u de keuze om de GPIO-bibliotheek op twee manieren te importeren: BCM of BOARD.

De optie die ik verkies is GPIO BCM. Dit is de Broadcom-nummeringsconventie en ik merk dat deze vaker wordt gebruikt in projecten en hardware-uitbreidingen.

De tweede optie is GPIO BOARD. Deze methode gebruikt in plaats daarvan de fysieke pincodes, wat handig is bij het tellen van pinnen, maar je zult zien dat het minder wordt gebruikt in projectvoorbeelden.

De GPIO-modus wordt ingesteld bij het importeren van de GPIO-bibliotheek:

Om als BCM te importeren:

importeer RPi.GPIO als GPIO GPIO.setmode (GPIO.BCM)

Om als BOARD te importeren:

importeer RPi.GPIO als GPIO GPIO.setmode (GPIO.BOARD)

Beide methoden doen precies hetzelfde werk, het is gewoon een kwestie van nummering.

Ik maak regelmatig gebruik van handige GPIO-labelborden, zoals de RasPiO Portsplus (foto) om te controleren welke pinnen ik ook aan het aansluiten ben. De ene kant toont de BCM-nummeringsconventie, de andere toont BOARD - dus je bent verzekerd van elk project dat je tegenkomt.