Le passé, le présent et l’avenir de CircuitPython

Les microcontrôleurs modernes comme le RP2040 et l’ESP32 sont vraiment des merveilles d’ingénierie. Pour un changement de poche littéral, vous pouvez obtenir une puce dotée d’un processeur multicœur fonctionnant à des centaines de mégahertz, de beaucoup de RAM et, le plus souvent, d’une forme de connectivité sans fil. Leurs capacités ont été tout simplement révolutionnaires pour les bricoleurs. Chaque jour, vous pouvez voir sur ces pages des projets qui n’auraient tout simplement pas été possibles à l’époque où l’Arduino 8 bits était tout ce à quoi la plupart des gens avaient accès.

Limor Frit

Grâce aux performances accrues de ces MCU, les pirates et les fabricants ont même désormais le choix du langage de programmation qu’ils souhaitent utiliser. Alors que C est toujours le langage de choix pour les tâches gourmandes en ressources processeur, pour de nombreuses applications, Python est désormais une option viable sur une large gamme de matériel.

Cela offre une expérience beaucoup moins intimidante pour les nouveaux arrivants, non seulement parce que le langage est plus indulgent, mais aussi parce qu’il supprime le flux de travail traditionnel compile-flash-pray. Bien sûr, cela ne signifie pas que les wranglers MCU les plus expérimentés ne sont pas invités à la fête; ils devront peut-être simplement élargir un peu leurs horizons.

Pour en savoir plus sur ce changement de paradigme intéressant, nous avons invité les gens d’Adafruit au Hack Chat afin que la communauté puisse poser des questions sur CircuitPython, leur variante Python interne qui fonctionne aujourd’hui sur plus de 400 appareils.

État de l’Union

Limor « ladyada » Fried, Phil Torrone et Scott Shawcroft ont couvert tellement de terrain pendant le chat qu’il a duré deux fois plus longtemps que prévu initialement. Comme d’habitude lorsqu’Adafruit rejoint le Hack Chat, l’événement a été diffusé simultanément sur sa chaîne YouTube, ce qui a suscité encore plus de questions et de commentaires. C’était un peu comme passer une heure à boire dans une lance à incendie, mais nous dirions que le résultat final en valait la peine.

Version RP2040 d’Adafruit du Bus Pirate

La discussion a commencé par des discussions sur les événements actuels, tels que le développement en cours du mode hôte USB, qui permettrait à des éléments tels que les claviers USB d’être branchés directement sur une carte exécutant CircuitPython. L’équipe a également parlé un peu du prochain « My Little Hacker » basé sur ESP32, qui a été conçu pour remplacer les panneaux d’effets sonores utilisés dans les jouets pour enfants.

Nous avons également entendu un peu parler du travail d’Adafruit pour créer un remplaçant moderne du légendaire Bus Pirate. Les puces utilisées dans la conception originale de Dangerous Prototypes ne sont apparemment plus produites, alors Adafruit a mis au point sa propre version de l’outil de débogage électronique utilisant le RP2040. Avec l’avantage de l’USB natif et du matériel d’E/S programmables (PIO) de la puce, ainsi que la flexibilité de CircuitPython, le nouveau gadget promet d’être un successeur plus que digne. Reste à savoir comment l’appeler…

L’histoire de deux pythons

Après avoir mis les gens au courant des nouveautés dans le monde de CircuitPython, l’équipe a été confrontée à une question assez épineuse : pourquoi CircuitPython existe-t-il en premier lieu ? Ceux qui connaissent la situation se souviendront peut-être que CircuitPython est en fait dérivé de MicroPython, et certains ont fait valoir qu’Adafruit aurait mieux fait de prendre en charge un projet open source existant plutôt que de consacrer du temps et des efforts de développement à ce qui pourrait être considéré comme un concurrent.

MicroPython a été créé par Damien George en 2013

En réponse, Scott et Limor ont donné un aperçu fascinant des origines de CircuitPython et de la décision de le transformer en un projet distinct. La version courte de l’histoire est que les équipes respectives avaient des désaccords sur la façon de gérer certaines choses, les principales étant les API matérielles.

Plus précisément, Adafruit voulait pouvoir utiliser les mêmes bibliothèques qu’ils avaient déjà portées sur Python standard, mais cela ne serait pas possible sous MicoPython, qui avait remplacé certaines fonctions de base de bas niveau par des versions modifiées dans le but de réduire la façon dont beaucoup d’espace qu’ils prendraient en flash. Cela signifiait également que le code MicroPython ne fonctionnerait pas nécessairement de la même manière s’il était exécuté sous l’interpréteur Python standard, ce que Limor trouvait particulièrement gênant. En tant que tel, il a été décidé de transformer CircuitPython en un projet clairement distinct plutôt que d’essayer simplement de faire approuver leurs modifications.

Cela dit, Adafruit continue de soutenir financièrement MicroPython et ne les considère pas en interne comme des projets concurrents étant donné qu’ils se concentrent sur le marché de l’éducation et des loisirs. Ils considèrent également que CircuitPython est en aval de MicroPython, c’est-à-dire que l’intention est d’intégrer éventuellement de nouvelles fonctionnalités et capacités ajoutées à MicroPython dans CircuitPython. Naturellement, certains dans le chat ont demandé si les projets pourraient un jour fusionner en un seul. Scott a déclaré que l’idée revenait régulièrement dans les discussions avec l’équipe MicroPython, et bien qu’il y ait encore des problèmes fondamentaux qui devraient être résolus, la possibilité est là.

Faire de CircuitPython le vôtre

Une fois le débat existentiel terminé, la conversation s’est ensuite déplacée vers l’introduction de nouvelles cartes dans la famille CircuitPython. À savoir, ce qu’un individu doit faire pour s’assurer que sa propre création personnalisée fonctionnera comme prévu dans l’environnement.

Le « My Little Hacker » sert également d’appareil de référence CircuitPython.

La réponse simple est que tant que vous utilisez l’un des chipsets de base qu’ils prennent en charge comme l’ESP32, il est relativement simple de régler les petits détails. Il existe même un guide officiel d’Adafruit sur la façon d’ajouter votre carte personnalisée à la liste du matériel pris en charge.

Un autre sujet abordé est la fonctionnalité unique de CircuitPython qui arrête le programme en cours d’exécution et le recharge à partir du fichier une fois que le système de fichiers de stockage de masse USB voit que le fichier source a été enregistré. Cela a été ajouté spécifiquement pour rendre le développement aussi simple que possible, en particulier dans les environnements éducatifs où les ordinateurs de la classe peuvent ne pas avoir de logiciel installé plus avancé qu’un simple éditeur de texte. Pour faciliter cette fonctionnalité, il a été décidé que l’arrêt du programme devrait ramener le système à une condition de « table rase » qui ne conserve aucune information d’état à partir du moment où le code était en cours d’exécution.

L’inconvénient est que la même chose se produit même si le programme a été arrêté manuellement avec Ctrl+C, ce qui peut frustrer les utilisateurs plus avancés qui cherchent à déboguer leur programme en examinant l’état dans lequel il était lorsqu’il a été arrêté. Après quelques discussions techniques, il a été décidé qu’il devrait être possible de désactiver éventuellement cette fonctionnalité pour ceux qui souhaitent plus de contrôle sur l’exécution de leur code. Scott a déclaré qu’il serait prêt à donner un coup de main si quelqu’un dans la communauté souhaitait implémenter une telle capacité et la soumettre en tant que correctif, et Limor a commenté qu’elle pourrait être officiellement fusionnée dans CircuitPython tant qu’elle n’affecterait pas la fonctionnalité par défaut. .

En avant et en haut

Alors que les choses commençaient à se calmer, plusieurs autres sujets ont été abordés, tels que l’adoption de TinyUSB dans l’industrie, les défis liés à la prise en charge du stockage de masse USB et les correctifs développés par la communauté pour les nouveaux protocoles RF tels que Zigbee et ESP-NOW. Il y a vraiment une mine d’informations techniques contenues dans le flux en direct enregistré ; Si vous êtes intéressé par les rouages ​​​​et les boulons de CircuitPython, il y a certainement de pires façons de passer des heures de votre temps que de vous installer et de regarder le tout.

Un merci spécial à Limor, Phi et Scott pour nous avoir emmenés dans cette visite éclair d’où CircuitPython a été et où il va. Il est facile de se laisser submerger lorsqu’il y a tant de développements actifs en cours, donc obtenir ce type de point de vue d’initié est extrêmement précieux pour ceux qui cherchent à plonger leurs orteils dans les eaux en mouvement rapide de Python nu.


Le Hack Chat est une session de chat en ligne hebdomadaire animée par des experts de premier plan de tous les coins de l’univers du piratage matériel. C’est un excellent moyen pour les pirates de se connecter de manière amusante et informelle, mais si vous ne pouvez pas le diffuser en direct, ces articles de synthèse ainsi que les transcriptions publiées sur Hackaday.io vous permettent de ne rien manquer.

François Zipponi
Je suis François Zipponi, éditorialiste pour le site 10-raisons.fr. J'ai commencé ma carrière de journaliste en 2004, et j'ai travaillé pour plusieurs médias français, dont le Monde et Libération. En 2016, j'ai rejoint 10-raisons.fr, un site innovant proposant des articles sous la forme « 10 raisons de... ». En tant qu'éditorialiste, je me suis engagé à fournir un contenu original et pertinent, abordant des sujets variés tels que la politique, l'économie, les sciences, l'histoire, etc. Je m'efforce de toujours traiter les sujets de façon objective et impartiale. Mes articles sont régulièrement partagés sur les réseaux sociaux et j'interviens dans des conférences et des tables rondes autour des thèmes abordés sur 10-raisons.fr.