GPIO: alles over de Raspberry Pi 4 en 3 aansluitingen

Raspberry Pi 4GPIO

De GPIO-pinnen van het Raspberry Pi 4-bord, de 3, en ook zijn voorgangers, voorzien het SBC-bord van mogelijkheden die vergelijkbaar zijn met die van Arduino, aangezien je hiermee zeer interessante elektronische projecten kunt maken die worden bestuurd vanuit het besturingssysteem door middel van code in verschillende talen, zoals Python.

Dat maakt het bord meer dan alleen een goedkope computer. Hiermee kunt u een groot aantal elektronische elementen die je kunt gebruiken met Arduino, maar die ook bestuurd kan worden vanaf de Pi. In deze gids zal ik proberen u zoveel mogelijk informatie te geven over deze GPIO-pinnen, zodat u er gebruik van kunt gaan maken ...

Wat is GPIO?

GPIO

GPIO is de afkorting voor General Purpose Input / Output, dat wil zeggen: General Purpose Input / Output. Verschillende elektronische producten kunnen het hebben, zoals de chips zelf of bepaalde printplaten zoals deze Raspberry Pi. Zoals de naam doet vermoeden, zijn het pinnen die kunnen worden geconfigureerd om verschillende functies uit te voeren, daarom zijn ze voor algemeen gebruik en niet voor specifiek gebruik.

Het is de gebruiker tijdens runtime die dat kan configureer deze GPIO-pinnen zodat ze doen wat hij wil. Het kan op verschillende manieren worden gedaan, zoals met bepaalde codes of scripts van de console of met het Python-programma, wat een van de eenvoudigste en meest geprefereerde manieren is vanwege het aantal opties dat je tot je beschikking hebt.

Op deze manier heeft de Raspberry Pi niet alleen een reeks poorten en interfaces om meerdere standaardapparaten aan te sluiten, maar voeg deze GPIO-pinnen toe zodat je andere elektronische apparaten of zelfgemaakte projecten kunt toevoegen. Op dezelfde manier als je zou doen met Arduino en zijn I / O-pinnen voor controle.

Y niet exclusief voor Arduino of Raspberry Pi, net als andere vergelijkbare SBC-kaarten en embedded producten.

GPIO-functies

En tussen haar KARAKTERISTIEKEN meest opvallende:

  • Dat kunnen ze worden geconfigureerd dus als input als output. Ze hebben die dualiteit zoals het gebeurt met die van Arduino.
  • GPIO-pinnen ook kan worden geactiveerd en gedeactiveerd op code. Dat wil zeggen, ze kunnen worden ingesteld op 1 (hoogspanningsniveau) of 0 (laagspanningsniveau).
  • Natuurlijk kunnen ze dat lees binaire gegevens, als enen en nullen, dat wil zeggen spanningssignaal of afwezigheid ervan.
  • Uitgangswaarden van Lezen en schrijven.
  • De invoerwaarden kunnen in sommige gevallen worden geconfigureerd als events zodat ze een soort actie op het bord of systeem genereren. Sommige embedded systemen gebruiken ze als IRQ's. Een ander geval is om te configureren dat wanneer een of meer pinnen actief zijn door bepaalde sensoren, een actie wordt uitgevoerd ...
  • Wat betreft de spanning en intensiteit, je moet goed weten wat de maximale capaciteiten zijn die acceptabel zijn voor het bord, in dit geval de Raspberry Pi 4 of 3. Je moet ze niet passeren om beschadiging ervan te voorkomen.

Trouwens, wanneer een groep GPIO-pinnen is gegroepeerd, zoals het geval is bij de Raspberry Pi, staat de groep bekend als GPIO-poort.

De GPIO-pinnen van de Raspberry Pi

Raspberry Pi GPIO

Regeling geldig voor versie 4, 3, nul

De nieuwe Raspberry Pi 4-kaarten en versie 3 Ze zijn uitgerust met een groot aantal GPIO-pinnen. Niet alle versies bieden hetzelfde aantal, noch zijn ze op dezelfde manier genummerd, dus je moet hier voorzichtig mee zijn om goed te weten hoe je de verbinding moet maken volgens het model en de revisie die je hebt.

Maar wat algemener is, zijn de soorten GPIO die je kunt vinden in de poort van Raspberry Pi-boards. En dat is het eerste dat ik duidelijk wil maken, want op deze manier zul je het weten de soorten pinnen waar u op kunt rekenen voor uw projecten:

  • voeden: deze pinnen worden gebruikt om de stroomkabels of bedrading voor uw elektronische projecten aan te sluiten. Ze komen overeen met pinnen die vergelijkbaar zijn met die op het Arduino-bord, en die spanningen leveren van 5v en 3v3 (3.3v beperkt tot 50mA belasting). Daarnaast vind je er ook de aarding (GND of Ground). Als u geen externe stroombronnen zoals batterijen of adapters gebruikt, kunnen deze pinnen een grote hulp zijn om uw circuit van stroom te voorzien.
  • DNC (niet verbinden): het zijn pinnen die in sommige versies zitten en die geen functie hebben, maar die ze in de nieuwe borden een andere bestemming hebben gekregen. Je vindt deze alleen in meer primitieve modellen van de Pi. In de nieuwe 3 en 4 zullen ze over het algemeen als GND worden gemarkeerd, zodat ze kunnen worden geïntegreerd in de vorige groep.
  • Configureerbare pinnen: ze zijn de normale GPIO en ze kunnen worden geprogrammeerd met codes, zoals ik later zal uitleggen om te doen wat je nodig hebt.
  • Speciale pinnen: dit zijn enkele verbindingen die bedoeld zijn voor speciale verbindingen of interfaces zoals UART, TXD en RXD seriële verbindingen, etc., zoals dat gebeurt met Arduino. U vindt er zelfs enkele zoals SDA, SCL, MOSI, MISO, SCLK, CE0, CE1, enz. Ze vallen op tussen hen:
    • PWM, die de pulsbreedte kan regelen zoals we in een vorig artikel hebben gezien. Op de Raspberry Pi 3 en 4 zijn dit de GPIO12, GPIO13, GPIO18 en GPIO19.
    • SPI is een andere communicatie-interface die ik ook in een ander artikel heb besproken. In het geval van de nieuwe 40-pins boards zijn dit de pins (met verschillende communicatiekanalen zoals je kunt zien):
      • 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 is een andere connectie die ik ook in deze blog heb uitgelegd. Deze bus bestaat uit het datasignaal (GPIO2) en de klok (GPIO3). Naast EEPROM-gegevens (GPIO0) en EEPROM-klok (GPIO1).
    • Serieel, nog een zeer praktische communicatie met TX (GPIO14) en RX (GPIO15) pinnen zoals die je op het bord kunt vinden Arduino UNO.

Onthoud dat GPIO's de interface zijn tussen de Raspberry Pi en de buitenwereld, maar dat hebben ze wel zijn beperkingen, vooral elektrisch. Iets waar u rekening mee moet houden om het bord niet te bederven, is te onthouden dat deze GPIO-pinnen meestal niet-gebufferd zijn, dat wil zeggen, zonder buffer. Dit betekent dat ze geen bescherming hebben, dus u moet de grootte van de toegepaste spanning en intensiteit in de gaten houden om niet met een nutteloze plaat te eindigen ...

GPIO-verschillen tussen versies

Oude Raspberry Pi GPIO-pinnen

Zoals ik zei, niet alle modellen zijn dezelfde pinnenHier zijn enkele diagrammen zodat je de verschillen tussen modellen kunt zien en je dus kunt concentreren op de Raspberry Pi 4 en 3, die de nieuwste zijn en degene die je waarschijnlijk in je bezit hebt. Het verschilt tussen (alle groepen delen dezelfde pinnen):

  • Raspberry Pi 1 Model B Rev 1.0, met 26-pins iets anders dan Rev2.
  • Raspberry Pi 1 Model A en B Rev 2.0, beide modellen met 26-pins.
  • Rapsberry Pi Model A +, B +, 2B, 3B, 3B +, Zero en Zero W, en ook 4 modellen, allemaal met een 40-pins GPIO-header.

Wat kan ik op de GPIO's aansluiten?

Raspberry Pi-hoed

U kunt niet alleen sluit elektronische apparaten aan als transistors, vochtigheids- / temperatuursensoren, thermistors, stappenmotoren, LEDs, enz. U kunt ook componenten of modules aansluiten die speciaal voor de Raspberry Pi zijn gemaakt en die de mogelijkheden van het bord uitbreiden tot buiten wat in de basis is inbegrepen.

Ik verwijs naar het beroemde hoeden of hoeden en borden die je op de markt kunt vinden. Er zijn veel soorten, van degene die worden gebruikt om motoren met stuurprogramma's te besturen, tot andere om te maken een computerclustermet LED-paneel controleerbaar, om toe te voegen DVB TV-mogelijkheid, LCD scherm, Etc.

Deze hoeden of hoeden Ze zijn gemonteerd op het Raspberry Pi-bord, het matchen van de GPIO's die nodig zijn om het te laten werken. Daarom is de montage vrij eenvoudig en snel. Zorg er natuurlijk voor dat de plaatversie compatibel is met elke hoed, aangezien de GPIO-poort anders is zoals je hebt gezien ...

Ik zeg dit voor het geval je een ouder bord hebt, aangezien hoeden dat zijn alleen compatibel met de nieuwste. Net als de Raspberry Pi Model A +, B +, 2, 3 en 4 modellen.

Inleiding tot het gebruik van GPIO op de Raspberry Pi

Pinout-opdrachtuitvoer

Bron: Raspberry Pi

Om te beginnen, op Raspbian, kunt u de console openen en typen het bevel pinoutWat het naar je zal teruggeven, is een afbeelding in de terminal met de GPIO-pinnen die beschikbaar zijn op je bord en waar elk voor is. Iets heel praktisch om het altijd aanwezig te hebben op het moment van werken, zodat je niet in de war raakt.

Eerste project: een LED laten knipperen met de GPIO's

GPIO met LED op Raspberry Pi

De meest eenvoudige manier om een ​​soort "Hallo wereld" met GPIO's is om een ​​eenvoudige LED te gebruiken die is aangesloten op de pinnen van de Raspberry Pi, zodat u kunt zien hoe ze werken. In dit geval heb ik het op GND aangesloten en de andere op pin 17, hoewel je een andere van de normale pinnen kunt kiezen ...

Eenmaal verbonden, kunt u controleer ze vanuit Raspbian gebruik maken van de terminal. In Linux worden specifieke bestanden gebruikt zoals die in de / sys / class / gpio / directory. Om bijvoorbeeld een bestand aan te maken met de nodige structuur om aan het werk te gaan:

echo 17 > /sys/class/gpio/export

Dan kunt u configureren als input (in) of als output (out) die pin 17 gekozen voor ons voorbeeld. Je kunt het heel gemakkelijk doen met:

echo out > /sys/class/gpio/gpio17/direction

In dit geval als uitgang, omdat we een elektrische puls naar de LED willen sturen om deze aan te zetten, maar als het een sensor was, enz., Zou je in kunnen gebruiken. Nu voor aanzetten (1) of uitschakelen (0) de LED die u kunt gebruiken:

echo 1 > /sys/class/gpio/gpio17/value
echo 0 > /sys/class/gpio/gpio17/value

Als u door wilt gaan naar een ander project en item verwijderen gemaakt, kunt u het op deze manier doen:

echo 17 > /sys/class/gpio/unexport

Trouwens, je kunt ook alle benodigde commando's voor je project verzamelen, net als alle voorgaande, en ze opslaan in een bestandstype bash-script en voer ze vervolgens allemaal tegelijk uit in bundels, in plaats van ze een voor een te typen. Dit is handig als u dezelfde oefening meerdere keren herhaalt, zodat u niet hoeft te herschrijven. Gewoon rennen en gaan. Bijvoorbeeld:

nano led.sh

#!/bin/bash
source gpio 
gpio mode 17 out
while true; do 
gpio write 17 1 
sleep 1.3 
gpio write 17 0 
sleep 1.3 done

Als u klaar bent, slaat u op en kunt u het de juiste machtigingen voor uitvoeren en uitvoeren geven het script wacht 1.3 seconden om de LED aan te zetten en schakel je zo uit in een lus ...

chmod +x led.sh
./led.sh

Programmering vooruit

programmeertaal broncode

Het is duidelijk dat het bovenstaande werkt voor kleine elektronische projecten met weinig componenten, maar als je iets geavanceerder wilt maken, in plaats van de commando's, kun je dit gebruiken programmeertalen om verschillende scripts of broncodes te maken die de operatie automatiseren.

Ze kunnen worden gebruikt verschillende tools te programmeren, met heel verschillende talen. De bibliotheken die de community heeft ontwikkeld, maken het u veel gemakkelijker, zoals WiringPi, sysfs, pigpio, enz. De programma's kunnen zeer gevarieerd zijn, van Python, de voorkeursoptie van velen, tot Ruby, Java, Perl, BASIC en zelfs C #.

Officieel biedt de Raspberry Pi je veel voorzieningen om uw GPIO's te programmeren, zoals:

  • Kras, voor degenen die niet weten hoe ze moeten programmeren en de puzzelblokken van dit project willen gebruiken waarmee Arduino ook kan worden geprogrammeerd, enz. Programmeren met grafische blokken is vrij intuïtief en erg praktisch voor het onderwijs.
  • Python: Met deze eenvoudig geïnterpreteerde programmeertaal kunt u eenvoudige en krachtige codes maken, met een groot aantal bibliotheken tot uw beschikking om bijna alles te doen wat u zich maar kunt voorstellen.
  • C / C ++ / C #: zijn krachtigere programmeertalen om binaire bestanden te maken waarmee ze kunnen communiceren met de GPIO's. Je kunt het op verschillende manieren doen, met behulp van het standaardformulier of de kernelinterface via de bibliotheeklibgpiod, maar ook via een bibliotheek van derden, zoals Pigio.
  • Verwerking 3, vergelijkbaar met de Arduino.

Kies flexibel degene die je het leukst vindt of waarvan je denkt dat het eenvoudig is.


4 reacties, laat de jouwe achter

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

      vijand zei

    Heel mooi artikel over starten bij Rasperry

         Isaac zei

      Heel hartelijk bedankt.

           Ruth Medina zei

        ben jij de auteur?

             Isaac zei

          ja