Perché GPIO Zero è meglio di RPi.GPIO per i progetti Raspberry Pi
Annuncio pubblicitario
Il Raspberry Pi è il computer perfetto per l'apprendimento. Il sistema operativo Raspbian basato su Linux ha Python integrato, che lo rende un ottimo primo sistema per programmatori principianti. I pin GPIO (General Purpose Input / Output) consentono ai produttori in erba di sperimentare facilmente progetti elettronici fai-da-te.
È particolarmente facile quando si utilizzano librerie di codici che controllano questi pin e la popolare libreria Python RPi.GPIO è un eccellente esempio di tale libreria. Ma è il percorso migliore per i principianti? Unisciti a noi mentre investigiamo.
Che cos'è GPIO Zero?
La libreria GPIO Zero è una libreria Python per lavorare con i pin GPIO. È stato scritto dal community manager di Raspberry Pi Ben Nuttall. Destinato ad essere intuitivo e "amichevole", semplifica il codice Python per i casi d'uso più comuni di Raspberry Pi.
Combinando semplici pratiche di denominazione e funzioni descrittive, GPIO Zero è più accessibile per i principianti. Anche gli utenti esperti della libreria RPi.GPIO potrebbero preferirla, e per capire perché, diamo un'occhiata a come RPi.GPIO si confronta con GPIO Zero.
Cosa c'è di sbagliato in RPi.GPIO?
Niente. Niente di niente. RPi.GPIO è stato rilasciato all'inizio del 2012 dallo sviluppatore Ben Croston. È una libreria affidabile che consente agli utenti di controllare i pin GPIO dal codice. È presente in quasi tutti i progetti per principianti Gli 11 migliori progetti Raspberry Pi per principianti Gli 11 migliori progetti Raspberry Pi per principianti Questi progetti Raspberry Pi per principianti sono ideali per iniziare a utilizzare le funzionalità di qualsiasi modello Raspberry Pi. Leggi di più abbiamo coperto.
Nonostante il suo ampio utilizzo, RPi.GPIO non è mai stato progettato per gli utenti finali. È una testimonianza del buon design di RPi.GPIO che così tanti principianti lo usano comunque.
Cosa c'è di così buono in GPIO Zero?
Quando stai imparando il codice Python, impari che dovrebbe essere facile da leggere e il più breve possibile. GPIO Zero mira a coprire entrambi i punti. Costruito su RPi.GPIO come wrapper di lingua front-end, semplifica la configurazione e l'utilizzo di GPIO.
Considera l'esempio seguente, impostazione e accensione di un LED:
Il codice sopra dovrebbe essere piuttosto familiare a chiunque abbia usato il proprio Pi per controllare i LED.
La libreria RPi.GPIO viene importata e viene dichiarato un pin per il LED. Il tipo di layout dei pin è impostato (le modalità BCM e BOARD sono spiegate nella nostra guida GPIO Tutto ciò che devi sapere sui pin GPIO Raspberry Pi Tutto quello che devi sapere sui pin GPIO Raspberry Pi Il Raspberry Pi è un piccolo computer fantastico, ma cosa fare i pin GPIO (General Purpose Input / Output) fanno esattamente? In breve, aprono un intero mondo di armeggi e invenzioni elettroniche fai-da-te. Leggi di più) e il pin è impostato come uscita. Quindi, il pin viene attivato.
Questo approccio ha senso, ma il modo GPIO Zero di farlo è molto più semplice:
GPIO Zero ha un modulo per LED, importato all'inizio. Questo significa che puoi dichiarare il numero di pin e chiamare il metodo led.on () .
Perché l'approccio di GPIO Zero è migliore?
Ci sono alcuni motivi per cui questo metodo di lavoro è un miglioramento su RPi.GPIO.
In primo luogo, soddisfa il requisito "facile da leggere, il più breve possibile". Mentre le istruzioni di installazione di RPi.GPIO sono abbastanza facili da capire, non sono necessarie. Un LED sarà sempre un'uscita, quindi GPIO Zero imposta i pin dietro le quinte. Il risultato è solo tre righe di codice da configurare, quindi accendere un LED.
Potresti notare che non vi è alcuna configurazione della modalità scheda nell'esempio GPIO Zero. La libreria utilizza solo la numerazione Broadcom (BCM) per i pin. Il designer della biblioteca Ben Nuttall spiega perché in un'intervista a RasPi.tv del 2015:
"La numerazione della SCHEDA potrebbe sembrare più semplice, ma direi che porta i nuovi utenti a pensare che tutti i pin siano di uso generale, e non lo sono. Collegare un LED al pin 11, perché non collegarne altri ai pin 1, 2, 3 e 4? Bene 1 è 3V3. 2 e 4 sono 5 V. Una mancanza di consapevolezza di quale sia lo scopo dei pin può essere pericolosa. "
Detto in questo modo, ha assolutamente senso usare i numeri BCM. Dato che GPIO Zero sarà standard nella documentazione di Raspberry Pi in futuro, vale la pena imparare!
GPIO Zero è effettivamente migliore?
Mentre sembra più semplice in superficie, la nuova biblioteca ha qualche problema? Come con qualsiasi nuova libreria di codifica, è una questione di opinione. Da un lato, la rimozione del codice di installazione è eccellente sia per i principianti che per i programmatori esperti. La scrittura del codice è più semplice e veloce.
D'altra parte, sapere esattamente cosa sta succedendo è importante per l'apprendimento. Prendi l'esempio di impostazione di un pulsante dalla documentazione di GPIO Zero:
Il modulo pulsanti semplifica la configurazione dei pulsanti. Sa che i pulsanti sono input, quindi utilizza il numero di pin dichiarato per l'installazione. Anche la verifica della pressione di un pulsante è più semplice, con .is_pressed per rilevare la pressione dei pulsanti.
Abbiamo usato questa esatta funzionalità nell'esercitazione sui pulsanti di Raspberry Pi 2 modi per aggiungere un pulsante al progetto Raspberry Pi 2 modi per aggiungere un pulsante al progetto Raspberry Pi Come si collega un pulsante al Raspberry Pi? Ecco due modi per iniziare, dimostrato utilizzando Python e un LED. Leggi di più, che è un ottimo modo per familiarizzare con le differenze nelle biblioteche.
Gli utenti della libreria RPi.GPIO noteranno che i resistori pull-up / pull-down interni del Pi non sono impostati nel codice. Ciò solleva una domanda interessante. È essenziale che i principianti sappiano delle resistenze pull-up / down? Ancora una volta, Ben Nuttall ha una risposta a questa domanda:
"Potresti sostenere che è bello sapere di pull up e pull down, e avresti ragione, ma perché devo insegnarlo il primo giorno? [...] Se vuoi insegnare l'elettronica in modo più approfondito, ce ne sono molti di questo scopo, ma non dovrebbe essere obbligatorio se hai appena iniziato. "
Nel complesso, l'approccio semplice di GPIO Zero è probabilmente una buona cosa sia per i principianti che per i veterani. Inoltre, RPi.GPIO non sta andando da nessuna parte. Sarà sempre lì per tornare a se necessario.
Python è l'unica opzione?
Python è la lingua per cui è noto Pi, ma non è l'unica opzione. Se hai già familiarità con la programmazione in linguaggio C, allora Wiring Pi ti copre.
In alternativa, se si programma già in JavaScript, Node.js può essere facilmente installato sul Pi. L'accesso GPIO è disponibile tramite la libreria rpi-gpio npm. Ruby on Rails può anche essere installato su Raspberry Pi, anche se Pi potrebbe non essere il modo migliore per imparare Rails!
Tutte queste alternative, insieme a librerie multilingue come l'eccellente pigpio, possono rendere confusa la scelta di una biblioteca. È qui che eccelle GPIO Zero: per i principianti che si chiedono come e dove iniziare.
Se ti trovi in un punto in cui hai bisogno di qualcosa che non fornisce, sarai più che pronto ad immergerti in queste altre librerie al tuo ritmo.
Introduzione a GPIO Zero Yourself
GPIO Zero è la libreria più recente per fare un tuffo nel Pi e con buone ragioni. Per la maggior parte degli utenti, la codifica per i pin GPIO è più semplice da leggere e più veloce da scrivere.
Dato l'uso del Raspberry Pi nell'istruzione, tutto ciò che rende l'apprendimento più naturale è una buona cosa. Mentre RPi.GPIO è stato perfetto fino ad ora, GPIO Zero prende una buona idea e la rende ancora migliore.
Un ottimo modo per iniziare con GPIO Zero è prendere un progetto per principianti come il sensore di porta musicale Riproduci la tua melodia a tema quando entri nella stanza con Raspberry Pi Riproduci la tua melodia a tema quando entri nella stanza con Raspberry Pi Hai mai desiderato arrivare a casa per un benvenuto personale? In questo semplice progetto Raspberry Pi utilizzeremo un interruttore reed per attivare una melodia all'apertura di una porta. Leggi di più e portalo nella nuova libreria.
Scopri di più su: GPIO, Python, Raspberry Pi.