GPIO: tot sobre les connexions de la Raspberry Pi 4 i 3

Raspberry Pi 4 GPIO

Els pins GPIO de la placa Raspberry Pi 4, la 3, I també dels seus predecessors, doten la placa SBC de capacitats similars a les que pot tenir Arduino, ja que amb ells pots crear projectes electrònics molt interessants controlats des del sistema operatiu mitjançant codi en diferents llenguatges, com Python.

Això fa que la placa sigui alguna cosa més que un simple ordinador barat. Et permetrà connectar multitud de elements electrònics que pots fer servir amb Arduino, però que també poden ser controlats des de la Pi. En aquesta guia intentaré donar-te tota la informació possible sobre aquests pins GPIO perquè puguis començar a aprofitar-los ...

Què és GPIO?

GPIO

GPIO són les sigles de General Purpose Input / Output, és a dir, Entrada / Sortida de propòsit general. El poden tenir diferents productes electrònics, com els propis xips o certes plaques PCB com és el cas d'aquesta Raspberry Pi. Com el seu propi nom indica, són pins que es poden configurar per a crear diferents funcions, per aquest motiu siguin de propòsit general i no per a un ús específic.

Serà l'usuari en temps d'execució el que pugui configurar aquests pins GPIO perquè facin el que ell vol. Es pot fer de diferents maneres, com amb certs codis o scripts des de la consola o amb el programa Python, que és una de les formes més senzilles i preferides per la quantitat d'opcions que tens al teu abast.

D'aquesta manera, la Raspberry Pi no només disposa d'una sèrie de ports i interfícies per connectar diversos dispositius estàndard, sinó que afegeix aquests pins GPIO perquè puguis afegir altres dispositius electrònics o projectes makers que tu mateix hagis creat. De la mateixa manera que ho faries amb Arduino i els seus pins E / S per al control.

Y no és exclusivitat d'Arduino o la Raspberry Pi, També ho tenen altres plaques SBC similars i productes encastats.

Funcions dels GPIO

I entre les seves característiques més destacades:

  • poden ser configurats tant com a entrada com de sortida. Tenen aquesta dualitat com els passa als de Arduino.
  • Els pins GPIO també poden ser activats i desactivats mitjançant codi. És a dir, poden posar-se a 1 (alt nivell de voltatge) o 0 (baix nivell de voltatge).
  • Per descomptat poden llegir dades binàries, Com els uns i zeros, és a dir, senyal de voltatge o absència d'ella.
  • Valors de sortida de lectura i escriptura.
  • Els valors d'entrada poden ser configurats en alguns casos com esdeveniments perquè generin algun tipus d'acció sobre la placa o sistema. Alguns sistemes encastats els fan servir com IRQ. Un altre cas és configurar que quan un o diversos pins estiguin actius per certs sensors realitzi alguna acció ...
  • Pel que fa a el voltatge i intensitat, has de saber bé les capacitats màximes acceptables per la placa, en aquest cas la Raspberry Pi 4 o la 3. No has passar-los per no danyar-la.

Per cert, quan s'agrupa un grup de pins GPIO, com és el cas de la Raspberry Pi, es coneix a el conjunt com port GPIO.

Els pins GPIO de la Raspberry Pi

GPIO Raspberry Pi

Esquema vàlid per a la versió 4, 3, Zero

les noves plaques Raspberry Pi 4 i la versió 3 estan dotades amb un gran nombre de pins GPIO. No totes les versions ofereixen la mateixa quantitat, ni estan numerats de la mateixa manera, així que cal anar amb compte amb això per saber bé com has de fer la connexió segons el model i revisió que tinguis.

Però el que sí és més genèric és els tipus de GPIO que pots trobar al port de les plaques Raspberry Pi. I això serà el primer que m'agradaria deixar clar, ja que així coneixeràs els tipus de pins amb els que pots comptar per als teus projectes:

  • Alimentació: Aquests pins serveixen per poder connectar les línies o cablejat d'alimentació per als teus projectes electrònics. Es corresponen a pins similars als que té la placa Arduino, i que proveeixen de voltatges de 5v i 3v3 (3.3V limitats a 50mA de càrrega). A més, també trobaràs els de terra (GND o Ground). Si no fas servir fonts externes d'alimentació com piles, bateries, o adaptadors, aquests pins et poden servir de gran ajuda per alimentar el teu circuit.
  • DNC (Do Not Connect): Són pins que hi ha en algunes versions i que no tenen funció, però que en les noves plaques sí que se'ls ha donat un altre fi. Aquests sols els trobaràs a models més primitius de la Pi. En les noves 3 i 4 estaran marcats com GND en general, podent-integrar en el grup anterior.
  • pins configurables: Són els GPIO normals, i es poden programar mitjançant codis com després explicaré per fer el que necessitis.
  • pins especials: Són algunes connexions que estan destinats a connexions o interfícies especials com UART, connexions sèrie TXD i RXD, etc., com passa amb Arduino. Fins i tot vas a trobar alguns com SDA, SCL, MOSI, MISO, SCLK, CE0, CE1, etc. Entre ells destaquen:
    • PWM, Que poden regular l'ample de el pols com ja vam veure en un article previ. A la Raspberry Pi 3 i 4 són els GPIO12, GPIO13, GPIO18 i GPIO19.
    • SCI és una altra interfície de comunicació que també vaig analitzar en un altre article. I el cas de les noves plaques de 40-pin, són els pins (amb diferents canals de comunicació com veus):
      • SPI0: MOSI (GPIO10), MISS (GPIO9), SCLK (GPIO11), CE0 (GPIO8), CE1 (GPIO7)
      • SPI1: MOSI (GPIO20); MISS (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16)
    • I2C és una altra connexió que també he explicat en aquest bloc. Aquest bus està compost pel senyal de dades (GPIO2) i el rellotge (GPIO3). A més de EEPROM Data (GPIO0) i EEPROM Clock (GPIO1).
    • Serial, una altra comunicació molt pràctica amb pins TX (GPIO14) i RX (GPIO15) com els que pots trobar a la placa Arduino UNO.

Recorda que els GPIO són ​​la interfície entre la Raspberry Pi i el món exterior, però que tenen les seves limitacions, Especialment elèctriques. Una cosa que has de tenir molt en compte per no malmetre la placa és recordar que aquests pins GPIO solen ser unbuffered, és a dir, sense buffer. Això vol dir que no disposen de protecció, de manera que has de vigilar les magnituds de voltatge i intensitat aplicada per no acabar amb una placa inservible ...

Diferències dels GPIO entre versions

pins GPIO de Raspberry Pi antigues

Com he dit, no en tots els models són els mateixos pins, Et deixo aquí uns esquemes perquè puguis veure les diferències entre models i així poder centrar-me en els de la Raspberry Pi 4 i 3, que són les més noves i la que probablement tinguis en el teu poder. Es diferencia entre (totes les de cada grup comparteixen els mateixos pins):

  • Raspberry Pi 1 Model B Rev 1.0, amb 26-pin lleugerament diferent a el de la Rev2.
  • Raspberry Pi 1 Model A i B Rev 2.0, tots dos models amb 26-pin.
  • Rapsberry Pi Model A +, B +, 2B, 3B, 3B +, Zero i Zero W, i també els models de 4. Tots ells amb un capçal de 40-pin GPIO.

Què puc connectar en els GPIO?

Raspberry Pi hat

No només podràs connectar dispositius electrònics com a transistors, sensors d'humitat / temperatura, termistors, motors pas a pas, LEDs, Etc. També es poden connectar components o mòduls creats específicament per a la Raspberry Pi i que estenen les capacitats de la placa més enllà del que inclou de base.

M'estic referint als famosos hats o barrets i plates que pots trobar al mercat. N'hi ha de molts tipus, des dels que serveixen per controlar motors amb drivers, fins a altres per crear un clúster de còmput, Amb panell de LEDs controlable, per afegir capacitat de TV DVB, pantalla LCD, Etc

Aquests barrets o hats van muntats sobre la placa Raspberry Pi, coincidint amb els GPIO necessaris perquè pugui funcionar. Per tant, el seu muntatge és bastant simple i ràpid. Això sí, assegura't de la versió de placa compatible amb cada hat, ja que el port GPIO és diferent com has vist ...

Ho dic per si tens alguna placa més antiga, ja que els hats són compatibles només amb les més noves. Com són els models Raspberry Pi Model A +, B +, 2, 3, i 4.

Introducció a l'ús de GPIO a la Raspberry Pi

Sortida de la comanda pinout

Font: Raspberry Pi

Per començar, en Raspbian, pots obrir la consola i teclejar la comanda pinout, El que et va a tornar és una imatge en el terminal amb els pins GPIO disponibles a la teva placa i per a què serveix cadascun. Una cosa molt pràctic per tenir-lo sempre present en el moment de treball perquè no et confonguis.

Primer projecte: fer titilar un LED amb els GPIO

GPIO amb LED a Raspberry Pi

La forma més bàsica de fer una mena de «Hello world» amb els GPIO des d'un simple LED connectat als pins de la Raspberry Pi perquè puguis veure com funcionen. En aquest cas, l'he connectat a GND i l'altre a el pin 17, encara que pots triar un altre dels pins normals ...

Un cop connectats, pots controlar-los des Raspbian fent ús de l'terminal. A Linux, s'usen uns fitxers específics com els que hi ha al directori / sys / class / GPIO /. Per exemple, per crear un fitxer amb l'estructura necessària per començar a treballar:

echo 17 > /sys/class/gpio/export

Després ho pots configurar com una entrada (in) o com una sortida (out) aquest pin 17 triat per al nostre exemple. Pots fer-ho molt fàcilment amb:

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

En aquest cas com a sortida, ja que volem enviar un pols elèctric a el LED per encendre'l, però si es tractés d'un sensor, etc., podries fer servir in. Ara, per encendre (1) o apagar (0) el LED pots utilitzar:

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

Si vols passar a un altre projecte i esborrar l'entrada creat, pots fer-ho d'aquesta manera:

echo 17 > /sys/class/gpio/unexport

Per cert, també pots reunir tots els comandaments necessaris per al teu projecte, com tots els anteriors, guardar-los en un fitxer tipus script de Bash i després executar-los en paquet d'una vegada, en comptes de teclejar un a un. Això és pràctic quan repeteixes moltes vegades el mateix exercici, per no haver de reescriure. Només executar i llest. Per exemple:

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

Un cop acabes, guardes i després pots donar-li els permisos adequats d'execució i executar l'script perquè el LED s'encengui, esperi 1.3 segons i s'apagui així en bucle ...

chmod +x led.sh
./led.sh

programació avançada

codi font llenguatge de programació

Evidentment això serveix per a petits projectes electrònics amb pocs components, però si vols crear alguna cosa més avançat, en lloc dels comandaments, el que pots fer servir són llenguatges de programació per fer diferents scripts o codis font que automatitzin el funcionament.

Es poden usar diferents eines per programar, amb llenguatges molt diversos. Les biblioteques que ha desenvolupat la comunitat et faciliten molt les coses, com WiringPi, sysfs, pigpio, etc. Els programes poden ser d'allò més variat, des Python, que és l'opció preferida de molts, passant per Ruby, Java, Perl, BASIC, i fins i tot C #.

De forma oficial, la Raspberry Pi t'ofereix moltes facilitats per programar les seves GPIO, com:

  • Raspi, Per als que no saben programar i volen usar els blocs tipus puzzle d'aquest projecte amb el qual també es pot programar a Arduino, etc. La programació amb blocs gràfics és bastant intuïtiva i molt pràctica per a l'àmbit de l'educació.
  • Pitó: Aquest senzill llenguatge de programació interpretat permet crear codis senzills i potents, amb multitud de biblioteques a la teva disposició per fer gairebé tot el que imagines.
  • C / C ++ / C #: són llenguatges més potents de programació per crear binaris amb els quals interactuar amb els GPIO. Pots fer-ho de diverses formes, usant la forma estàndard o interfície de l'nucli via la bibliotecalibgpiod, Però també mitjançant una biblioteca de tercers com és pigi.
  • Tramitació 3, Similar a el de Arduino.

Tria amb flexibilitat el que més t'agradi o senzill et sembli.


4 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Enemiga va dir

    Molt bon article sobre l'inici a Rasperry

    1.    Isaac va dir

      Moltes gràcies.

      1.    Ruth Medina va dir

        tu ets l'autor?

        1.    Isaac va dir