Le Raspberry Pi est l'ordinateur parfait pour apprendre. Le système d'exploitation Raspbian basé sur Linux intègre Python, ce qui en fait un excellent premier système pour les codeurs débutants. Ses broches d'entrée/sortie à usage général (GPIO) permettent aux créateurs en herbe d'expérimenter facilement des projets électroniques de bricolage.
C'est particulièrement facile lorsque vous utilisez des bibliothèques de code qui contrôlent ces broches, et la populaire bibliothèque Python RPi.GPIO est un excellent exemple d'une telle bibliothèque. Mais est-ce le meilleur chemin pour les débutants ? Rejoignez-nous alors que nous enquêtons.
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. Visant à être intuitif et "convivial", il rationalise le code Python pour la plupart des cas d'utilisation réguliers de Raspberry Pi.
Combinant des pratiques de dénomination simples et des fonctions descriptives, GPIO Zero est plus accessible aux débutants. Même les utilisateurs chevronnés de la bibliothèque RPi.GPIO peuvent la préférer --- et pour comprendre pourquoi, examinons comment RPi.GPIO se compare à GPIO Zero.
Rien. Rien du tout. RPi.GPIO a été publié début 2012 par le développeur Ben Croston. Il s'agit d'une bibliothèque robuste permettant aux utilisateurs de contrôler les broches GPIO à partir du code. Il figure dans presque tous les projets pour débutants que nous avons couverts.
Malgré son utilisation intensive, RPi.GPIO n'a jamais été conçu pour les utilisateurs finaux. C'est un témoignage de la bonne conception de RPi.GPIO que tant de débutants l'utilisent néanmoins.
Lorsque vous apprenez le code Python, vous apprenez qu'il doit être facile à lire et aussi court que possible. GPIO Zero vise à couvrir les deux points. Construit sur RPi.GPIO en tant qu'encapsuleur de langage frontal, il simplifie la configuration et l'utilisation du GPIO.
Considérez l'exemple suivant, la configuration et l'allumage d'une LED :
Le code ci-dessus devrait être assez familier à tous ceux qui ont utilisé leur Pi pour contrôler les LED.
La bibliothèque RPi.GPIO est importée et une broche pour la LED est déclarée. Le type de disposition des broches est configuré (les modes BCM et BOARD sont expliqués dans notre guide GPIO) et la broche est configurée en tant que sortie. Ensuite, la broche est activée.
Cette approche est logique, mais la méthode 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 et appeler le led.on() méthode.
Il y a plusieurs raisons pour lesquelles cette méthode de travail est une amélioration de RPi.GPIO.
Premièrement, il répond à l'exigence "facile à lire, aussi court que possible". Bien que les instructions de configuration RPi.GPIO soient assez faciles à comprendre, elles ne sont pas nécessaires. Une LED sera toujours une sortie, donc GPIO Zero configure les broches dans les coulisses. Le résultat est juste trois lignes de code à configurer, puis à allumer une LED.
Vous remarquerez peut-être qu'il n'y a pas de configuration du mode carte dans l'exemple GPIO Zero. La bibliothèque utilise uniquement la numérotation Broadcom (BCM) pour les broches. Le concepteur de la bibliothèque, Ben Nuttall, explique pourquoi dans une interview RasPi.tv en 2015 :
"La numérotation BOARD peut sembler plus simple, mais je dirais que cela amène les nouveaux utilisateurs à penser que toutes les broches sont à usage général --- et elles ne le sont pas. Connectez une LED à la broche 11, pourquoi ne pas en connecter d'autres aux broches 1, 2, 3 et 4 ? Eh bien, 1 est 3V3. 2 et 4 sont 5V. Un manque de connaissance de la fonction des broches peut être dangereux."
En d'autres termes, il est tout à fait logique d'utiliser les numéros BCM. Étant donné que GPIO Zero sera standard dans la documentation Raspberry Pi à l'avenir, cela vaut la peine d'apprendre !
Bien que cela semble plus simple à première vue, la nouvelle bibliothèque a-t-elle des problèmes ? Comme pour toute nouvelle bibliothèque de codage, c'est une question d'opinion. D'une part, la suppression du code de configuration est excellente pour les codeurs débutants et chevronnés. L'écriture de code est plus simple et plus rapide.
D'autre part, savoir exactement ce qui se passe est important pour l'apprentissage. Prenons l'exemple de la configuration d'un bouton de la documentation GPIO Zero :
Le bouton module simplifie la configuration des boutons-poussoirs. Il sait que les boutons sont des entrées, donc utilise le numéro de broche déclaré pour la configuration. La vérification d'une pression sur un bouton est également plus facile, avec le .is_pressed pour détecter les appuis sur les boutons.
Nous avons utilisé cette fonctionnalité exacte dans le didacticiel du bouton Raspberry Pi, qui est un excellent moyen de vous familiariser avec les différences entre les bibliothèques.
Les utilisateurs de la bibliothèque RPi.GPIO remarqueront que les résistances pull-up/pull-down internes du Pi ne sont pas configurées dans le code. Cela soulève une question intéressante. Est-il essentiel que les débutants connaissent les résistances pull-up/down ? Encore une fois, Ben Nuttall a une réponse à cette question :
"Vous pourriez dire qu'il est bon de connaître les tractions et les descentes, et vous auriez raison --- mais pourquoi dois-je enseigner cela le premier jour ? [...] Si vous voulez enseigner l'électronique en plus de profondeur, il y a beaucoup de possibilités pour cela --- mais cela ne devrait pas être obligatoire si vous ne faites que commencer."
Dans l'ensemble, l'approche simple de GPIO Zero est probablement une bonne chose pour les débutants et les vétérans. De plus, RPi.GPIO ne va nulle part. Il sera toujours là pour y revenir si nécessaire.
Python est le langage pour lequel le Pi est connu, mais ce n'est pas la seule option. Si vous êtes déjà familiarisé avec la programmation en langage C, alors Wiring Pi est fait pour vous.
Alternativement, si vous programmez déjà en JavaScript, Node.js peut facilement être installé sur le Pi. L'accès GPIO est disponible via la bibliothèque rpi-gpio npm. Ruby on Rails peut également être installé sur le Raspberry Pi, bien que le Pi ne soit peut-être pas le meilleur moyen d'apprendre Rails !
Toutes ces alternatives, ainsi que des bibliothèques multilingues comme l'excellent pigpio, peuvent rendre 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 êtes à un point où vous avez besoin de quelque chose qu'il ne fournit pas, vous serez plus que prêt à plonger dans ces autres bibliothèques à votre propre rythme.
GPIO Zero est la toute dernière bibliothèque à avoir fait sensation sur le Pi et pour cause. Pour la plupart des utilisateurs, cela rend le codage des broches GPIO plus simple à 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 était 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 musical et de le porter vers la nouvelle bibliothèque.