GPIO: alt om Raspberry Pi 4 og 3-tilkoblinger

Raspberry Pi 4 GPIO

den GPIO-pinner på Raspberry Pi 4-kortet, 3, og også forgjengerne, gir SBC-kortet muligheter som ligner på de som Arduino kan ha, siden du med dem kan lage veldig interessante elektroniske prosjekter styrt fra operativsystemet ved hjelp av kode på forskjellige språk, for eksempel Python.

Det gjør brettet til mer enn bare en billig datamaskin. Det vil tillate deg å koble til et mangfold av elektroniske elementer som du kan bruke med Arduino, men som også kan styres fra Pi. I denne guiden vil jeg prøve å gi deg så mye informasjon som mulig om disse GPIO-pinnene, slik at du kan begynne å dra nytte av dem ...

Hva er GPIO?

GPIO

GPIO er forkortelsen for Input / Output for generell bruk, det vil si Input / Output for generell bruk. Forskjellige elektroniske produkter kan ha det, for eksempel sjetongene eller visse PCB-kort som denne Raspberry Pi. Som navnet antyder, er de pinner som kan konfigureres til å utføre forskjellige funksjoner, derfor er de generelle formål og ikke til spesifikk bruk.

Det vil være brukeren ved kjøretid som kan konfigurer disse GPIO-pinnene slik at de gjør det han vil. Det kan gjøres på forskjellige måter, for eksempel med visse koder eller skript fra konsollen eller med Python-programmet, som er en av de enkleste og mest foretrukne måtene på grunn av mengden alternativer du har til din disposisjon.

På denne måten har Raspberry Pi ikke bare en serie porter og grensesnitt for å koble til flere standardenheter, men legg til disse GPIO-pinnene, slik at du kan legge til andre elektroniske enheter eller produsentprosjekter du har laget selv. På samme måte som du ville gjort med Arduino og dens I / O-pinner for kontroll.

Y ikke eksklusivt for Arduino eller Raspberry Pi, det samme gjør andre lignende SBC-brett og innebygde produkter.

GPIO-funksjoner

Og mellom hennes KARAKTERISTIKK mest fremragende:

  • De kan konfigureressom inngang som utgang. De har den dualiteten som det skjer med dem Arduino.
  • GPIO-pinnene også kan aktiveres og deaktiveres etter kode. Det vil si at de kan settes til 1 (høyspenningsnivå) eller 0 (lavspenningsnivå).
  • Selvfølgelig kan de les binære data, som de og nuller, det vil si spenningssignal eller fravær av det.
  • Utgangsverdier av Lesing og skriving.
  • Inngangsverdiene kan i noen tilfeller konfigureres som Hendelser slik at de genererer en eller annen type handling på tavlen eller systemet. Noen innebygde systemer bruker dem som IRQ. Et annet tilfelle er å konfigurere at når en eller flere pinner er aktive av visse sensorer, utfører du noe ...
  • Når det gjelder spenning og intensitet, må du vite godt hvilke maksimale kapasiteter som er akseptable for brettet, i dette tilfellet Raspberry Pi 4 eller 3. Du bør ikke passere dem for å unngå å skade det.

Forresten, når en gruppe GPIO-pinner er gruppert, som det er tilfellet med Raspberry Pi, er gruppen kjent som GPIO-port.

GPIO-pinnene til Raspberry Pi

Raspberry Pi GPIO

Ordning gyldig for versjon 4, 3, null

Den nye Raspberry Pi 4-brett og versjon 3 De er utstyrt med et stort antall GPIO-pinner. Ikke alle versjoner tilbyr like mye, og er heller ikke nummerert på samme måte, så du må være forsiktig med dette for å vite godt hvordan du skal opprette forbindelsen i henhold til modellen og revisjonen du har.

Men det som er mer generisk, er hvilke typer GPIO du finner i havnen på Raspberry Pi-kort. Og det vil være det første jeg vil gjøre klart, siden det er slik du vil vite typene pinner du kan stole på for prosjektene dine:

  • FôringDisse pinnene brukes til å koble til kraftledninger eller ledninger for dine elektroniske prosjekter. De tilsvarer pinner som ligner på de på Arduino-kortet, og som gir spenninger på 5v og 3v3 (3.3v begrenset til 50mA belastning). I tillegg finner du også bakken (GND eller Ground). Hvis du ikke bruker eksterne strømkilder som batterier eller adaptere, kan disse pinnene være til stor hjelp for å drive strømkretsen din.
  • DNC (Ikke koble til): de er pinner som er i noen versjoner og som ikke har noen funksjon, men at de i de nye tavlene har fått et annet formål. Du finner bare disse i mer primitive modeller av Pi. I de nye 3 og 4 blir de generelt merket som GND, og ​​kan integreres i forrige gruppe.
  • Konfigurerbare pinner: De er de vanlige GPIO-ene, og de kan programmeres med koder som jeg vil forklare senere for å gjøre det du trenger.
  • Spesielle pinner: Dette er noen tilkoblinger som er ment for spesielle tilkoblinger eller grensesnitt som UART, TXD og RXD serielle tilkoblinger, etc., slik det skjer med Arduino. Du vil til og med finne noen som SDA, SCL, MOSI, MISO, SCLK, CE0, CE1, etc. De skiller seg ut blant dem:
    • PWM, som kan regulere pulsbredden som vi så i en forrige artikkel. På Raspberry Pi 3 og 4 er de GPIO12, GPIO13, GPIO18 og GPIO19.
    • SPI er et annet kommunikasjonsgrensesnitt som jeg også diskuterte i en annen artikkel. Når det gjelder de nye 40-pin-kortene, er de pinnene (med forskjellige kommunikasjonskanaler som du kan se):
      • 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 er en annen forbindelse som jeg også har forklart i denne bloggen. Denne bussen består av datasignalet (GPIO2) og klokken (GPIO3). I tillegg til EEPROM Data (GPIO0) og EEPROM Clock (GPIO1).
    • Seriell, en annen veldig praktisk kommunikasjon med TX (GPIO14) og RX (GPIO15) pinner som de du finner på tavlen Arduino UNO.

Husk at GPIO er grensesnittet mellom Raspberry Pi og omverdenen, men det har de dens begrensninger, spesielt elektrisk. Noe du må ta i betraktning for ikke å ødelegge brettet, er å huske at disse GPIO-pinnene vanligvis ikke er bufret, det vil si uten buffer. Dette betyr at de ikke har beskyttelse, så du må overvåke størrelsen på spenningen og intensiteten som brukes for ikke å ende opp med en ubrukelig plate ...

GPIO forskjeller mellom versjoner

Gamle Raspberry Pi GPIO-pinner

Som jeg sa, ikke alle modeller har samme pinnerHer er noen diagrammer slik at du kan se forskjellene mellom modellene og dermed kunne fokusere på Raspberry Pi 4 og 3, som er de nyeste og den du sannsynligvis har i din besittelse. Det er forskjellig mellom (alle hver gruppe deler de samme pinnene):

  • Raspberry Pi 1 Model B Rev 1.0, med 26-pinners litt forskjellig fra Rev2.
  • Raspberry Pi 1 Model A og B Rev 2.0, begge modeller med 26-pin.
  • Rapsberry Pi Model A +, B +, 2B, 3B, 3B +, Zero og Zero W, og også 4 modeller. Alle med en 40-pinners GPIO-topptekst.

Hva kan jeg koble til GPIO-ene?

Raspberry Pi-lue

Du vil ikke bare kunne koble til elektroniske enheter som transistorer, fuktighets- / temperatursensorer, termistorer, trinnmotorer, LED, etc. Du kan også koble til komponenter eller moduler laget spesielt for Raspberry Pi, og som utvider funksjonene til kortet utover det som er inkludert i basen.

Jeg refererer til den berømte hatter eller hatter og plater som du kan finne i markedet. Det er mange typer, fra de som brukes til å kontrollere motorer med drivere, til andre å lage en databehandlingsklynge, Med LED-panel kontrollerbar, for å legge til DVB TV-funksjon, LCD skjermOsv

Disse hatter eller hatter De er montert på Raspberry Pi-kortet, samsvarer med GPIO-ene som er nødvendige for at den skal fungere. Derfor er monteringen ganske enkel og rask. Selvfølgelig, sørg for at plateversjonen er kompatibel med hver hatt, siden GPIO-porten er forskjellig som du har sett ...

Jeg sier dette i tilfelle du har en eldre tallerken, siden hatter er det bare kompatibel med det nyeste. Det samme er Raspberry Pi Model A +, B +, 2, 3 og 4 modeller.

Introduksjon til bruk av GPIO på Raspberry Pi

Pinout kommandoutgang

Kilde: Raspberry Pi

For å komme i gang, på Raspbian, kan du åpne konsollen og skrive kommandoen pinoutHva det vil returnere til deg er et bilde i terminalen med GPIO-pinnene som er tilgjengelige på brettet ditt og hva hver enkelt er for. Noe veldig praktisk å alltid ha det til stede i øyeblikket du jobber slik at du ikke blir forvirret.

Første prosjekt: blink en LED med GPIO-ene

GPIO med LED på Raspberry Pi

Den mest grunnleggende måten å lage en slags Hei verden med GPIO er å bruke en enkel LED koblet til pinnene på Raspberry Pi, slik at du kan se hvordan de fungerer. I dette tilfellet har jeg koblet den til GND og den andre til pinne 17, selv om du kan velge en annen av de vanlige pinnene ...

Når du er koblet til, kan du kontrollere dem fra Raspbian gjør bruk av terminalen. I Linux brukes spesifikke filer som de i katalogen / sys / class / gpio /. For eksempel for å lage en fil med den nødvendige strukturen for å begynne å jobbe:

echo 17 > /sys/class/gpio/export

Da kan du konfigurere som inngang (inn) eller som utgang (ut) den pin 17 valgt for vårt eksempel. Du kan gjøre det veldig enkelt med:

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

I dette tilfellet som en utgang, siden vi vil sende en elektrisk puls til LED-en for å slå den på, men hvis det var en sensor osv., Kan du bruke den. Nå for slå på (1) eller slå av (0) LED-en du kan bruke:

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

Hvis du vil gå videre til et annet prosjekt og Slett inngang opprettet, kan du gjøre det på denne måten:

echo 17 > /sys/class/gpio/unexport

Forresten, du kan også samle alle nødvendige kommandoer for prosjektet ditt, som alle de forrige, lagre dem i en filtype bash-skript og kjør dem i bunter samtidig, i stedet for å skrive dem en etter en. Dette er praktisk når du gjentar den samme øvelsen mange ganger, så du slipper å skrive om. Bare løp og gå. For eksempel:

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

Når du er ferdig, lagrer du, og deretter kan du gi den de riktige utførelses- og utføringstillatelsene manuset for at LED-lampen skal tennes, vent 1.3 sekunder og slå den av i en løkke ...

chmod +x led.sh
./led.sh

Programmeringsforskudd

programmeringsspråk kildekode

Åpenbart fungerer det ovenfor for små elektroniske prosjekter med få komponenter, men hvis du vil lage noe mer avansert, i stedet for kommandoene, er det du kan bruke programmeringsspråk å lage forskjellige skript eller kildekoder som automatiserer operasjonen.

De kan brukes forskjellige verktøy å programmere, med veldig forskjellige språk. Bibliotekene som samfunnet har utviklet gjør ting mye enklere for deg, for eksempel WiringPi, sysfs, pigpio, etc. Programmene kan være veldig varierte, fra Python, som er det foretrukne alternativet for mange, gjennom Ruby, Java, Perl, BASIC og til og med C #.

Offisielt tilbyr Raspberry Pi deg mange fasiliteter for å programmere GPIO-ene dine, for eksempel:

  • Skrap, for de som ikke vet hvordan de skal programmere og vil bruke puslespillblokkene til dette prosjektet som Arduino også kan programmeres med, etc. Programmering med grafiske blokker er ganske intuitivt og veldig praktisk for utdanningsområdet.
  • Python: Dette enkle tolket programmeringsspråket lar deg lage enkle og kraftige koder, med et mangfold av biblioteker til din disposisjon for å gjøre nesten alt du forestiller deg.
  • C / C ++ / C #: de er kraftigere programmeringsspråk for å lage binærfiler som kan samhandles med GPIO-ene. Du kan gjøre det på flere måter ved å bruke standardskjemaet eller kjernegrensesnittet via biblioteketlibgpiod, men også gjennom et tredjepartsbibliotek som pygium.
  • Behandling3, i likhet med Arduino.

Velg fleksibelt den du liker best eller du synes er enkel.


4 kommentarer, legg igjen dine

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Fiende sa

    Veldig fin artikkel om å begynne på Rasperry

    1.    Isaac sa

      Tusen takk.

      1.    Ruth Medina sa

        er du forfatteren?

        1.    Isaac sa

          Ja