GPIO: lahat tungkol sa mga koneksyon sa Raspberry Pi 4 at 3

Raspberry Pi 4 GPIO

Los Ang mga GPIO pin ng board na Raspberry Pi 4, ang 3, at pati na rin ang mga hinalinhan nito, magbigay ng SBC ng mga kakayahan na katulad ng maaaring magkaroon ng Arduino, dahil sa kanila makakalikha ka ng mga kagiliw-giliw na elektronikong proyekto na kontrolado mula sa operating system sa pamamagitan ng code sa iba't ibang mga wika, tulad ng Python

Ginagawa ang board nang higit pa sa isang murang computer. Papayagan ka nitong kumonekta sa maraming ng mga elektronikong elemento na maaari mong gamitin sa Arduino, ngunit maaari mo ring kontrolin mula sa Pi. Sa gabay na ito susubukan kong bigyan ka ng maraming impormasyon hangga't maaari tungkol sa mga GPIO pin na ito upang masimulan mong samantalahin ang mga ito ...

Ano ang GPIO?

GPIO

GPIO ay ang akronim para sa Pangkalahatang Pakay na Input / Output, iyon ay, Pangkalahatang Pakay na Input / Output. Ang magkakaibang elektronikong produkto ay maaaring magkaroon nito, tulad ng mga chips mismo o ilang mga PCB board tulad ng Raspberry Pi na ito. Tulad ng iminungkahi ng kanilang pangalan, ang mga ito ay mga pin na maaaring mai-configure upang maisagawa ang iba't ibang mga pag-andar, samakatuwid ang mga ito ay pangkalahatang layunin at hindi para sa isang tiyak na paggamit.

Ito ang magiging gumagamit sa runtime kung sino ang makakagawa i-configure ang mga GPIO pin na ito upang magawa nila ang nais niya. Maaari itong magawa sa iba't ibang paraan, tulad ng sa ilang mga code o script mula sa console o sa programa ng Python, na isa sa pinakasimpleng at pinipiling paraan dahil sa dami ng mga pagpipilian na mayroon ka.

Sa ganitong paraan, ang Raspberry Pi ay hindi lamang may isang serye ng mga port at interface upang ikonekta ang maramihang mga karaniwang aparato, ngunit idagdag ang mga GPIO pin na ito upang makapagdagdag ka ng iba pang mga elektronikong aparato o mga proyekto ng gumagawa na nilikha mo mismo. Sa parehong paraan na gagawin mo sa Arduino at ng mga I / O pin para sa kontrol.

Y hindi eksklusibo sa Arduino o Raspberry Pi, gayundin ang iba pang mga katulad na SBC board at naka-embed na mga produkto.

Mga pagpapaandar ng GPIO

At sa pagitan ang kanyang CARACTERISTICS pinaka-natitirang:

  • Maaari silang mai-configure kaya bilang input bilang output. Mayroon silang dualitas na nangyari sa mga ng Arduino.
  • Ang mga pin ng GPIO din maaaring buhayin at mai-deactivate ayon sa code Iyon ay, maitatakda ang mga ito sa 1 (antas ng mataas na boltahe) o 0 (mababang antas ng boltahe).
  • Siyempre kaya nila basahin ang binary data, tulad ng mga at zero, iyon ay upang sabihin, signal ng boltahe o kawalan nito.
  • Mga halaga ng output ng Pagbasa at Pagsulat.
  • Ang mga halaga ng pag-input ay maaaring mai-configure sa ilang mga kaso bilang Mga kaganapan upang makabuo sila ng ilang uri ng pagkilos sa board o system. Ang ilang mga naka-embed na system ay ginagamit ang mga ito bilang mga IRQ. Ang isa pang kaso ay upang mai-configure na kapag ang isa o higit pang mga pin ay aktibo ng ilang mga sensor, magsagawa ng ilang aksyon ...
  • Tungkol sa boltahe at kasidhian, dapat mong malaman nang husto ang maximum na mga capacities na katanggap-tanggap para sa board, sa kasong ito ang Raspberry Pi 4 o 3. Hindi mo dapat ipasa ang mga ito upang maiwasan na mapinsala ito.

Sa pamamagitan ng paraan, kapag ang isang pangkat ng mga GPIO pin ay naka-grupo, tulad ng kaso sa Raspberry Pi, ang pangkat ay kilala bilang Port ng GPIO.

Ang mga pin ng GPIO ng Raspberry Pi

Raspberry Pi GPIO

May bisa ang scheme para sa bersyon 4, 3, Zero

bago Raspberry Pi 4 boards at bersyon 3 Ang mga ito ay nilagyan ng isang malaking bilang ng mga GPIO pin. Hindi lahat ng mga bersyon ay nag-aalok ng parehong halaga, ni bilang ang mga ito sa parehong paraan, kaya kailangan mong maging maingat sa mga ito upang malaman ng mabuti kung paano mo dapat gawin ang koneksyon ayon sa modelo at rebisyon na mayroon ka.

Ngunit kung ano ang mas generic ay ang mga uri ng GPIO na maaari mong makita sa daungan ng mga board ng Raspberry Pi. At iyon ang magiging unang bagay na nais kong linawin, dahil iyan ang malalaman mo ang mga uri ng mga pin maaasahan mo ang iyong mga proyekto:

  • pagpapakainAng mga pin na ito ay ginagamit upang ikonekta ang mga linya ng kuryente o mga kable para sa iyong mga elektronikong proyekto. Ang mga ito ay tumutugma sa mga pin na katulad ng sa Arduino board, at nagbibigay ng mga voltages na 5v at 3v3 (3.3v na limitado sa 50mA load). Bilang karagdagan, mahahanap mo rin ang mga ground ground (GND o Ground). Kung hindi ka gumagamit ng mga panlabas na mapagkukunan ng kuryente tulad ng mga baterya, o adaptor, ang mga pin na ito ay maaaring maging malaking tulong upang mapalakas ang iyong circuit.
  • DNC (Huwag Kumonekta): ang mga ito ay mga pin na nasa ilang mga bersyon at na walang pagpapaandar, ngunit na sa mga bagong board binigyan sila ng isa pang layunin. Mahahanap mo lang ang mga ito sa mas sinaunang mga modelo ng Pi. Sa bagong 3 at 4 sila ay minarkahan bilang GND sa pangkalahatan, na maaaring isama sa nakaraang pangkat.
  • Mga configure na pin: Ang mga ito ay ang mga normal na GPIO, at maaari silang mai-program ng mga code dahil ipapaliwanag ko sa paglaon upang gawin ang kailangan mo.
  • Mga espesyal na pin: ito ang ilang mga koneksyon na inilaan para sa mga espesyal na koneksyon o interface tulad ng UART, TXD at RXD na serial na koneksyon, atbp, tulad ng nangyari sa Arduino. Makakakita ka pa ng ilang tulad ng SDA, SCL, MOSI, MISO, SCLK, CE0, CE1, atbp. Tumayo sila sa gitna nila:
    • PWM, na maaaring makontrol ang lapad ng pulso tulad ng nakita namin sa isang nakaraang artikulo. Sa Raspberry Pi 3 at 4 sila ang GPIO12, GPIO13, GPIO18 at GPIO19.
    • Ang SPI ay isa pang interface ng komunikasyon na tinalakay ko rin sa ibang artikulo. Sa kaso ng bagong 40-pin boards, ang mga ito ang mga pin (na may iba't ibang mga channel ng komunikasyon tulad ng nakikita mo):
      • 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 ay isa pang koneksyon na naipaliwanag ko rin sa blog na ito. Ang bus na ito ay binubuo ng data signal (GPIO2) at ng orasan (GPIO3). Bilang karagdagan sa EEPROM Data (GPIO0) at EEPROM Clock (GPIO1).
    • Serial, isa pang napaka praktikal na komunikasyon sa mga pin ng TX (GPIO14) at RX (GPIO15) tulad ng maaari mong makita sa pisara Arduino UNO.

Tandaan na ang mga GPIO ay ang interface sa pagitan ng Raspberry Pi at sa labas ng mundo, ngunit mayroon sila mga limitasyon nito, lalo na ang elektrikal. Isang bagay na dapat mong isaalang-alang upang hindi masira ang board ay tandaan na ang mga GPIO pin na ito ay karaniwang hindi inaabuso, iyon ay, nang walang buffer. Nangangahulugan ito na wala silang proteksyon, kaya dapat mong subaybayan ang lakas ng boltahe at intensidad na inilapat upang hindi mapunta sa isang walang silbi na plato ...

Mga pagkakaiba sa GPIO sa pagitan ng mga bersyon

Mga Old Raspberry Pi GPIO na pin

Kagaya ng sinabi ko, hindi lahat ng mga modelo ay magkatulad na mga pinNarito ang ilang mga diagram upang makita mo ang mga pagkakaiba sa pagitan ng mga modelo at sa gayon ay makapagtuon ng pansin sa Raspberry Pi 4 at 3, na kung saan ay ang pinakabago at ang isa na maaaring mayroon ka sa iyo. Ito ay naiiba sa pagitan ng (lahat ng bawat pangkat ay nagbabahagi ng parehong mga pin):

  • Raspberry Pi 1 Model B Rev 1.0, na may 26-pin na bahagyang naiiba mula sa Rev2.
  • Raspberry Pi 1 Model A at B Rev 2.0, parehong mga modelo na may 26-pin.
  • Rapsberry Pi Model A +, B +, 2B, 3B, 3B +, Zero at Zero W, at pati na rin ang 4 na mga modelo. Lahat ng ito ay may 40-pin GPIO header.

Ano ang maaari kong mai-plug in sa mga GPIO?

Raspberry Pi na sumbrero

Hindi mo lang magagawa ikonekta ang mga elektronikong aparato bilang transistors, mga sensor ng halumigmig / temperatura, thermistors, stepper motor, LEDs, atbp. Maaari mo ring ikonekta ang mga bahagi o modyul na partikular na nilikha para sa Raspberry Pi at pinalawak ang mga kakayahan ng board na lampas sa kung ano ang kasama sa base.

Ang tinutukoy ko ay ang tanyag sumbrero o sumbrero at mga plato na maaari mong makita sa merkado. Maraming uri, mula sa mga ginagamit upang makontrol ang mga motor sa mga driver, hanggang sa iba pa upang lumikha isang kumpol ng computing, Sa LED panel makokontrol, upang idagdag Kakayahang DVB TV, LCD screen, Atbp

Ang mga sumbrero o sumbrero na ito Naka-mount ang mga ito sa board na Raspberry Pi, na tumutugma sa mga GPIO na kinakailangan upang gumana ito. Samakatuwid, ang pagpupulong nito ay medyo simple at mabilis. Siyempre, tiyakin na ang bersyon ng plate na tugma sa bawat sumbrero, dahil ang GPIO port ay naiiba tulad ng nakita mo ...

Sinasabi ko ito kung sakaling mayroon kang isang mas matandang plato, dahil ang mga sumbrero ay katugma lamang sa pinakabago. Tulad ng Raspberry Pi Model A +, B +, 2, 3, at 4 na mga modelo.

Panimula sa paggamit ng GPIO sa Raspberry Pi

Output ng utos ng pinout

Pinagmulan: Raspberry Pi

Upang magsimula, sa Raspbian, maaari mong buksan ang console at i-type ang utos PinoutAng ibabalik nito ay isang imahe sa terminal na may mga magagamit na GPIO pin sa iyong board at kung para saan ang bawat isa. Isang bagay na napaka praktikal na laging mayroon ito sa oras ng trabaho upang hindi ka malito.

Unang proyekto: kumikislap ng isang LED kasama ang mga GPIO

Ang GPIO na may LED sa Raspberry Pi

Ang pinaka-pangunahing paraan upang makagawa ng isang uri ng Kumusta mundo sa mga GPIO ay ang paggamit ng isang simpleng LED na konektado sa mga pin ng Raspberry Pi upang makita mo kung paano ito gumagana. Sa kasong ito, nakakonekta ko ito sa GND at ang iba pa upang i-pin ang 17, kahit na maaari kang pumili ng isa pa sa mga normal na pin ...

Kapag nakakonekta, maaari mo kontrolin ang mga ito mula sa Raspbian ginagamit ang terminal. Sa Linux, ginagamit ang mga tukoy na file tulad ng mga nasa direktoryo / sys / class / gpio /. Halimbawa, upang lumikha ng isang file na may kinakailangang istraktura upang magsimulang magtrabaho:

echo 17 > /sys/class/gpio/export

Pagkatapos ay maaari mong i-configure bilang isang input (sa) o bilang isang output (out) ang pin 17 na iyon ang napili para sa aming halimbawa. Madali mo itong magagawa sa:

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

Sa kasong ito bilang isang output, dahil nais naming magpadala ng isang de-kuryenteng pulso sa LED upang i-on ito, ngunit kung ito ay isang sensor, atbp, maaari mong gamitin. Ngayon para sa i-on (1) o i-off (0) ang LED na maaari mong gamitin:

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

Kung nais mong lumipat sa ibang proyekto at tanggalin ang inilagay nilikha, magagawa mo ito sa ganitong paraan:

echo 17 > /sys/class/gpio/unexport

Sa pamamagitan ng paraan, maaari mo ring tipunin ang lahat ng kinakailangang mga utos para sa iyong proyekto, tulad ng lahat ng mga nakaraang, i-save ang mga ito sa isang uri ng file bash script at pagkatapos ay patakbuhin ang mga ito sa isang bundle nang sabay-sabay, sa halip na i-type ang mga ito isa-isa. Madaling magamit ito kapag ulitin mo ang parehong ehersisyo nang maraming beses, kaya hindi mo na kailangang muling isulat. Tumakbo lang at umalis. Halimbawa:

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

Kapag natapos mo, nagse-save ka at pagkatapos ay maaari mong ibigay ito sa naaangkop na magpatupad at magpatupad ng mga pahintulot ang iskrip para sa LED upang i-on, maghintay ng 1.3 segundo at patayin tulad nito sa isang loop ...

chmod +x led.sh
./led.sh

Advance na programa

code ng mapagkukunan ng wika ng programa

Malinaw na ang nasa itaas ay gumagana para sa maliliit na mga elektronikong proyekto na may ilang mga bahagi, ngunit kung nais mong lumikha ng isang bagay na mas advanced, sa halip na mga utos, ang maaari mong gamitin ay programming languages upang makagawa ng iba't ibang mga script o mga source code na awtomatiko ang pagpapatakbo.

Maaari silang magamit iba't ibang mga tool sa programa, na may iba't ibang mga wika. Ang mga aklatan na binuo ng komunidad ay ginagawang mas madali ang mga bagay para sa iyo, tulad ng WiringPi, sysfs, pigpio, atbp. Ang mga programa ay maaaring magkakaiba-iba, mula sa Python, na kung saan ay ang ginustong pagpipilian ng marami, sa pamamagitan ng Ruby, Java, Perl, BASIC, at kahit C #.

Opisyal, inaalok ka ng Raspberry Pi maraming pasilidad upang mai-program ang iyong mga GPIO, tulad ng:

  • Sulatin nang padaskul-daskol at madalian, para sa mga hindi alam kung paano magprogram at nais gamitin ang mga puzzle block ng proyektong ito kung saan maaari ding mai-program ang Arduino, atbp. Ang Programming na may mga graphic block ay medyo intuitive at napaka praktikal para sa larangan ng edukasyon.
  • Sawa: Pinapayagan ka ng simpleng binibigyang kahulugan na wika ng programa na ito upang lumikha ng simple at makapangyarihang mga code, na may maraming mga aklatan na magagamit mo upang gawin ang halos lahat ng akala mo.
  • C / C ++ / C #: mas malakas ang mga ito ng mga wika sa pagprograma upang lumikha ng mga binary na makikipag-ugnay sa mga GPIO. Maaari mo itong gawin sa maraming paraan, gamit ang karaniwang form o interface ng kernel sa pamamagitan ng librarylibgpiod, ngunit sa pamamagitan din ng isang third-party na library tulad ng pygium.
  • Pagpoproseso3, katulad ng Arduino.

Pumili nang may kakayahang umangkop ang pinaka gusto mo o sa tingin mo ay simple.


4 na puna, iwan mo na ang iyo

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Kapahamakan dijo

    Napakagandang artikulo tungkol sa pagsisimula sa Rasperry

    1.    Isaac dijo

      Maraming salamat sa inyo.

      1.    Ruth Medina dijo

        ikaw ba ang may akda?

        1.    Isaac dijo

          Oo