Article de reference

MicroPython

{{Cite web|url=https://github.com/micropython/micropython/blob/master/LICENSE|title=micropython/LICENSE at master · micropython/micropython|last=George|first=Damien P.|date=4 Ma...

logicielle d'un langage de programmation largement compatible avec Python 3, écrit en C , optimisé pour fonctionner sur un microcontrôleur .

MicroPython se compose d'un compilateur Python en bytecode et d'un interpréteur d'exécution de ce bytecode. L'utilisateur dispose d'une invite de commande interactive (le REPL ) pour exécuter immédiatement les commandes prises en charge. Il inclut une sélection de bibliothèques Python essentielles ; MicroPython comprend également des modules permettant au programmeur d'accéder au matériel de bas niveau.

MicroPython possède bien un assembleur en ligne , ce qui permet au code de s'exécuter à pleine vitesse, mais il n'est pas portable sur différents microcontrôleurs.

Le code source du projet est disponible sur GitHub sous la licence MIT .

Une calculatrice Casio FX-9860GIII, sortie en 2020, et dotée de MicroPython intégré.

MicroPython a été créé à l'origine par le programmeur australien Damien George, suite à une campagne de financement participatif réussie sur Kickstarter en 2013. La campagne Kickstarter initiale a permis de lancer MicroPython avec une carte de développement « pyboard » basée sur un microcontrôleur STM32F4 . Depuis, MicroPython a été développé pour prendre en charge plusieurs architectures ARM . Les architectures prises en charge par la version principale sont : ARM Cortex-M (de nombreuses cartes STM32 , cartes RP2040 , TI CC3200/WiPy, cartes Teensy, série Nordic nRF, SAMD21 et SAMD51), ESP8266 , ESP32 , PIC 16 bits, Unix, Windows, Zephyr et JavaScript. Il existe également de nombreuses versions dérivées pour divers systèmes et plateformes matérielles non pris en charge par la version principale.

En 2016, une version de MicroPython pour le BBC Micro Bit a été créée dans le cadre de la contribution de la Python Software Foundation au partenariat Micro Bit avec la BBC.

En juillet 2017, MicroPython a été dérivé pour créer CircuitPython , une version de MicroPython axée sur l'éducation et la simplicité d'utilisation. MicroPython et CircuitPython prennent en charge des matériels légèrement différents (par exemple, CircuitPython prend en charge les cartes Atmel SAM D21 et D51, mais ne prend plus en charge l'ESP8266). Depuis la version 4.0, CircuitPython est basé sur MicroPython version 1.9.4.

En 2017, Microsemi a réalisé un portage de MicroPython pour l'architecture RISC-V (RV32 et RV64).

En avril 2019, une version de MicroPython pour Lego Mindstorms EV3 a été créée.

En janvier 2021, un portage MicroPython pour le RP2040 (ARM Cortex-M0+, sur Raspberry Pi Pico et autres) a été créé.

Caractéristiques

Capacité à exécuter Python

MicroPython permet d'exécuter du code Python, offrant ainsi aux utilisateurs la possibilité de créer des programmes simples et faciles à comprendre. MicroPython prend en charge de nombreuses bibliothèques Python standard, couvrant plus de 80 % des fonctionnalités des bibliothèques Python les plus utilisées. MicroPython a été conçu spécifiquement pour pallier l'écart de performances généralement constaté entre les microcontrôleurs et Python. Le code Python peut accéder directement au matériel et interagir avec lui, offrant ainsi des possibilités matérielles accrues, inaccessibles avec une application Python classique exécutée sur un système d'exploitation .

portabilité du code

L'utilisation par MicroPython de la technologie de couche d'abstraction matérielle (HAL) permet la portabilité du code développé entre différents microcontrôleurs d'une même famille ou plateforme, ainsi que sur les appareils compatibles avec MicroPython et pouvant le télécharger. Les programmes sont souvent développés et testés sur des microcontrôleurs hautes performances, puis distribués avec l'application finale utilisée sur des microcontrôleurs moins performants.

Modules

MicroPython offre la possibilité, une fois le nouveau code écrit, de créer un module figé et de l'utiliser comme bibliothèque au sein d'un firmware développé . Cette fonctionnalité permet d'éviter le téléchargement répété d'un même code, déjà testé et exempt d'erreurs, dans un environnement MicroPython. Ce type de module est enregistré dans le répertoire des modules du microcontrôleur pour compilation et téléversement. La bibliothèque est ensuite accessible via la commande `import` de Python et peut être réutilisée.

boucle lecture-évaluation-impression

La boucle de lecture-évaluation-affichage (REPL) permet à un développeur de saisir des lignes de code individuelles et de les exécuter immédiatement dans un terminal . Les systèmes Linux et macOS disposent d'émulateurs de terminal permettant d'établir une connexion directe avec la REPL d'un périphérique MicroPython via une connexion USB série . La REPL facilite le test immédiat de différentes parties d'une application : chaque portion de code peut être exécutée et les résultats visualisés. Une fois les différentes portions de code chargées dans la REPL, des fonctionnalités supplémentaires permettent d'expérimenter avec leur comportement.

Commandes REPL utiles (une fois connecté à une console série) :

  • CTRL+C : interruption clavier
  • ): liste les modules intégrés
  • Arduino, qui propose un choix plus restreint de microcontrôleurs prenant en charge ce langage. Contrairement à d'autres plateformes , MicroPython ne dispose pas d' environnement de développement intégré (IDE) ni d'éditeur spécifique.

Syntaxe et sémantique

La syntaxe de MicroPython est empruntée à Python, en raison de son style clair et facile à comprendre, ainsi que de sa puissance. Contrairement à la plupart des autres langages de programmation, elle utilise moins de ponctuation et moins de manipulations syntaxiques afin de privilégier la lisibilité.

blocs de code

MicroPython adopte le style de programmation par blocs de Python, le code spécifique à une fonction , une condition ou une boucle étant indenté. Cela diffère de la plupart des autres langages qui utilisent généralement des symboles ou des mots-clés pour délimiter les blocs. Cette indentation améliore la lisibilité du code MicroPython, la structure visuelle reflétant la structure sémantique. Cette caractéristique essentielle est simple mais importante, car une indentation mal utilisée peut entraîner l'exécution de code dans des conditions incorrectes ou une erreur globale de l' interpréteur .

Le deux-points (:) est le symbole clé utilisé pour indiquer la fin d'une instruction conditionnelle. L'indentation est équivalente à une tabulation ou à 4 espaces.

Opérations

MicroPython a la capacité d'effectuer diverses opérations mathématiques en utilisant des opérations primitives et logiques.

Opérations prises en charge
TaperOpérateurNomExemple
Arithmétique+AjoutComparaisonLogiquebit à bit etde la mémoire .

Les trois types de bibliothèques dans MicroPython :

  • dérivé d'une bibliothèque Python standard (bibliothèques intégrées)
  • bibliothèques MicroPython spécifiques
  • des bibliothèques spécifiques pour faciliter les fonctionnalités matérielles

MicroPython est hautement personnalisable et configurable, le langage différant d'une carte ( microcontrôleur ) à l'autre et la disponibilité des bibliothèques pouvant varier. Certaines fonctions et classes d'un module, voire du module entier, peuvent être indisponibles ou modifiées.

Bibliothèques Python standard dans MicroPython
Nom de la bibliothèqueDescription
tableauopérations sur les tableaux
cmathfournit des fonctions mathématiques pour les nombres complexes
gcéboueur
mathématiquesfournit des opérations mathématiques de base pour les nombres à virgule flottante
systèmeFonctions système ; permet d'accéder aux variables utilisées par l'interpréteur
binasciifonctions de conversion entre binaire et ASCII
collectionsopérations pour les collections et les types de conteneurs qui contiennent divers objets
errnopermet d'accéder aux codes d'erreur
bibliothèque de hachageopérations pour les algorithmes de hachage binaire
tas de qopérations pour implémenter l'algorithme de file d'attente de tas
ioopérations de gestion des flux d'entrée/sortie
jsongère la conversion entre les documents JSON et les objets Python
osfonctions d'accès au système de fichiers et fonctions de base du système d'exploitation
concernantimplémente des opérations de correspondance d'expressions régulières
sélectionnerfonctions pour la gestion des événements sur plusieurs flux
douilleconnexion aux sockets (réseaux), fournissant un accès à l'interface socket
structureeffectue des conversions vers des objets Python en compressant et décompressant des types de données primitifs
tempsassure les fonctions de date et d'heure, notamment la mesure des intervalles de temps et la mise en œuvre de délais.
zlibopérations de décompression des données binaires
Bibliothèques spécifiques à MicroPython
Nom de la bibliothèqueDescription
framebufffournit une mémoire tampon d'images qui peut être utilisée pour créer des images bitmap à envoyer à un écran
machinefonctions permettant d'accéder aux blocs matériels et d'interagir avec eux
micropythonaccès et contrôle des composants internes de MicroPython
réseaufacilite l'installation du pilote réseau, permettant les interactions via les réseaux
ctypesaccéder aux structures de données binaires

Bibliothèques MicroPython personnalisées

Lors de la création d'une nouvelle application, les bibliothèques et pilotes MicroPython standard peuvent s'avérer insuffisants, notamment en termes d'opérations ou de calculs. À l'instar de Python, il est possible d'étendre les fonctionnalités de MicroPython grâce à des bibliothèques personnalisées qui enrichissent les capacités des bibliothèques et du firmware existants.

Dans MicroPython, les fichiers se terminant par .py ont la priorité sur les autres alias de bibliothèque, ce qui permet aux utilisateurs d'étendre l'utilisation et l'implémentation des bibliothèques existantes.

Matériel de support

Avec la croissance continue de l'implémentation et de la popularité de MicroPython, de plus en plus de cartes peuvent l'exécuter. De nombreux développeurs créent des versions spécifiques à chaque processeur, téléchargeables sur différents microcontrôleurs. L'installation de MicroPython sur microcontrôleurs est bien documentée et conviviale. MicroPython simplifie les interactions entre le matériel du microcontrôleur et les applications, offrant un accès à un large éventail de fonctionnalités même dans un environnement aux ressources limitées, et ce, avec une grande réactivité.

Les deux types de cartes utilisées pour exécuter MicroPython :

  • MicroPython est préinstallé lors de la fabrication, ce qui signifie que seul MicroPython peut être exécuté.
  • cartes dotées d'un firmware permettant l'installation de MicroPython.

Exécution du code

Pour transférer un programme sur une carte MicroPython, créez un fichier et copiez-le sur le microcontrôleur pour l'exécuter. Une fois la carte connectée à un périphérique, tel qu'un ordinateur , le lecteur flash de la carte apparaîtra, permettant ainsi le transfert de fichiers. Deux fichiers Python, boot.py et main.py, sont généralement non modifiables. Vous pouvez modifier main.py si vous souhaitez exécuter le programme à chaque démarrage du microcontrôleur ; sinon, les programmes seront exécutés via la console REPL.

Pyboard

La carte pyboard est la carte microcontrôleur officielle MicroPython qui prend entièrement en charge les fonctionnalités logicielles de MicroPython. Les caractéristiques matérielles de la pyboard incluent :

Le processus de démarrage

La carte PyBoard possède un disque interne dont le système de fichiers /flashest stocké dans sa mémoire flash. De plus, une carte microSD/sd peut être insérée dans un emplacement dédié et est accessible via [adresse manquante] . Au démarrage, la PyBoard doit sélectionner un système de fichiers (par exemple, `/etc/pyboard` /flashou `/etc/pyboard`) pour démarrer /sd, le répertoire courant étant défini sur `/etc/pyboard` /flashou /sd`/etc/pyboard`. Par défaut, si une carte SD est insérée, `/ /sdetc/pyboard` est utilisé ; sinon, `/etc/pyboard` /flashest utilisé. Si nécessaire, il est possible d'éviter l'utilisation de la carte SD pour le démarrage en créant un fichier vide nommé ` /flash/SKIPSDpyboard.py`, stocké dans la mémoire flash de la carte, afin de contourner le problème de la carte SD lors du démarrage.

Modes de démarrage

Lorsque la carte pyboard est mise sous tension normalement ou que le bouton de réinitialisation est enfoncé, la carte pyboard démarre en mode standard, ce qui signifie que le fichier boot.py est exécuté, puis l'USB est configuré et enfin le programme Python s'exécute.

Il est possible de modifier la séquence de démarrage standard en maintenant enfoncé le bouton utilisateur pendant le démarrage de la carte, puis en appuyant sur le bouton de réinitialisation tout en maintenant le bouton enfoncé. Les LED de la carte clignoteront entre les différents modes ; une fois le mode souhaité atteint, l’utilisateur peut relâcher le bouton utilisateur pour que la carte démarre dans ce mode.

les modes de démarrage sont :

  • Démarrage standard : LED verte uniquement (exécute boot.py puis le programme Python)
  • Démarrage sans échec : LED orange uniquement (aucun script n’est exécuté pendant le démarrage)
  • Réinitialisation du système de fichiers : les LED verte et orange s’allument simultanément (réinitialise la clé USB à ses paramètres d’usine et démarre en mode sans échec) – utilisé comme solution en cas de corruption du système de fichiers

Erreurs

  • Si les LED rouges et vertes clignotent alternativement, cela signifie que le script Python comporte une erreur et que vous devez utiliser le REPL pour le déboguer .
  • Si les 4 LED s'allument et s'éteignent en boucle, il s'agit d'une panne matérielle irrémédiable qui nécessite une réinitialisation matérielle.

Exemples de programmation

Source :

Programme Bonjour monde :

)

Importer et allumer une LED :

) as f :imprimer ( f . lire ())

Bytecode

MicroPython inclut un compilateur croisé qui génère du bytecode MicroPython (fichier avec l'extension .mpy ). Le code Python peut être compilé en bytecode soit directement sur un microcontrôleur, soit après avoir été précompilé.

Le firmware MicroPython peut être construit sans le compilateur, ne laissant subsister que la machine virtuelle capable d'exécuter les programmes mpy précompilés .

Mise en œuvre et utilisations

MicroPython est utilisé grâce à un firmware chargé par un logiciel standard sur un microcontrôleur particulier dans une mémoire flash, communiquant à l'aide d'une application terminale chargée sur un ordinateur qui émule une interface série.

Les principales utilisations de MicroPython peuvent être généralisées en trois catégories :

  • Objectifs pédagogiques : en utilisant la boucle de lecture-évaluation-impression (REPL) de MicroPython pour interagir avec un microcontrôleur, il est possible d’expliquer visuellement les concepts de traitement des données et de communication avec les cartes d’une manière plus simple qu’avec des langages de programmation plus complexes.
  • Développement et test de dispositifs et de capteurs : MicroPython propose des implémentations de référence vérifiées, exemptes de bogues et rigoureusement testées des interfaces utilisées dans les microcontrôleurs. Ces implémentations facilitent la mise en place et le contrôle de la communication périphérique, une tâche courante pour les développeurs. MicroPython offre un accès direct et interactif aux registres des dispositifs, simplifiant ainsi la vérification des fonctionnalités, le développement et le test de composants matériels, de dispositifs et d'algorithmes pour le contrôle et l'acquisition de données.
  • Outil de surveillance et de configuration pour la conception d'applications complexes : certaines applications nécessitent des performances spécifiques sur des microcontrôleurs hautes performances. MicroPython permet de surveiller l'état du système et de configurer ses paramètres.

L'implémentation de MicroPython peut varier en fonction de la disponibilité des bibliothèques standard et de support, ainsi que de la taille de la mémoire flash et de la RAM du microcontrôleur.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index