Waarom GPIO Zero beter is dan RPi.GPIO voor Raspberry Pi-projecten
De Raspberry Pi is de perfecte computer om te leren. Het Linux-gebaseerde Raspbian OS heeft Python ingebouwd, wat het een geweldig eerste systeem maakt voor beginnerscodeerders. De GPIO-pinnen (General Purpose Input / Output) maken het voor beginnende makers gemakkelijk om te experimenteren met doe-het-zelf-elektronica-projecten.
Het is vooral gemakkelijk als je codebibliotheken gebruikt die deze pinnen besturen, en de populaire RPi.GPIO Python-bibliotheek is een uitstekend voorbeeld van zo'n bibliotheek. Maar is dit het beste pad voor beginners? Doe mee met ons terwijl we onderzoeken.
Wat is GPIO Zero?
De GPIO Zero-bibliotheek is een Python-bibliotheek voor het werken met GPIO-pinnen. Het werd geschreven door de gemeenschapsmanager Ben Nuttall van Raspberry Pi. Gericht op intuïtief zijn en “vriendelijk,” het stroomlijnt de Python-code voor de meeste normale Raspberry Pi-gebruikscasussen.
Door simpele naamgevingsmethoden en beschrijvende functies te combineren, is GPIO Zero toegankelijker voor beginners om te begrijpen. Zelfs ervaren gebruikers van de RPi.GPIO-bibliotheek geven er de voorkeur aan - en om te begrijpen waarom, laten we eens kijken hoe RPi.GPIO zich verhoudt tot GPIO Zero.
Wat is er mis met RPi.GPIO?
Niets. Helemaal niets. RPi.GPIO werd begin 2012 uitgebracht door ontwikkelaar Ben Croston. Het is een robuuste bibliotheek waarmee gebruikers GPIO-pinnen vanuit de code kunnen besturen. Het is te vinden in bijna elk beginnerproject Raspberry Pi-projecten voor beginners Raspberry Pi-projecten voor beginners Deze 10 Raspberry Pi-projecten voor beginners zijn ideaal om een introductie te krijgen van de hardware- en softwarecapaciteiten van de Pi en zullen je helpen om zonder problemen aan de slag te gaan tijd! Meer informatie die we hebben behandeld.
Ondanks het uitgebreide gebruik, is RPi.GPIO nooit ontworpen voor eindgebruikers. Het is een bewijs van het goede ontwerp van RPi.GPIO, dat door zoveel beginners toch wordt gebruikt.
Wat is er zo goed aan GPIO Zero?
Wanneer u Python-code aan het leren bent, leert u dat deze gemakkelijk leesbaar en zo kort mogelijk moet zijn. GPIO Zero streeft ernaar beide punten te dekken. Bovenop RPi.GPIO gebouwd als een front-end language-wrapper, vereenvoudigt het de installatie en het gebruik van GPIO.
Bekijk het volgende voorbeeld, instellen en inschakelen van een LED:
De bovenstaande code zou voor iedereen die zijn Pi gebruikt heeft om LED's te besturen redelijk bekend moeten zijn.
De RPi.GPIO-bibliotheek wordt geïmporteerd en er wordt een pin voor de LED gedeclareerd. Het pin layout type is ingesteld (BCM en BOARD mode worden uitgelegd in onze GPIO gids Alles wat u moet weten over Raspberry Pi GPIO-pennen Alles wat u moet weten over Raspberry Pi GPIO-pinnen De Raspberry Pi is een fantastische kleine computer, maar wat doen de GPIO-pinnen (General Purpose Input / Output) doen het precies? Kortom, ze openen een hele wereld van doe-het-zelf elektronisch knutselen en uitvinden Lees meer) en de pen is ingesteld als een uitvoer. Vervolgens is de pin ingeschakeld.
Deze aanpak is logisch, maar de GPIO Zero-manier om dit te doen is veel eenvoudiger:
GPIO Zero heeft een module voor LED's, die aan het begin is geïmporteerd. Dit betekent dat u het pincode kunt declareren en het nummer kunt bellen led.on () methode.
Waarom is de aanpak van GPIO Zero beter??
Er zijn enkele redenen waarom deze manier van werken een verbetering is ten opzichte van RPi.GPIO.
Ten eerste ontmoet het de “gemakkelijk te lezen, kort mogelijk” eis. Hoewel de instellingsinstructies van RPi.GPIO gemakkelijk genoeg zijn om te begrijpen, zijn ze niet nodig. Een LED zal altijd een uitgang zijn, dus GPIO Zero stelt de pinnen achter de schermen in. Het resultaat is slechts drie regels code om in te stellen en vervolgens een LED op te lichten.
Mogelijk merkt u dat er geen boardmodus is ingesteld in het GPIO Zero-voorbeeld. De bibliotheek gebruikt alleen de BCN-nummering (Broadcom) voor de pinnen. Bibliotheekontwerper Ben Nuttall legt uit waarom in een RasPi.tv-interview in 2015:
“BOARD-nummering lijkt misschien eenvoudiger, maar ik zou zeggen dat dit nieuwe gebruikers ertoe brengt te denken dat alle pinnen een algemeen doel hebben - en dat zijn ze niet. Sluit een LED aan op pin 11, waarom zou u niet wat meer verbinden met pennen 1, 2, 3 en 4? Bron 1 is 3V3. 2 en 4 zijn 5V. Een gebrek aan bewustzijn van wat het doel van de pinnen is, kan gevaarlijk zijn.”
Op deze manier is het absoluut logisch om de BCM-nummers te gebruiken. Aangezien GPIO Zero standaard zal zijn in de Raspberry Pi-documentatie, is het de moeite waard om te leren!
Is GPIO Zero eigenlijk beter?
Hoewel het op het eerste gezicht eenvoudiger lijkt, heeft de nieuwe bibliotheek dan problemen? Zoals met elke nieuwe codebibliotheek, is het een kwestie van mening. Aan de ene kant is het verwijderen van de setup-code uitstekend voor beginners en ervaren programmeurs. Het schrijven van code is eenvoudiger en sneller.
Aan de andere kant is het belangrijk om te weten wat er precies aan de hand is. Neem het voorbeeld van het instellen van een knop uit de GPIO Zero-documentatie:
De knop module vereenvoudigt de instelling voor drukknoppen. Het weet dat knoppen ingangen zijn, dus gebruikt het gedeclareerde pincode voor instellen. Controleren op een druk op de knop is ook gemakkelijker, met de .is_pressed om knopdrukken te detecteren.
We gebruikten deze exacte functionaliteit in de Raspberry Pi-knop zelfstudie 2 manieren om een knop toe te voegen aan je Raspberry Pi-project 2 manieren om een knop toe te voegen aan je Raspberry Pi-project Hoe verbind je een knop met je Raspberry Pi? Hier zijn twee manieren om aan de slag te gaan, aangetoond met Python en een LED. Lees Meer, wat een geweldige manier is om vertrouwd te raken met de verschillen in de bibliotheken.
Gebruikers van de RPi.GPIO-bibliotheek zullen merken dat de interne pull-up / pull-down-weerstanden van de Pi niet in code zijn ingesteld. Dit roept een interessante vraag op. Is het essentieel voor beginners om te weten over pull-up / down-weerstanden? Nogmaals, Ben Nuttall heeft een antwoord op deze vraag:
“Je zou kunnen beweren dat het goed is om te weten over pull-ups en pull-downs, en je hebt gelijk - maar waarom moet ik dat op de eerste dag onderwijzen? [...] Als je de elektronica dieper wilt inlezen, is er genoeg ruimte daarvoor - maar het zou niet verplicht moeten zijn als je net begint.”
Over het algemeen is de eenvoudige aanpak van GPIO Zero waarschijnlijk een goede zaak voor beginners en veteranen. Trouwens, RPi.GPIO gaat nergens heen. Het zal er altijd zijn om terug te schakelen naar indien nodig.
Is Python de enige optie?
Python is de taal waar de Pi om bekend staat, maar het is niet de enige optie. Als je al bekend bent met programmeren in de C-taal, dan bedraad je met Wiring Pi.
Als alternatief, als u al in JavaScript programmeert, kan Node.js eenvoudig op de Pi worden geïnstalleerd. GPIO-toegang is beschikbaar via de rpi-gpio npm-bibliotheek. Ruby on Rails kan ook op de Raspberry Pi worden geïnstalleerd, hoewel de Pi misschien niet de beste manier is om Rails te leren!
Al deze alternatieven, samen met meertalige bibliotheken zoals de uitstekende pigpio, kunnen het kiezen van een bibliotheek verwarrend maken. Dit is waar GPIO Zero uitblinkt: voor beginners die zich afvragen hoe en waar ze moeten beginnen.
Als je op een punt bent dat je iets nodig hebt dat het niet biedt, ben je meer dan klaar om in je eigen tempo in deze andere bibliotheken te duiken..
Aan de slag met GPIO Zero Yourself
GPIO Zero is de nieuwste bibliotheek die een goede indruk maakt op de Pi. Voor de meeste gebruikers maakt dit het coderen voor GPIO-pinnen eenvoudiger leesbaar en sneller.
Gezien het gebruik van de Raspberry Pi in het onderwijs, is alles wat leren natuurlijker maakt een goede zaak. Hoewel RPi.GPIO tot nu toe perfect was, heeft GPIO Zero een goed idee en maakt het nog beter.
Een geweldige manier om met GPIO Zero aan de slag te gaan, is door een beginnerproject te nemen, zoals de Muzikale deursensor Uw eigen themafunctie spelen wanneer u de kamer met Raspberry Pi betreedt Uw eigen themafoon spelen wanneer u de kamer met Raspberry Pi betreedt Hebt u ooit gewild om thuis te komen voor een persoonlijk welkom? In dit eenvoudige Raspberry Pi-project gebruiken we een reed-schakelaar om een deuntje te activeren wanneer een deur wordt geopend. Lees Meer en deel het naar de nieuwe bibliotheek.
Ontdek meer over: GPIO, Python, Raspberry Pi.