Die GPIO-penne van die Raspberry Pi 4-bord, die 3, en ook sy voorgangers, bied die SBC-raad vermoëns soortgelyk aan dié wat Arduino kan hê, aangesien u met hulle baie interessante elektroniese projekte kan skep wat vanaf die bedryfstelsel beheer word deur middel van kode in verskillende tale, soos Python.
Dit maak die bord meer as net 'n goedkoop rekenaar. Dit stel u in staat om 'n menigte van elektroniese elemente wat u met Arduino kan gebruik, maar dit kan ook vanaf die Pi beheer word. In hierdie gids sal ek probeer om u soveel moontlik inligting oor hierdie GPIO-penne te gee, sodat u daarvan kan gebruik maak ...
Index
Wat is GPIO?
GPIO is die afkorting vir Algemene Doel Invoer / Uitvoer, dit wil sê Algemene Doel Invoer / Uitvoer. Verskillende elektroniese produkte kan dit hê, soos die chips self of sekere PCB-borde soos hierdie Raspberry Pi. Soos die naam aandui, is dit penne wat gekonfigureer kan word om verskillende funksies uit te voer, daarom is dit 'n algemene doel en nie vir 'n spesifieke gebruik nie.
Die gebruiker kan dit tydens runtime gebruik stel hierdie GPIO-penne in sodat hulle doen wat hy wil. Dit kan op verskillende maniere gedoen word, soos met sekere kodes of skrifte vanaf die konsole of met die Python-program, wat een van die eenvoudigste en mees gewilde maniere is vanweë die hoeveelheid opsies tot u beskikking.
Op hierdie manier het die Raspberry Pi nie net 'n reeks poorte en koppelvlakke om verskeie standaardtoestelle aan te sluit, maar voeg hierdie GPIO-penne by sodat u ander elektroniese toestelle of vervaardigerprojekte wat u self geskep het, kan byvoeg. Op dieselfde manier as met Arduino en sy I / O-penne vir beheer.
Y nie eksklusief vir Arduino of Raspberry Pi nie, so ook ander soortgelyke SBC-borde en ingebedde produkte.
GPIO funksies
En tussenin haar KARAKTERISTIEKE uitstaande:
- Hulle kan gekonfigureer word so baie so insette as uitsette. Hulle het daardie dualiteit soos dit met dié van gebeur Arduino.
- GPIO-penne ook kan geaktiveer en gedeaktiveer word per kode. Dit wil sê, hulle kan ingestel word op 1 (hoë spanning vlak) of 0 (lae spanning vlak).
- Natuurlik kan hulle lees binêre data, as die eenhede en nulle, dit wil sê spanningsein of afwesigheid daarvan.
- Uitsetwaardes van Lees en skryf.
- Die invoerwaardes kan in sommige gevalle as gebeure sodat hulle 'n soort aksie op die bord of stelsel genereer. Sommige ingeboude stelsels gebruik dit as IRQ's. 'N Ander geval is om op te stel dat wanneer een of meer penne deur sekere sensors aktief is, 'n aksie moet uitvoer ...
- Wat die spanning en intensiteit betref, moet u die maksimum kapasiteite wat vir die bord aanvaarbaar is, goed ken, in hierdie geval die Raspberry Pi 4 of 3. U moet nie daarin slaag om skade te voorkom nie.
Terloops, as 'n groep GPIO-penne gegroepeer word, soos die geval met die Raspberry Pi, staan die groep bekend as GPIO-poort.
Die GPIO-penne van die Raspberry Pi
Skema geldig vir weergawe 4, 3, Zero
Die nuwe Raspberry Pi 4-borde en weergawe 3 Hulle is toegerus met 'n groot aantal GPIO-penne. Nie alle weergawes bied dieselfde hoeveelheid nie, en hulle is ook nie op dieselfde manier genommer nie. U moet dus versigtig wees om goed te weet hoe u die verbinding moet maak volgens die model en hersiening wat u het.
Maar wat meer generies is, is die soorte GPIO wat u in die hawe van Raspberry Pi-borde kan vind. En dit is die eerste ding wat ek wil duidelik maak, want dit is hoe u sal weet die soorte penne u kan op u projekte vertrou:
- voedingHierdie penne word gebruik om die kraglyne of bedrading vir u elektroniese projekte aan te sluit. Dit stem ooreen met penne soortgelyk aan die op die Arduino-bord, en wat spanning bied van 5v en 3v3 (3.3v beperk tot 50mA-lading). Daarbenewens vind u ook die grondstukke (GND of Ground). As u nie eksterne kragbronne soos batterye of adapters gebruik nie, kan hierdie penne van groot hulp wees om u stroombaan aan te dryf.
- DNC (moenie verbind nie): dit is penne wat in sommige weergawes is en wat geen funksie het nie, maar dat dit in die nuwe borde 'n ander doel is. U vind dit slegs in meer primitiewe modelle van die Pi. In die nuwe 3 en 4 sal hulle in die algemeen as GND gemerk word, om in die vorige groep te kan integreer.
- Konfigureerbare penne: dit is die normale GPIO, en hulle kan deur kodes geprogrammeer word, soos ek later sal verduidelik om te doen wat u nodig het.
- Spesiale penne: dit is enkele verbindings wat bedoel is vir spesiale verbindings of koppelvlakke soos UART-, TXD- en RXD-seriële verbindings, ens., soos dit met Arduino gebeur. U sal selfs sommige vind soos SDA, SCL, MOSI, MISO, SCLK, CE0, CE1, ens. Hulle staan onder hulle uit:
- PWM, wat die polsbreedte kan reguleer soos ons in 'n vorige artikel gesien het. Op die Raspberry Pi 3 en 4 is dit die GPIO12, GPIO13, GPIO18 en GPIO19.
- SPI is 'n ander kommunikasie-koppelvlak wat ek ook in 'n ander artikel bespreek het. In die geval van die nuwe 40-penborde is dit die penne (met verskillende kommunikasiekanale soos u kan sien):
- 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 'n ander verband wat ek ook in hierdie blog verduidelik het. Hierdie bus bestaan uit die datasignaal (GPIO2) en die klok (GPIO3). Benewens EEPROM Data (GPIO0) en EEPROM Clock (GPIO1).
- Serial, nog 'n baie praktiese kommunikasie met TX (GPIO14) en RX (GPIO15) -pennetjies soos op die bord Arduino UNO.
Onthou dat GPIO's die koppelvlak tussen die Raspberry Pi en die buitewêreld is, maar wel sy beperkings, veral elektries. Iets wat u in ag moet neem om die bord nie te bederf nie, is om te onthou dat hierdie GPIO-penne gewoonlik nie gebuffer is nie, dit wil sê sonder buffer. Dit beteken dat hulle nie beskerming het nie, dus moet u die spanning en intensiteit wat toegepas word, monitor om nie met 'n nuttelose plaat te beland nie ...
GPIO verskille tussen weergawes
Soos ek gesê het, nie alle modelle is dieselfde penne nieHier is 'n paar diagramme, sodat u die verskille tussen die modelle kan sien en sodoende op die Raspberry Pi 4 en 3 kan fokus, wat die nuutste is en die een wat u waarskynlik in u besit het. Dit verskil tussen (almal van elke groep het dieselfde penne):
- Raspberry Pi 1 Model B Rev 1.0, met 26-pen effens anders as Rev2.
- Raspberry Pi 1 Model A en B Rev 2.0, albei modelle met 26-pen.
- Rapsberry Pi Model A +, B +, 2B, 3B, 3B +, Zero en Zero W, en ook 4 modelle, almal met 'n 40-pen GPIO-kopstuk.
Wat kan ek by die GPIO's aansluit?
U sal nie net kan nie verbind elektroniese toestelle soos transistors, humiditeit / temperatuur sensors, termistors, trapmotors, LEDs, ens. U kan ook komponente of modules verbind wat spesifiek vir die Raspberry Pi geskep is en wat die funksies van die bord verder strek as wat in die basis ingesluit is.
Ek verwys na die beroemdes hoede of hoede en borde wat u in die mark kan kry. Daar is baie soorte, van wat gebruik word om motors met drywers te bestuur, tot ander om te skep 'n rekenaargroep, Met LED paneel beheerbaar, om by te voeg DVB TV-vermoë, LCD-skerm, Ens.
Hierdie hoede of hoede Hulle is op die Raspberry Pi-bord gemonteer, wat ooreenstem met die GPIO's wat nodig is om te werk. Daarom is die samestelling daarvan eenvoudig en vinnig. Maak natuurlik seker dat die plaatversie met elke hoed versoenbaar is, aangesien die GPIO-poort anders is soos u gesien het ...
Ek sê dit as u 'n ouer bord het, want hoede is dit slegs versoenbaar met die nuutste. Net soos die Raspberry Pi Model A +, B +, 2, 3 en 4 modelle.
Inleiding tot die gebruik van GPIO op die Raspberry Pi
Bron: Raspberry Pi
Om aan die gang te kom, kan u op Raspbian die konsole oopmaak en tik die opdrag pen uitWat u sal teruggee, is 'n afbeelding in die terminale met die GPIO-penne wat op u bord beskikbaar is en waarvoor elkeen is. Iets baie prakties om dit altyd teenwoordig te hê op die oomblik van werk sodat jy nie verward raak nie.
Eerste projek: flits 'n LED saam met die GPIO's
Die mees basiese manier om 'n soort van "Hallo wêreld" met GPIO's is om 'n eenvoudige LED te gebruik wat aan die penne van die Raspberry Pi gekoppel is, sodat u kan sien hoe dit werk. In hierdie geval het ek dit aan GND gekoppel en die ander aan pen 17, alhoewel u 'n ander normale pen kan kies ...
Sodra dit verbind is, kan u beheer hulle van Raspbian gebruik te maak van die terminale. In Linux word spesifieke lêers gebruik soos in die / sys / class / gpio / directory. Om byvoorbeeld 'n lêer met die nodige struktuur te skep om te begin werk:
echo 17 > /sys/class/gpio/export
Dan kan jy instel as 'n invoer (in) of as 'n uitvoer (uit) daardie pen 17 wat gekies is vir ons voorbeeld. U kan dit baie maklik doen met:
echo out > /sys/class/gpio/gpio17/direction
In hierdie geval as 'n uitset, aangesien ons 'n elektriese pols na die LED wil stuur om dit aan te skakel, maar as dit 'n sensor, ens. Is, kan u dit gebruik. Nou vir skakel aan (1) of skakel uit (0) die LED wat u kan gebruik:
echo 1 > /sys/class/gpio/gpio17/value echo 0 > /sys/class/gpio/gpio17/value
As u wil oorgaan na 'n ander projek en verwyder inskrywing geskep is, kan u dit op hierdie manier doen:
echo 17 > /sys/class/gpio/unexport
Terloops, u kan ook al die nodige opdragte vir u projek versamel, soos al die vorige, om dit in 'n lêertipe te stoor. bash-skrif en voer dit dan gelyktydig in bondels uit, in plaas daarvan om dit een vir een in te tik. Dit is handig as u dieselfde oefening baie keer herhaal, sodat u nie hoef te herskryf nie. Hardloop net en gaan. Byvoorbeeld:
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
Sodra u klaar is, stoor u en dan kan u die regte toestemming gee om dit uit te voer en uit te voer die skrif vir die LED om aan te gaan, wag 1.3 sekondes en skakel dit in 'n lus af ...
chmod +x led.sh ./led.sh
Programmering vooraf
Uiteraard werk bogenoemde vir klein elektroniese projekte met min komponente, maar as u iets meer gevorderds wil skep, in plaas van die opdragte, kan u gebruik programmeringstale om verskillende skrifte of bronkodes te maak wat die bewerking outomatiseer.
Dit kan gebruik word verskillende gereedskap om te programmeer, met baie verskillende tale. Die biblioteke wat die gemeenskap ontwikkel het, maak dinge vir u baie makliker, soos WiringPi, sysfs, pigpio, ens. Die programme kan baie uiteenlopend wees, van Python, wat die voorkeuropsie vir baie is, tot Ruby, Java, Perl, BASIC en selfs C #.
Amptelik bied die Raspberry Pi u baie fasiliteite om u GPIO's te programmeer, soos:
- Krap, vir diegene wat nie weet hoe om te programmeer nie en die legkaartblokke van hierdie projek waarmee Arduino ook geprogrammeer kan word, wil gebruik, ens. Programmering met grafiese blokke is redelik intuïtief en baie prakties vir die onderwysveld.
- Python: Met hierdie eenvoudige geïnterpreteerde programmeertaal kan u eenvoudige en kragtige kodes skep, met 'n menigte biblioteke tot u beskikking om byna alles te doen wat u dink.
- C / C ++ / C #: dit is kragtiger programmeertale om binaries te skep waarmee u met GPIO's kan kommunikeer. U kan dit op verskillende maniere doen deur die standaardvorm of kern-koppelvlak via die biblioteek te gebruiklibgpiod, maar ook deur 'n derdeparty-biblioteek soos pygium.
- Verwerking3, soortgelyk aan die Arduino.
Kies buigsaam die een waarvan u die meeste hou of wat u dink eenvoudig is.
4 kommentaar, los joune
Baie mooi artikel oor begin by Rasperry
Baie dankie.
is jy die skrywer?
Ja