GPIO: alt om Raspberry Pi 4 og 3 forbindelser

Raspberry Pi 4 GPIO

masse GPIO-ben på Raspberry Pi 4-kortet, 3, og også dets forgængere, giver SBC-tavlen kapaciteter svarende til dem, som Arduino kan have, da med dem kan du oprette meget interessante elektroniske projekter, der styres fra operativsystemet ved hjælp af kode på forskellige sprog, såsom Python.

Det gør tavlen mere end bare en billig computer. Det giver dig mulighed for at forbinde en lang række elektroniske elementer som du kan bruge med Arduino, men det kan også styres fra Pi. I denne vejledning vil jeg forsøge at give dig så meget information som muligt om disse GPIO-ben, så du kan begynde at udnytte dem ...

Hvad er GPIO?

GPIO

GPIO er akronymet for General Purpose Input / Output, dvs. General Purpose Input / Output. Forskellige elektroniske produkter kan have det, såsom chipsene selv eller visse PCB-kort som denne Raspberry Pi. Som navnet antyder, er de stifter, der kan konfigureres til at udføre forskellige funktioner, derfor er de generelle formål og ikke til en bestemt anvendelse.

Det vil være brugeren ved kørsel, der kan konfigurer disse GPIO-ben så de gør, hvad han vil. Det kan gøres på forskellige måder, f.eks. Med bestemte koder eller scripts fra konsollen eller med Python-programmet, som er en af ​​de enkleste og mest foretrukne måder på grund af den mængde muligheder, du har til din rådighed.

På denne måde har Raspberry Pi ikke kun en række porte og grænseflader for at forbinde flere standardenheder, men tilføj disse GPIO-ben, så du kan tilføje andre elektroniske enheder eller producentprojekter, som du selv har oprettet. På samme måde som du ville med Arduino og dens I / O-ben til kontrol.

Y ikke eksklusiv til Arduino eller Raspberry Pi, det samme gør andre lignende SBC-kort og indlejrede produkter.

GPIO-funktioner

Og imellem hendes KARAKTERISTIK mest fremragende:

  • De kan konfigureressom input som output. De har den dualitet, som det sker med dem Arduino.
  • GPIO-ben også kan aktiveres og deaktiveres efter kode. Det vil sige, de kan indstilles til 1 (højspændingsniveau) eller 0 (lavspændingsniveau).
  • Selvfølgelig kan de læse binære data, som dem og nuller, det vil sige spændingssignal eller fravær af det.
  • Outputværdier på Læse og skrive.
  • Inputværdierne kan i nogle tilfælde konfigureres som Begivenheder så de genererer en eller anden form for handling på tavlen eller systemet. Nogle integrerede systemer bruger dem som IRQ'er. Et andet tilfælde er at konfigurere, at når en eller flere ben er aktive af bestemte sensorer, skal du udføre en handling ...
  • Med hensyn til spænding og intensitet skal du kende de maksimale kapaciteter, der er acceptable for kortet, i dette tilfælde Raspberry Pi 4 eller 3. Du bør ikke passere dem for at undgå at beskadige det.

Forresten, når en gruppe GPIO-ben er grupperet, som det er tilfældet med Raspberry Pi, er gruppen kendt som GPIO-port.

GPIO-stifterne på Raspberry Pi

Raspberry Pi GPIO

Ordning gyldig til version 4, 3, nul

ny Raspberry Pi 4 boards og version 3 De er udstyret med et stort antal GPIO-ben. Ikke alle versioner tilbyder det samme beløb, og de er heller ikke nummereret på samme måde, så du skal være forsigtig med dette for at vide godt, hvordan du skal oprette forbindelsen i henhold til den model og revision, du har.

Men hvad der er mere generisk er de typer GPIO, som du kan finde i havnen på Raspberry Pi-kort. Og det vil være det første, jeg gerne vil gøre det klart, da det er sådan, du vil vide typerne ben du kan stole på for dine projekter:

  • fodringDisse ben bruges til at forbinde kraftledninger eller ledninger til dine elektroniske projekter. De svarer til stifter svarende til dem på Arduino-kortet, og som giver spændinger på 5v og 3v3 (3.3v begrænset til 50mA belastning). Derudover finder du også de jordede (GND eller Ground). Hvis du ikke bruger eksterne strømkilder såsom batterier eller adaptere, kan disse ben være til stor hjælp for at få strøm til dit kredsløb.
  • DNC (Forbind ikke): de er stifter, der findes i nogle versioner, og som ikke har nogen funktion, men at de i de nye tavler har fået et andet formål. Du finder kun disse i mere primitive modeller af Pi. I de nye 3 og 4 vil de blive markeret som GND generelt og være i stand til at integrere i den forrige gruppe.
  • Konfigurerbare ben: De er de normale GPIO'er, og de kan programmeres med koder, som jeg senere vil forklare for at gøre, hvad du har brug for.
  • Specielle stifter: dette er nogle forbindelser, der er beregnet til specielle forbindelser eller grænseflader som UART, TXD og RXD serielle forbindelser osv., som det sker med Arduino. Du finder endda nogle som SDA, SCL, MOSI, MISO, SCLK, CE0, CE1 osv. De skiller sig ud blandt dem:
    • PWM, som kan regulere pulsbredden, som vi så i en tidligere artikel. På Raspberry Pi 3 og 4 er de GPIO12, GPIO13, GPIO18 og GPIO19.
    • SPI er en anden kommunikationsgrænseflade, som jeg også diskuterede i en anden artikel. I tilfælde af de nye 40-pin-kort er de benene (med forskellige kommunikationskanaler 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 anden forbindelse, som jeg også har forklaret i denne blog. Denne bus består af datasignalet (GPIO2) og uret (GPIO3). Ud over EEPROM Data (GPIO0) og EEPROM Clock (GPIO1).
    • Seriel, en anden meget praktisk kommunikation med TX (GPIO14) og RX (GPIO15) ben som dem, du kan finde på tavlen Arduino UNO.

Husk, at GPIO'er er grænsefladen mellem Raspberry Pi og omverdenen, men de har det dens begrænsninger, især elektrisk. Noget, som du skal tage i betragtning for ikke at ødelægge tavlen, er at huske, at disse GPIO-stifter normalt ikke er pufret, dvs. uden buffer. Dette betyder, at de ikke har beskyttelse, så du skal overvåge størrelsen på den spænding og intensitet, der anvendes, for ikke at ende med en ubrugelig plade ...

GPIO forskelle mellem versioner

Gamle Raspberry Pi GPIO-ben

Som jeg sagde, ikke alle modeller har de samme benHer er nogle diagrammer, så du kan se forskellene mellem modellerne og dermed være i stand til at fokusere på Raspberry Pi 4 og 3, som er de nyeste og den, du sandsynligvis har i din besiddelse. Det adskiller sig mellem (alle hver gruppe deler de samme ben):

  • Raspberry Pi 1 Model B Rev 1.0, med 26-pin lidt anderledes end 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, samt 4 modeller, alle med et 40-benet GPIO-header.

Hvad kan jeg tilslutte GPIO'erne?

Hindbær Pi hat

Det vil du ikke kun kunne tilslutte elektroniske enheder som transistorer, fugtigheds- / temperaturfølere, termistorer, stepmotorer, LEDs, etc. Du kan også forbinde komponenter eller moduler, der er oprettet specielt til Raspberry Pi, og som udvider kortets muligheder ud over hvad der er inkluderet i basen.

Jeg henviser til den berømte hatte eller hatte og plader, som du kan finde på markedet. Der er mange typer, fra dem der bruges til at styre motorer med drivere, til andre at skabe en computerklynge, Med LED-panel kontrollerbar, for at tilføje DVB TV-kapacitet, LCD-skærmOsv

Disse hatte eller hatte De er monteret på Raspberry Pi-kortet, matcher de GPIO'er, der er nødvendige for at det kan fungere. Derfor er dens samling ganske enkel og hurtig. Sørg selvfølgelig for, at pladeversionen er kompatibel med hver hat, da GPIO-porten er anderledes, som du har set ...

Jeg siger dette, hvis du har en ældre plade, da hatte er det kun kompatibel med det nyeste. Som det er Raspberry Pi Model A +, B +, 2, 3 og 4 modeller.

Introduktion til brug af GPIO på Raspberry Pi

Pinout-kommandooutput

Kilde: Raspberry Pi

For at komme i gang kan du på Raspbian åbne konsollen og skrive kommandoen pinoutHvad det vil returnere til dig, er et billede i terminalen med GPIO-stifterne tilgængelige på dit bord, og hvad hver enkelt er til. Noget meget praktisk at altid have det til stede i øjeblikket, så man ikke bliver forvirret.

Første projekt: blinker en LED med GPIO'erne

GPIO med LED på Raspberry Pi

Den mest basale måde at lave en slags "Hej verden" med GPIO'er er at bruge en simpel LED tilsluttet stifterne på Raspberry Pi, så du kan se, hvordan de fungerer. I dette tilfælde har jeg tilsluttet det til GND og det andet til pin 17, selvom du kan vælge en anden af ​​de normale pins ...

Når du er tilsluttet, kan du kontrollere dem fra Raspbian gør brug af terminalen. I Linux bruges specifikke filer som dem i / sys / class / gpio / directory. For eksempel at oprette en fil med den nødvendige struktur for at begynde at arbejde:

echo 17 > /sys/class/gpio/export

Så kan du konfigurere som en indgang (ind) eller som udgang (ud) den pin 17 valgt til vores eksempel. Du kan gøre det meget let med:

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

I dette tilfælde som en output, da vi vil sende en elektrisk puls til LED'en for at tænde den, men hvis det var en sensor osv., Kan du bruge den i. Nu til tænd (1) eller sluk (0) den LED, du kan bruge:

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

Hvis du vil gå videre til et andet projekt og slet post oprettet, kan du gøre det på denne måde:

echo 17 > /sys/class/gpio/unexport

Af den måde kan du også samle alle de nødvendige kommandoer til dit projekt, som alle de tidligere, gemme dem i en filtype bash script og kør dem derefter i et bundt på én gang i stedet for at skrive dem en efter en. Dette er praktisk, når du gentager den samme øvelse mange gange, så du ikke behøver at omskrive. Bare løb 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 færdig, gemmer du, og derefter kan du give det de relevante udførelses- og udførelsesrettigheder manuskriptet for at LED'en skal tænde, vent 1.3 sekunder og sluk sådan i en løkke ...

chmod +x led.sh
./led.sh

Programmering forskud

programmeringssprog kildekode

Ovennævnte fungerer naturligvis for små elektroniske projekter med få komponenter, men hvis du vil oprette noget mere avanceret i stedet for kommandoerne, er det, du kan bruge, programmeringssprog at lave forskellige scripts eller kildekoder, der automatiserer operationen.

De kan bruges forskellige værktøjer at programmere med meget forskellige sprog. Bibliotekerne, som samfundet har udviklet, gør tingene meget lettere for dig, såsom WiringPi, sysfs, pigpio osv. Programmerne kan være meget varierede, fra Python, som er den foretrukne mulighed for mange gennem Ruby, Java, Perl, BASIC og endda C #.

Officielt tilbyder Raspberry Pi dig mange faciliteter at programmere dine GPIO'er, såsom:

  • Skrab, for dem der ikke ved hvordan man programmerer og ønsker at bruge puslespilene i dette projekt, som Arduino også kan programmeres osv. Programmering med grafiske blokke er ret intuitiv og meget praktisk inden for uddannelsesområdet.
  • Python: Dette enkle fortolkede programmeringssprog giver dig mulighed for at oprette enkle og kraftfulde koder med et væld af biblioteker til din rådighed for at gøre næsten alt, hvad du forestiller dig.
  • C / C ++ / C #: de er mere kraftfulde programmeringssprog til at oprette binære filer, som de kan interagere med GPIO'erne med. Du kan gøre det på flere måder ved hjælp af standardformularen eller kerneinterfacet via biblioteketlibgpiod, men også gennem et tredjepartsbibliotek som f.eks pygium.
  • Behandling3, svarende til Arduino.

Vælg fleksibelt den, du bedst kan lide, eller du synes er enkel.


4 kommentarer, lad dine

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Fjende sagde han

    Meget fin artikel om at starte hos Rasperry

    1.    Isaac sagde han

      Mange tak.

      1.    Ruth Medina sagde han

        er du forfatteren?

        1.    Isaac sagde han

          Ja