Hvorfor GPIO Zero er bedre enn RPi.GPIO for Raspberry Pi-prosjekter
Annonse
Raspberry Pi er den perfekte datamaskinen for å lære. Det Linux-baserte Raspbian OS har Python innebygd, noe som gjør det til et flott første system for nybegynnerkodere. GPIO-stiftene (General Purpose Input / Output) gjør det enkelt for spirende produsenter å eksperimentere med DIY-elektronikkprosjekter.
Det er spesielt enkelt når du bruker kodebiblioteker som kontrollerer disse pinnene, 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 når vi undersøker.
Hva er GPIO Zero?
GPIO Zero-biblioteket er et Python-bibliotek for arbeid med GPIO-pinner. Det ble skrevet av Raspberry Pi samfunnssjef Ben Nuttall. Målet med å være intuitiv og "vennlig", effektiviserer den Python-koden for de fleste vanlige Raspberry Pi-brukstilfeller.
Ved å kombinere enkel navnepraksis og beskrivende funksjoner er GPIO Zero mer tilgjengelig for nybegynnere å forstå. Selv erfarne brukere av RPi.GPIO-biblioteket foretrekker kanskje det - og for å forstå hvorfor, la oss ta en titt på hvordan RPi.GPIO sammenligner med GPIO Zero.
Hva er galt med RPi.GPIO?
Ingenting. Ingenting i det hele tatt. RPi.GPIO ble utgitt i begynnelsen av 2012 av utvikler Ben Croston. Det er et robust bibliotek som lar brukere kontrollere GPIO-pinner fra kode. Den inneholder i nesten alle nybegynnerprosjekter De 11 beste Raspberry Pi-prosjektene for nybegynnere De 11 beste Raspberry Pi-prosjektene for nybegynnere Disse Raspberry Pi-prosjektene for nybegynnere er gode for å komme i gang med mulighetene til enhver Raspberry Pi-modell. Les mer vi har dekket.
Til tross for utstrakt bruk, var RPi.GPIO aldri designet for sluttbrukere. Det er et vitnesbyrd om RPi.GPIOs gode design at så mange nybegynnere likevel bruker den.
Hva er så bra med GPIO Zero?
Når du lærer Python-kode, lærer du at den 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åkinnpakning, forenkler GPIO-oppsett og -bruk.
Tenk på følgende eksempel ved å sette opp og slå på en LED:
Koden ovenfor skal være ganske kjent for alle som har brukt Pi-en sin for å kontrollere lysdioder.
RPi.GPIO-biblioteket er importert, og en pinne for lysdioden er deklarert. Pin layout-typen er satt opp (BCM- og BOARD-modus er forklart i vår GPIO-guide. Alt du trenger å vite om Raspberry Pi GPIO Pins Alt du trenger å vite om Raspberry Pi GPIO Pins Raspberry Pi er en fantastisk liten datamaskin, men hva gjør GPIO-stiftene (General Purpose Input / Output) gjør nøyaktig? Kort sagt, de åpner for en hel verden av elektronisk kling og oppfinnelse av DIY. Les mer), og pinnen 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 lysdioder, importert i starten. Dette betyr at du kan oppgi pin-nummeret og ringe metoden led.on () .
Hvorfor er GPIO Zero tilnærming bedre?
Det er noen grunner til at denne arbeidsmetoden er en forbedring på RPi.GPIO.
For det første oppfyller det kravet om "lettlest, kort som mulig". Selv om RPi.GPIO-konfigurasjonsuttalelsene er enkle å forstå, er de ikke nødvendige. En LED vil alltid være en utgang, så GPIO Zero setter opp pinnene bak kulissene. Resultatet er bare tre kodelinjer å sette opp, og deretter tennes en LED.
Du vil kanskje legge merke til at det ikke er noen oppsett for styremodus i GPIO Zero-eksemplet. Biblioteket bruker bare Broadcom (BCM) nummerering for pinnene. Bibliotekdesigner Ben Nuttall forklarer hvorfor i et RasPi.tv-intervju fra 2015:
“Tavlenummereringen kan virke enklere, men jeg vil si at det fører til at nye brukere tror at alle pinnene er av generelle formål - og det er de ikke. Koble en LED til pinne 11, hvorfor ikke koble noen flere til pinner 1, 2, 3 og 4? Brønn 1 er 3V3. 2 og 4 er 5V. Mangel på bevissthet om hva formålet med pinnene er, kan være farlig. "
Sånn sett er det absolutt fornuftig å bruke BCM-tallene. Gitt at 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 greit på overflaten, har det nye biblioteket noen problemer? Som med ethvert nytt kodingsbibliotek, er det en mening. På den ene siden er det å fjerne installasjonskoden utmerket for både nybegynnere og erfarne kodere. Det er enklere og raskere å skrive kode.
På den annen side er det å vite nøyaktig hva som foregår viktig for å lære. Ta eksempelet med å sette opp en knapp fra GPIO Zero-dokumentasjonen:
Knappmodulen forenkler oppsettet for trykknapper. Den vet at knapper er innganger, så bruker det deklarerte pinnetallet for oppsett. Det er enklere å sjekke etter et knappetrykk, med .is_presset for å oppdage knappetrykk.
Vi brukte denne nøyaktige funksjonaliteten i Raspberry Pi-knappopplæringen 2 måter å legge til en knapp til Raspberry Pi-prosjektet ditt 2 måter å legge til en knapp til Raspberry Pi-prosjektet ditt Hvordan kobler du en knapp til Raspberry Pi? Her er to måter å komme i gang, demonstrert ved hjelp av Python og en LED. Les mer, som er en flott måte å sette seg inn i 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 svar på dette spørsmålet:
"Du kan hevde at det er bra å vite om pull-ups og pull-downs, og du ville ha rett - men hvorfor må jeg lære det på dag én? [...] Hvis du vil lære elektronikken mer i dybden, er det nok av omfanget for det - men det burde ikke være obligatorisk hvis du bare kommer i gang. ”
I det store og det hele er den enkle tilnærmingen til GPIO Zero sannsynligvis en god ting for både nybegynnere og veteraner. Dessuten går ikke RPi.GPIO noe sted. Den 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 på C-språket, har Wiring Pi du 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 på!
Alle disse alternativene, sammen med flerspråklige biblioteker som den utmerkede pigpio, kan gjøre det å forvirre å velge et bibliotek. Det er her GPIO Zero utmerker seg: for nybegynnere som lurer på hvordan og hvor de 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 som skvetter til Pi og med god grunn. For de fleste brukere gjør det kodingen for GPIO-pins enklere å lese og raskere å skrive.
Gitt Raspberry Pis bruk i utdanning, er alt som gjør læring mer naturlig en god ting. Mens RPi.GPIO har vært perfekt frem til nå, tar GPIO Zero en god idé og gjør den enda bedre.
En fin måte å komme i gang med GPIO Zero er å ta et nybegynnervirke som Musical Door Sensor Spill din egen tematone når du kommer inn i rommet med bringebærpi Spill din egen tematone når du kommer inn i rommet med bringebærpi Har du noen gang ønsket å komme hjem til en personlig velkomst? I dette enkle Raspberry Pi-prosjektet bruker vi en vassbryter for å utløse en melodi når en dør åpnes. Les mer og port det til det nye biblioteket.
Utforsk mer om: GPIO, Python, Raspberry Pi.