Pourquoi GPIO Zero est meilleur que RPi.GPIO pour le projet Raspberry Pi
Raspberry Pi est l’ordinateur d’apprentissage parfait. Le système d’exploitation Raspbian basé sur Linux intègre Python, ce qui en fait le système de choix pour les codeurs débutants. Ses broches d’entrée/sortie à usage général (GPIO) permettent aux fabricants émergents d’essayer facilement des projets électroniques de bricolage.
C’est particulièrement facile lorsque vous utilisez des bibliothèques de code qui contrôlent ces broches, la populaire bibliothèque Python RPi.GPIO est un bon exemple d’une telle bibliothèque. Mais est-ce le meilleur chemin pour les débutants ? Rejoignez notre enquête.
Qu’est-ce que le GPIO zéro ?
La bibliothèque GPIO Zero est une bibliothèque Python permettant de travailler avec des broches GPIO. Il a été écrit par Ben Nuttall, responsable de la communauté Raspberry Pi. Conçu pour être intuitif et « convivial », il simplifie le code Python pour les cas d’utilisation les plus courants de Raspberry Pi.
Combiné avec des pratiques de dénomination simples et des fonctionnalités descriptives, GPIO Zero est plus facile à comprendre pour les débutants. Même les utilisateurs expérimentés de la bibliothèque RPi.GPIO peuvent la préférer – pour comprendre pourquoi, regardons comment RPi.GPIO se compare à GPIO Zero.
Quel est le problème avec RPi.GPIO ?
non. Rien du tout. RPi.GPIO a été publié début 2012 par le développeur Ben Croston. Il s’agit d’une bibliothèque puissante qui permet aux utilisateurs de contrôler les broches GPIO via du code. C’est dans presque tous les projets pour débutants que nous couvrons.
Malgré sa polyvalence, RPi.GPIO n’a jamais été conçu pour l’utilisateur final. Que tant de débutants l’utilisent encore témoigne de la bonne conception de RPi.GPIO.
Quel est l’avantage du GPIO zéro ?
Au fur et à mesure que vous apprenez le code Python, vous apprenez qu’il doit être facile à lire et aussi court que possible. GPIO Zero est conçu pour couvrir les deux. Construit sur RPi.GPIO en tant que wrapper de langage frontal, il simplifie la configuration et l’utilisation des GPIO.
Faire une vidéo du jour
Considérez l’exemple suivant pour définir et allumer une LED :
Le code ci-dessus devrait être très familier à quiconque utilise le Pi pour contrôler les LED.
Importez la bibliothèque RPi.GPIO et déclarez les broches pour les LED. Le type de disposition des broches est défini (les modes BCM et BOARD sont expliqués dans notre guide GPIO) et les broches sont définies comme sorties. Ensuite, les broches sont activées.
Cette approche a du sens, mais l’approche GPIO Zero est beaucoup plus simple :
GPIO Zero dispose d’un module pour les LED, importé au départ.Cela signifie que vous pouvez déclarer le code PIN, puis appeler mener() méthode.
Pourquoi l’approche de GPIO Zero est-elle meilleure ?
Il y a plusieurs raisons pour lesquelles cette méthode de travail est une amélioration par rapport à RPi.GPIO.
Premièrement, il répond à l’exigence « facile à lire, aussi bref que possible ». Bien que les instructions de configuration RPi.GPIO soient faciles à comprendre, elles ne sont pas obligatoires. La LED sera toujours une sortie, donc GPIO Zero définit les broches dans les coulisses. Il s’avère que la configuration ne prend que trois lignes de code, puis allume une LED.
Vous remarquerez peut-être qu’il n’y a pas de paramètre de mode de carte dans l’exemple GPIO zéro. La bibliothèque utilise uniquement la numérotation Broadcom (BCM) pour les broches. Le concepteur de la bibliothèque Ben Nuttall a expliqué pourquoi dans une interview de RasPi.tv en 2015 :
« La numérotation BOARD peut sembler plus simple, mais je dirais que cela fait penser aux nouveaux utilisateurs que toutes les broches sont communes – alors qu’elles ne le sont pas. Connectez la LED à la broche 11, pourquoi ne pas en connecter davantage aux broches 1, 2, 3 et 4 ? Eh bien 1 est 3 V 3. 2 et 4 sont 5 V. Le manque de conscience de ce que sont les broches peut être dangereux.
Cela dit, il est tout à fait logique d’utiliser des numéros BCM. Étant donné que GPIO Zero va être standard dans la documentation du Raspberry Pi, cela vaut la peine d’apprendre !
Le GPIO zéro est-il vraiment meilleur ?
Bien que cela semble plus simple à première vue, y a-t-il quelque chose qui ne va pas avec la nouvelle bibliothèque ? Comme pour toute nouvelle bibliothèque de codage, c’est une question d’opinion. D’une part, la suppression du code de configuration est idéale pour les codeurs débutants et chevronnés. L’écriture de code est plus directe et plus rapide.
D’autre part, savoir exactement ce qui se passe est important pour l’apprentissage. Prenez le bouton de la documentation pour configurer GPIO Zero comme exemple :
Ce bouton Les modules simplifient la configuration des boutons. Il sait que le bouton est une entrée, utilisez donc le numéro de broche déclaré pour le configurer.Il est également plus facile de vérifier si un bouton est enfoncé, utilisez .is_pressed Détecter l’appui sur le bouton.
Nous avons utilisé cette fonction exacte dans le didacticiel Raspberry Pi Buttons, et c’est un excellent moyen de vous familiariser avec les différences dans la bibliothèque.
Les utilisateurs de la bibliothèque RPi.GPIO remarqueront que les résistances pull-up/pull-down internes du Pi ne sont pas définies dans le code. Cela soulève une question intéressante. Est-il nécessaire que les débutants comprennent les résistances pull-up/pull-down ? Ben Nuttall répond à nouveau à la question :
« Vous pourriez dire que connaître les pull-ups et les pull-downs est une bonne chose, et vous auriez raison – mais pourquoi dois-je enseigner cela le premier jour ?[…] Si vous voulez enseigner l’électronique plus en profondeur, il y a beaucoup de place – mais si vous débutez, cela ne devrait pas être obligatoire. «
Dans l’ensemble, l’approche simple de GPIO Zero peut être une bonne chose pour les débutants comme pour les vétérans. De plus, RPi.GPIO ne va nulle part. Il y retournera toujours si nécessaire.
Est-ce que Python est la seule option ?
Python est le langage bien connu du Pi, mais ce n’est pas la seule option. Si vous êtes déjà familiarisé avec la programmation en C, alors Wiring Pi peut répondre à vos exigences.
Ou, si vous programmez déjà en JavaScript, vous pouvez facilement installer Node.js sur le Pi. L’accès GPIO est disponible via la bibliothèque rpi-gpio npm. Ruby on Rails peut également être installé sur un Raspberry Pi, bien que le Pi ne soit peut-être pas le meilleur moyen d’apprendre Rails !
Toutes ces alternatives, ainsi que les bibliothèques polyglottes comme l’excellent pigpio, rendent le choix d’une bibliothèque déroutant. C’est là que GPIO Zero excelle : pour les débutants qui se demandent comment et par où commencer.
Si vous avez besoin de quelque chose qui ne l’est pas, vous serez parfaitement préparé à plonger dans ces autres bibliothèques à votre propre rythme.
Commencez avec la mise à zéro GPIO vous-même
GPIO Zero est la dernière bibliothèque à faire des vagues pour le Pi, et pour cause. Pour la plupart des utilisateurs, cela rend le codage des broches GPIO plus facile à lire et plus rapide à écrire.
Compte tenu de l’utilisation du Raspberry Pi dans l’enseignement, tout ce qui rend l’apprentissage plus naturel est une bonne chose. Alors que RPi.GPIO a été parfait jusqu’à présent, GPIO Zero prend une bonne idée et la rend encore meilleure.
Une excellente façon de démarrer avec GPIO Zero est de prendre un projet pour débutant comme le capteur de porte musicale et de le porter vers la nouvelle bibliothèque.
A propos de l’auteur