Une introduction au matériel de programmation en Python – Real Python

By | décembre 9, 2019

Expert Python

Êtes-vous intéressé par l'Internet des objets, la domotique et les appareils connectés? Vous êtes-vous déjà demandé ce que ce serait de construire un blaster, une épée laser ou même votre propre robot? Si oui, alors vous avez de la chance! MicroPython peut vous aider à faire toutes ces choses et plus encore.

Dans ce didacticiel, vous découvrirez:

  • le histoire de MicroPython
  • le différences entre MicroPython et d'autres langages de programmation
  • le Matériel vous allez utiliser pour créer des appareils
  • le processus pour configurer, coder et déployer votre propre projet MicroPython

Tout arrive Python

La popularité de Python a explosé ces dernières années. De nos jours, il est utilisé partout, du DevOps à l'analyse statistique, et même dans les logiciels de bureau. Mais pendant longtemps, il y avait un domaine où l'utilisation de Python était manifestement manquante. Les développeurs travaillant avec des microcontrôleurs n'avaient pas encore adopté le langage.

Tout cela a changé en 2013 lorsque Damien George a lancé une campagne Kickstarter. Damien, un étudiant de premier cycle à l'Université de Cambridge, était un passionné de programmation de robots. Il voulait déplacer le monde Python des machines qui fonctionnaient avec des capacités en gigaoctets vers les kilo-octets. Sa campagne Kickstarter était une tentative de soutenir son développement alors qu'il transformait sa preuve de concept en une implémentation terminée.

De nombreux développeurs ont sauté sur l'occasion, non seulement pour utiliser Python sur des microcontrôleurs, mais aussi pour obtenir une première version du matériel de référence de Damien, qui a été spécialement conçu pour la tâche! En fait, à la fin de la campagne, Damien avait dépassé son objectif de 15 000 £. Grâce à plus de 1 900 contributeurs, il a atteint un peu moins de 100 000 £.

Python au-delà du bureau

Enfin, Python avait quitté les ordinateurs de bureau et les serveurs pour entrer dans le monde des capteurs, des actionneurs, des moteurs, des écrans LCD, des boutons et des circuits. Bien que cela présente de nombreux défis, les opportunités sont également nombreuses. Le matériel de bureau et de serveur nécessite des processeurs gigahertz, des gigaoctets de RAM et des téraoctets de stockage. Ils ont également besoin de systèmes d'exploitation à part entière, de pilotes de périphériques et d'un véritable multitâche.

Dans le monde des microcontrôleurs, cependant, MicroPython est le système d'exploitation. Essentiellement, il se trouve au-dessus des processeurs avec des vitesses d'horloge remontant aux années 1980 et 90. MicroPython n'a aucune aide pour gérer toutes les subtilités de l'exécution de code, des E / S, du stockage, du démarrage, etc. Si vous souhaitez vous connecter au matériel, vous avez besoin de tout le code pour l'activer.

Pourtant, Damien a réussi à intégrer une implémentation Python puissante, compacte et performante dans ces ordinateurs miniatures. Cela a ouvert un tout nouveau monde de potentiel. Si vous souhaitez en savoir plus sur les différences entre CPython et MicroPython, vous pouvez consulter une ventilation complète sur le référentiel officiel de GitHub.

L'électronique comme passe-temps et cheminement de carrière

MicroPython est soutenu par une communauté diversifiée de Pythonistes qui ont un grand intérêt à voir le projet réussir. En plus de tester et de prendre en charge la base de code elle-même, les développeurs proposent des didacticiels, des bibliothèques de code et des ports matériels, prenant le projet bien au-delà de ce que Damien aurait pu réaliser seul.

Au cours des années, MicroPython a attiré des professionnels et des amateurs d'autres plates-formes qui voient le potentiel et la commodité de la langue. Ces développeurs peuvent provenir de plates-formes plus matures, comme Arduino ou PIC. Beaucoup ont réalisé les avantages de l'utilisation de MicroPython, ainsi que la spécification de Python et MicroPython ensemble, notamment pour un prototypage rapide et un délai de commercialisation plus rapide.

Alors, MicroPython est-il prêt pour un travail sérieux et critique? L'ESA, l'Agence spatiale européenne, semble le penser! Ils ont aidé à financer les travaux de Damien sur MicroPython parce qu'ils voulaient utiliser Python dans l'espace. Vous verrez de plus en plus une masse critique d’amateurs et d’apprenants entrer dans le monde universitaire, puis dans le monde professionnel de l’électronique. À ce stade, MicroPython va vraiment décoller.

Python et STEM

Les sujets STEM sont sous le microscope éducatif depuis plusieurs années, ce qui a conduit à une explosion de projets et de produits ciblant la classe. Python et MicroPython sont tous deux bien placés pour les enseignants et les étudiants. La syntaxe de base et l'interpréteur fourni prêtent ces langues à un environnement d'apprentissage efficace. Le fait qu'aucun environnement de développement ne soit requis n'est qu'un bonus supplémentaire!

Il y a quelques années, la BBC a lancé son Micro: Bit projet pour amener plus d'enfants dans l'informatique au-delà des applications de bureau. Leur objectif était de mettre une carte microcontrôleur entre les mains de chaque élève du Royaume-Uni. Damien, par l'intermédiaire de son voisin, a acquis une de ces cartes et a rapidement fait fonctionner son code. Des milliers de salles de classe ont soudainement eu la possibilité d'exécuter Python dans leurs cours!

Plus récemment, Edublocks a pris le Micro: Bit et activé une expérience Python glisser-déposer de type Scratch. Cela a permis à encore plus d'enfants de faire l'expérience des microcontrôleurs et de la programmation robotique pour la première fois. Les dons de Patreon soutiennent la croissance continue du projet.

Informatique physique

En ce qui concerne MicroPython, qu'est-ce que informatique physique signifier? Habituellement, votre projet comprendra trois éléments:

  1. Contribution: Un bouton, un signal, un événement Internet ou une lecture de capteur prend des données.
  2. En traitement: Un microcontrôleur traite l'entrée et met à jour la sortie.
  3. Sortie: Cela peut être envoyé sous la forme d'un moteur tournant, d'une LED allumée, d'un compteur changeant, d'un message envoyé ou d'un événement similaire.

Ces éléments seront généralement connectés par des fils et alimentés par une source d'alimentation.

Qu'est-ce qu'un microcontrôleur?

Vous savez peut-être qu'un microcontrôleur est petit et pas aussi puissant que l'ordinateur sur votre bureau ou dans votre rack de serveur. Ce que vous ne savez peut-être pas, c'est que les microcontrôleurs sont tout autour de vous, ajoutant de l'intelligence et du contrôle à vos appareils. Ils sont intégrés dans tout, des appareils électroménagers et des configurations de sécurité à la maison aux stimulateurs cardiaques, aux systèmes CVC et plus encore.

Microcontrôleurs faire des choses relativement simples jour après jour, de manière fiable et dans un emballage compact. Ils compressent un processeur, de la mémoire et des E / S en une seule puce à usage général, plutôt que d'exiger une carte entière de puces qui s'associent pour effectuer une tâche. Le code qu'ils exécutent est appelé firmware, qui est flashé ou gravé sur la mémoire inscriptible avant de s'exécuter.

Alors que ceux qui ont grandi avec les premiers micro-ordinateurs (comme le ZX81 et le Commodore Vic20) peuvent trouver ces puces incroyablement puissantes, techniquement, vous avez bien plus de puissance disponible dans votre montre intelligente. Pourtant, les microcontrôleurs sont extrêmement utiles, même si leur puissance de traitement et leurs capacités de mémoire sont limitées. Beaucoup peut être fait avec ces petits gars!

Pourquoi MicroPython?

Si ces microcontrôleurs proliféraient bien avant que MicroPython ne soit rêvé, alors quels avantages MicroPython vous offre-t-il par rapport aux pratiques traditionnelles?

Premièrement, la langue est plus accessible aux débutants que les langues concurrentes, tout en étant suffisamment puissante pour les cas d'utilisation industrielle. Vous pouvez passer de l'apprentissage des bases à un travail réel, et rapidement.

Deuxièmement, Python permet une rétroaction rapide. En effet, vous pouvez entrer des commandes de manière interactive et obtenir une réponse à l'aide du REPL. Vous pouvez même modifier votre code et l'exécuter immédiatement, plutôt que de parcourir code-compilation-téléchargement-exécution cycles.

Enfin, la richesse du code et de l'expérience Python signifie que vous pouvez faire certaines choses plus rapidement et facilement en tant que programmeur Python. Je trouve que la bibliothèque de requêtes Python, la gestion des chaînes et les outils pour traiter JSON sont beaucoup plus faciles à utiliser dans le monde MicroPython que C ++, par exemple.

Qu'en est-il du C ++?

C ++ est rapide, compact et disponible partout. Il existe des tonnes de programmeurs C ++ et une riche communauté de développeurs Arduino et PIC prêts à vous aider. Le C ++ n'est-il donc pas un meilleur choix?

À mon avis, MicroPython bat C ++ dans facilité d'utilisation et commodité. La syntaxe C ++ n'est pas aussi facile à comprendre tout de suite. De plus, le code doit être compilé puis transféré sur votre carte avant d'obtenir un résultat, vous avez donc besoin d'un compilateur à portée de main.

Maintenant, évidemment, les outils s'améliorent, mais MicroPython a toujours l'avantage. Alors que C ++ peut avoir un avantage de vitesse, MicroPython est assez rapide pour la plupart des applications. De plus, si vous avez vraiment besoin de C ++, vous pouvez même appeler votre code C ++ depuis MicroPython!

Qu'en est-il de l'assembleur?

Pour les performances brutes, il n'y a pas de meilleur assembleur. Cependant, cela n'exclut pas non plus MicroPython.

Encore une fois, MicroPython a tendance à être assez rapide. Si vous avez besoin de cette puissance de niveau le plus bas, vous pouvez ajouter assembleurs en ligne à vos projets MicroPython.

Et BASIC?

Si vous deviez allumer l'un de ces vieux micro-ordinateurs de l'arrière dans la journée, alors ils auraient certainement démarré DE BASE. À tout le moins, ils auraient eu un dialecte de BASIC sous la main. Ce langage a servi d'introduction à la programmation pour toute une génération. Cela inclut Elon Musk, qui a apparemment appris à coder sur un Vic 20.

Aujourd'hui, l'éclat de BASIC s'est quelque peu terni. Python et d'autres langages basés sur des blocs l'ont remplacé dans les espaces éducatifs, et il ne fait guère de brèche dans l'industrie technologique. Python possède tous les avantages de BASIC, sans aucune limitation.

Qu'en est-il du Raspberry Pi?

Tarte aux framboises, qui gère Python, est également fortement présent dans l'éducation. Il a trouvé une niche dans l'électronique et l'informatique physique grâce à ses broches d'E / S polyvalentes. Le Raspberry Pi est également un ordinateur de bureau Linux à part entière. Il a beaucoup de puissance de processeur, de mémoire et de capacité de stockage, et il a même un GPU.

Cependant, ce dernier aspect peut en fait être une raison pour ne pas choisir le Pi et opter pour une carte microcontrôleur à la place! La possibilité d'exécuter des applications de bureau et du multimédia est fantastique, surtout lorsque vos projets peuvent avoir besoin de cette puissance brute. Cela pourrait être le cas pour l'IA, les flux vidéo et les projets de base de données, par exemple.

Mais cela peut poser des problèmes lorsque votre cas d'utilisation l'exige traitement en temps réel. Si vous avez besoin d'un timing très précis, vous ne voulez pas que votre code attende pendant qu'il rattrape des dizaines de processus différents qui veulent tous s'exécuter en même temps.

Si vous voulez une entrée analogique, le Pi nécessitera du matériel supplémentaire. En revanche, la plupart des microcontrôleurs capables d'exécuter MicroPython ont au moins une entrée analogique, et peut-être même plus. De plus, le Pi n'est pas tout à fait aussi robuste et il peut être plus cher. Pour cette raison, il peut être plus judicieux sur le plan financier de laisser un microcontrôleur dans votre projet, plutôt qu'un Pi entier.

Vous n'avez pas à choisir l'un ou l'autre. Peut-être que l'association d'un Raspberry Pi avec un microcontrôleur est la meilleure solution pour votre projet. Par exemple, vous pouvez utiliser le Pi pour la puissance de traitement et le microcontrôleur pour interfacer avec le matériel.

Matériel MicroPython

Si vous souhaitez essayer MicroPython, c'est parfait! Vous aurez besoin de matériel compatible pour installer MicroPython. Heureusement, il existe de nombreuses options, allant des produits abordables aux produits haut de gamme. Il existe quelque chose pour chaque portefeuille et chaque cas d'utilisation, alors prenez le temps de choisir la solution qui vous convient.

Conçu pour Python

Le Kickstarter qui a lancé MicroPython a également lancé son matériel associé. MicroPython Pyboard est désormais à la version 1.1.

le Pyboard est l'une des planches les mieux spécifiées. Il est basé sur le STM32 et possède de nombreux GPIO. Il y a aussi un slot SD, un accéléromètre et RTC, avec une capacité de 168 MHzf. Si vous pouvez le trouver en stock, cela vous coûtera environ 40 $ USD.

ESP8266 ou ESP32

À l’autre extrémité de l’échelle des prix se trouvent des planches basées ESP8266. Ces cartes n'ont qu'une seule entrée analogique, et il n'y a pas autant de broches que le Pyboard. Cependant, ils ont une capacité WiFi. Vous pouvez les trouver dans des tableaux conviviaux (comme le NodeMCU) pour 10 $ ou moins.

le ESP32 est le grand frère de l'ESP8266. Il augmente la puissance et les capacités tout en ajoutant Bluetooth à l'ensemble de fonctionnalités, pour un petit coût supplémentaire. L'une des meilleures versions de ces cartes est la pile M5. Cet appareil est livré avec un haut-parleur peizo, une batterie, un lecteur de carte et un écran couleur.

BBC Micro: Bit

le Micro: Bit est une carte compacte basée sur le microcontrôleur nordique nRF51822. Il a Bluetooth LE intégré et une détection de température, plus un accéléromètre, quelques boutons d'action et une grille LED 5×5.

Si vous êtes au Royaume-Uni, vous disposez peut-être déjà d'une de ces cartes. Ils ont été distribués aux écoliers dans l'espoir d'inspirer une nouvelle génération de codeurs. De nombreuses planches inspirées par le Micro: Bit commencent à apparaître, il est donc de plus en plus populaire!

Cartes alimentées par Adafruit et CircuitPython

Peu de temps après que MicroPython a commencé à accélérer, Adafruit a produit une fourchette qu'ils appellent CircuitPython. Cependant, il existe quelques différences principales entre les deux.

La première est que CircuitPython offre un support pour la gamme de matériel Adafruit. Une autre différence est le fait que la plupart des implémentations Adafruit présentent la carte comme un lecteur connecté par USB. Dans ces cas, l'ajout de votre code est aussi simple que de le faire glisser sur le disque.

La carte la plus riche en fonctionnalités de la gamme premium Adafruit est la CircuitPlayground Express, avec un module complémentaire Crickit en option. Lorsque vous combinez ces deux cartes, vous aurez des broches, des capteurs, des pilotes de moteur, des LED RVB, etc. Si vous recherchez une solution tout-en-un, alors c'est celle à vérifier.

Malheureusement, Adafruit a perdu la compatibilité avec l'ESP8266, même pour sa propre carte Feather basée sur ESP8266. Au lieu de cela, ils ont choisi d'utiliser l'ESP32 uniquement en tant que co-processeur WiFi dans les futures versions.

Flux de travail MicroPython

Si vous connaissez la programmation Arduino ou PIC, vous pouvez vous attendre à parler d'abord des compilateurs, des environnements de développement et de la chaîne d'outils. Cependant, MicroPython est un peu différent à première vue.

REPL

Avec MicroPython, comme avec Python, le langage peut être venu avec votre matériel, et vous avez la possibilité de travailler avec lui de manière interactive. Il existe deux façons d'obtenir une session interactive:

  1. Utilisez une connexion de terminal série: Cela se fait souvent via la ligne de commande, ou peut-être un IDE.
  2. Utilisez WebREPL: Il s'agit d'une option pour les cartes avec WiFi.

Pour obtenir un REPL série sur un Mac, par exemple, vous pouvez exécuter le programme de terminal inclus Écran et spécifiez votre appareil et le débit en bauds:

$ écran /dev/tty.wchusbserial1430 115200

Vous pouvez trouver votre appareil en répertoriant les connexions série attachées:

Le processus est similaire à ce que vous feriez dans le terminal Linux.

Sous Windows, PuTTY est une application de terminal populaire. Il y en a aussi un qui s'appelle Tera Term. Dans les deux cas, connectez-vous simplement au port COM qui apparaît lorsque vous connectez votre appareil et sélectionnez 115 200 comme débit en bauds.

Une fois que vous avez une connexion REPL, vous pouvez entrer des commandes comme vous le feriez à partir de votre session interactive Python. Dans MicroPython, cette interface est également l'endroit où vous souhaiterez peut-être effectuer un travail de style OS simple, comme la suppression de fichiers ou la création de dossiers.

Outils de ligne de commande

RShell de Dave Hyland est un ensemble d'outils complet pour travailler avec vos projets MicroPython.

Il existe un autre excellent outil en ligne de commande pour interagir avec les cartes MicroPython appelé Ampy. Initialement développé par Adafruit, il a maintenant été repris par un membre de la communauté, car Adafruit se concentre uniquement sur son propre matériel.

IDE MicroPython

Il existe un plugin PyCharm qui ajoute la prise en charge de MicroPython à votre IDE. Il est disponible directement sur le marché des plugins:

MicroPython Pycharm

Pour les cartes Micro: Bit et CircuitPython, le meilleur éditeur en ce moment est le Mu Editor de Nicholas Tollervey. Sinon, gardez un œil sur uPyCraft, qui semble avoir beaucoup de promesses et est déjà assez utile.

Une fois que vous avez connecté le bon port série et sélectionné votre type d'appareil, vous pourrez parcourir l'appareil:

Connexion série MicroPython

Le type de votre appareil sera ESP8266, ESP32 ou Micro: Bit. Vous pouvez maintenant interagir dans le REPL!

Configuration de MicroPython sur votre carte

Il y a un avantage à choisir uPyCraft, et c'est la possibilité de graver facilement le micrologiciel MicroPython sur votre carte sans avoir à utiliser des outils de ligne de commande. Vous pouvez choisir le firmware par défaut uPyCraft ou un firmware que vous avez téléchargé:

MicroPython Burn Firmware

Le BBC Micro: Bit apparaît comme un lecteur de disque. Lorsque vous utilisez Mu ou l'éditeur Web, ils produisent des fichiers que vous pouvez déposer directement sur ce disque. Si vous utilisez une carte ESP8266 ou ESP32 avec uPyCraft, vous pouvez également installer Python ESPTool avec pip et configurer le micrologiciel de votre carte à l'aide de cela.

D'autres cartes peuvent venir avec MicroPython ou CircuitPython installé, ou même utiliser un programme d'installation par glisser-déposer. Cependant, ces types de cartes peuvent être corrompus ou entrer dans des boucles infinies. Assurez-vous de prendre le temps de consulter la documentation de votre carte pour savoir comment remplacer le micrologiciel.

Création et déploiement de votre code

Pour exécuter votre code, dans la plupart des cas, vous allez créer .py fichiers texte et exécutez-les sur votre périphérique MicroPython. Ce processus est similaire à ce que vous feriez avec CPython. Vous allez transférer les fichiers sur votre carte de l'une des deux manières suivantes:

  1. Utilisez votre IDE. Cela peut être Mu, uPyCraft ou quelque chose de similaire.
  2. Utilisez un outil en ligne de commande. Cela peut être RShell, Ampy ou quelque chose de similaire.

Lorsque les appareils exécutant MicroPython démarrent, ils recherchent un fichier appelé boot.py. Si ce fichier est trouvé, l'appareil l'exécutera automatiquement. Vous pouvez également exécuter .py fichiers à partir d'une invite REPL:

exec(ouvrir('my-program.py').lis())

En fait, cela est similaire à ce que fait uPyCraft lorsque vous exécutez votre Python modifié. Il transfère le fichier sur votre carte, puis l'exécute via le REPL.

Écrire votre code MicroPython

Vous commencerez par un projet traditionnel «Bonjour, monde!». Vous pouvez le faire dans le REPL en vous connectant au port série correct et en entrant les informations suivantes:

Vous devriez voir la sortie suivante:

MicroPython Hello World

Vous avez confirmé que votre configuration fonctionne.

Création d'une sortie numérique

Maintenant, modifions le type de sortie. En utilisant le code suivant, vous pouvez faire clignoter la LED intégrée:

importation temps
importation machine
blueled = machine.Épingle(2, machine.Épingle.EN DEHORS)

# Clignote 10 fois
pour je dans intervalle(1,11):
    blueled.valeur(0)
    temps.sommeil(0,5)
    blueled.valeur(1)
    temps.sommeil(0,5)

impression("TERMINÉ!")

Vous importez temps, ce qui vous permet d'insérer des délais. Vous importez également machine, un module qui vous permet d'accéder facilement aux broches d'E / S de votre carte. Vous utilisez ce module pour configurer un objet appelé blueled, que vous définissez comme étant Broche 2. (Sur d'autres planches, il peut être possible Broche 16). Ensuite, vous le définissez comme une broche de sortie. Vous devriez voir la sortie suivante:

MicroPython Blink LED

Vous pouvez remarquer que sur l'ESP8266, la LED s'allume lorsqu'elle est éteinte et s'éteint lorsqu'elle reçoit une valeur positive. Bizarre, mais vrai!

Et si vous n'avez pas de LED intégrée ou si vous souhaitez allumer une LED qui n'est pas sur votre carte? Vous aurez besoin d'une résistance de taille appropriée, telle qu'une résistance de 220 ohms. Vous devrez le connecter au sol et à la courte jambe de votre LED. La longue jambe positive de votre LED se connectera à la broche GPIO 2. Sur la carte Wemos D1 Uno, GPIO 2 est appelé Digital Pin 9 sur la face avant de la carte. Il a le numéro GPIO en dessous.

Dans le cas d'une LED externe, elle s'allume lorsque la valeur est 1 ou sur:

LED MicroPython sur une planche à pain

Vous pouvez voir que la broche a été allumée.

LED décolorées

Dans l'exemple précédent, vous avez utilisé un pour boucle, mais votre matériel peut réellement clignoter la LED elle-même. Pour ce faire, définissez la sortie de broche sur PWM, Qui veut dire Modulation de largeur d'impulsion (PWM).

Cela vous permet de créer un signal de sur et de impulsions. Lorsque vous allumez et éteignez une LED très rapidement plusieurs fois par seconde, il semble que la LED soit réglée sur une certaine luminosité en raison du fonctionnement de nos yeux. Voici à quoi ressemblerait votre code:

de machine importation Épingle
de machine importation PWM
importation temps

# Réglez notre broche 2 sur PWM
pwm = PWM(Épingle(2))

# Luminosité entre 0 et 1023
pwm.devoir(700)

# Fréquence en Hertz
pwm.freq(1)

Dans ce nouveau code, vous définissez la luminosité et la fréquence de clignotement en Hertz, puis laissez le matériel prendre le relais.

Vous pouvez également utiliser PWM pour estomper et éteindre la LED:

de machine importation Épingle
de machine importation PWM
importation temps

# Réglez notre broche 2 sur PWM
pwm = PWM(Épingle(2))

# Fréquence = 100 Hz
pwm.freq(100)

tandis que 1:
  # Luminosité entre 0 et 1023
  pour luminosité dans intervalle (0, 1023, 100):
    pwm.devoir(luminosité)
    impression(luminosité)
    temps.sommeil(0,1)

  # Luminosité entre 1023 et 0
  pour luminosité dans intervalle (1023, 0, -100):
    pwm.devoir(luminosité)
    impression(luminosité)
    temps.sommeil(0,1)

Ce code donne un effet agréable et doux:

MicroPython Fade LED PWM

Si vous utilisez la LED intégrée, la lumière peut s’éteindre puis s’intégrer.

Conclusion

Il n’a jamais été aussi facile pour vous de programmer des robots, des microcontrôleurs, de l’électronique et d’autres matériels. Traditionnellement, pour programmer ces appareils, vous deviez utiliser des langages de bas niveau comme l'assembleur ou C ++, et sacrifier beaucoup de fonctionnalités. Tout cela a changé avec l'introduction de MicroPython, une version de Python 3 entassée dans la petite capacité des petits appareils informatiques physiques!

Dans ce didacticiel, vous vous êtes plongé dans MicroPython et dans le monde de matériel électronique. Vous avez appris l'histoire de MicroPython et comment il se compare à d'autres plates-formes. Vous avez également parcouru le workflow MicroPython, déployé du code sur votre propre carte et créé un effet réel.

MicroPython continue de croître. Les développeurs de la communauté ajoutent toujours de nouveaux codes, outils, projets et didacticiels. Il n'y a jamais eu de moment plus excitant pour être développeur MicroPython!

[ad_2]