Hvorfor GPIO Zero er bedre enn RPi.GPIO for Raspberry Pi-prosjekter

Hvorfor GPIO Zero er bedre enn RPi.GPIO for Raspberry Pi-prosjekter / programmering

Raspberry Pi er den perfekte datamaskinen for læring. Det Linux-baserte Raspbian OS har Python innebygd, noe som gjør det til et flott første system for nybegynnere. Dens generelle inngangs- / utgangsposer (GPIO) gjør det enkelt for spirende beslutningstakere å eksperimentere med DIY-elektronikkprosjekter.

Det er spesielt enkelt når du bruker kodebiblioteker som styrer disse tappene, og det populære RPi.GPIO Python-biblioteket er et utmerket eksempel på et slikt bibliotek. Men er det den beste veien for nybegynnere? Bli med oss ​​når vi undersøker.

Hva er GPIO Zero?

GPIO Zero-biblioteket er et Python-bibliotek for å jobbe med GPIO-pinner. Det ble skrevet av Raspberry Pi samfunnssjef Ben Nuttall. Formålet med å være intuitiv og “vennlig,” det strømlinjeformer Python-koden for de fleste vanlige Hindbær Pi-brukstilfeller.

Kombinere enkle navngivningspraksis og beskrivende funksjoner, er GPIO Zero mer tilgjengelig for nybegynnere å forstå. Selv erfarne brukere av RPi.GPIO-biblioteket kan foretrekke det - og for å forstå hvorfor, la oss se på hvordan RPi.GPIO sammenligner med GPIO Zero.

Hva er galt med RPi.GPIO?

Ingenting. Ingenting i det hele tatt. RPi.GPIO ble utgitt tidlig i 2012 av utvikler Ben Croston. Det er et robust bibliotek som lar brukerne kontrollere GPIO-pinner fra kode. Den inneholder i nesten alle nybegynnerprosjekter Raspberry Pi-prosjekter for nybegynnere Raspberry Pi-prosjekter for nybegynnere Disse 10 Raspberry Pi-prosjektene for nybegynnere er gode for å få en introduksjon til maskinens og programvarefunksjonene til Pi, og vil hjelpe deg å komme opp og løpe i nei tid! Les mer vi har dekket.

Til tross for sin omfattende bruk, ble RPi.GPIO aldri designet for sluttbrukere. Det er et testamente til RPi.GPIOs gode design at så mange nybegynnere bruker det likevel.

Hva er så bra om GPIO Zero?

Når du lærer Python kode, lærer du at det skal være lett å lese og så kort som mulig. GPIO Zero har som mål å dekke begge punktene. Bygget på toppen av RPi.GPIO som en front-end språkpakke, forenkler det GPIO-oppsett og bruk.

Vurder følgende eksempel, sett opp og slå på en LED:

Ovennevnte kode skal være ganske kjent for alle som har brukt Pi til å kontrollere lysdioder.

RPi.GPIO-biblioteket er importert, og en pin for LED-lampen er erklært. Pin-layouttypen er satt opp (BCM og BOARD-modus er forklart i vår GPIO-guide Alt du trenger å vite om Raspberry Pi GPIO-pinner Alt du trenger å vite om Raspberry Pi GPIO-pinner Raspberry Pi er en fantastisk liten datamaskin, men hva gjør du GPIO (General Purpose Input / Output) -pinnene gjør nøyaktig? Kort sagt, de åpner opp en hel verden av DIY elektronisk tinkering og oppfinnelse. Les mer), og pin er satt opp som en utgang. Deretter slås pinnen på.

Denne tilnærmingen er fornuftig, men GPIO Zero-måten å gjøre det på er mye enklere:

GPIO Zero har en modul for LED, importert i starten. Dette betyr at du kan erklære pinnummeret og ringe til led.on () metode.

Hvorfor er GPIO Zero's Approach Better?

Det er noen grunner til at denne metoden for arbeid er en forbedring på RPi.GPIO.

For det første møter den “Lett å lese, kort som mulig” krav. Mens RPi.GPIO-oppsettene er enkle å forstå, er de ikke nødvendige. En LED vil alltid være en utgang, så GPIO Zero setter opp tappene bak kulissene. Resultatet er bare tre linjer med kode for å sette opp, så lyser en LED.

Det kan hende du merker at det ikke er noen oppsett for brettspill i GPIO Zero-eksemplet. Biblioteket bruker bare Broadcom (BCM) nummerering for pinnene. Bibliotekdesigner Ben Nuttall forklarer hvorfor i et RasPi.tv-intervju i 2015:

“BOARD nummerering kan virke enklere, men jeg vil si det fører til at nye brukere tror alle pinsene er generelle formål, og de er ikke. Koble en LED til pin 11, hvorfor ikke koble noen til pins 1, 2, 3 og 4? Vel 1 er 3V3. 2 og 4 er 5V. Manglende bevissthet om hva formålet med tappene er, kan være farlig.”

Sett på denne måten, er det absolutt fornuftig å bruke BCM-tallene. Gitt at det GPIO Zero vil være standard i Raspberry Pi-dokumentasjonen fremover, er det verdt å lære!

Er GPIO Zero faktisk bedre?

Selv om det virker mer grei på overflaten, har det nye biblioteket noen problemer? Som med noe nytt kodende bibliotek, er det et spørsmål om mening. På den ene siden, å fjerne oppsettkoden er utmerket for nybegynnere og erfarne coders alike. Skrivingskoden er enklere og raskere.

På den annen side, å vite nøyaktig hva som foregår er viktig for læring. Ta eksempel på å sette opp en knapp fra GPIO Zero dokumentasjonen:

De knapp modulen forenkler oppsettet for trykknappene. Det vet at knapper er innganger, så bruker det oppgitte pinnummeret for oppsett. Det er lettere å sjekke om du trykker på en knapp, med .is_pressed å oppdage knappetrykk.

Vi brukte denne nøyaktige funksjonaliteten i Raspberry Pi-knappen opplæringen. 2 måter å legge til en knapp på din Raspberry Pi-prosjekt. 2 måter å legge til en knapp på din Raspberry Pi-prosjekt Hvordan knytter du en knapp til Raspberry Pi? Her er to måter å komme i gang, vist ved hjelp av Python og en LED. Les mer, noe som er en fin måte å gjøre deg kjent med forskjellene i bibliotekene.

Brukere av RPi.GPIO-biblioteket vil merke at de interne opptrekks- / nedtrekksmotstandene til Pi ikke er satt opp i kode. Dette reiser et interessant spørsmål. Er det viktig for nybegynnere å vite om pull-up / down motstander? Igjen har Ben Nuttall et svar på dette spørsmålet:

“Du kan hevde at det er godt å vite om pull ups og pull downs, og du ville ha rett - men hvorfor må jeg lære det på dag ett? [...] Hvis du vil lære elektronikken i dybden, er det nok av Mulighet for det - men det bør ikke være obligatorisk hvis du bare er i gang.”

I det hele tatt er den enkle tilnærmingen til GPIO Zero sannsynligvis en god ting for nybegynnere og veteraner. Dessuten går RPi.GPIO ikke hvor som helst. Det vil alltid være der for å bytte tilbake til om nødvendig.

Er Python det eneste alternativet?

Python er språket Pi er kjent for, men det er ikke det eneste alternativet. Hvis du allerede er kjent med programmering i C-språket, har Wiring Pi deg dekket.

Alternativt, hvis du allerede programmerer i JavaScript, kan Node.js enkelt installeres på Pi. GPIO-tilgang er tilgjengelig gjennom rpi-gpio npm-biblioteket. Ruby on Rails kan også installeres på Raspberry Pi, selv om Pi kanskje ikke er den beste måten å lære Rails!

Alle disse alternativene, sammen med flerspråklige biblioteker som den utmerkede pigpioen, kan gjøre det enklere å velge et bibliotek. Dette er hvor GPIO Zero utmerker: for nybegynnere lurer på hvordan og hvor du skal begynne.

Hvis du er på et punkt der du trenger noe det ikke gir, vil du være mer enn klar til å dykke inn i disse andre bibliotekene i ditt eget tempo.

Komme i gang med GPIO Zero Yourself

GPIO Zero er det nyeste biblioteket for å lage et splash for Pi og med god grunn. For de fleste brukere gjør det koding for GPIO-pinner enklere å lese og raskere å skrive.

Gitt Raspberry Pis bruk i utdanning, er alt som gjør læringen mer naturlig en god ting. Mens RPi.GPIO har vært perfekt frem til nå, tar GPIO Zero en god ide og gjør det enda bedre.

En fin måte å komme i gang med GPIO Zero, er å ta et nybegynnerprosjekt som Musical Door Sensor Spill ditt eget tema Tune når du går inn i rommet med Raspberry Pi Spill ditt eget tema Tune når du går inn i rommet med Raspberry Pi Har du noen gang ønsket å komme hjem til en personlig velkomst? I dette enkle Raspberry Pi-prosjektet bruker vi en reed-bryter for å utløse en melodi når en dør åpnes. Les mer og send det til det nye biblioteket.

Utforsk mer om: GPIO, Python, Raspberry Pi.