Bibliothèques MicroPython d’OpenMV¶
Avertissement
Résumé important de cette section
MicroPython fournit des modules intégrés qui reproduisent les fonctionnalités de la bibliothèque standard Python (par ex.
os,time), ainsi que des modules propres à MicroPython (par ex.bluetooth,machine).La plupart des modules de la bibliothèque standard Python implémentent un sous-ensemble des fonctionnalités du module Python équivalent, et dans quelques cas proposent des extensions propres à MicroPython (par ex.
array,os)En raison de contraintes de ressources ou d’autres limitations, certains portages ou versions de micrologiciel peuvent ne pas inclure toutes les fonctionnalités documentées ici.
Pour permettre l’extensibilité, certains modules intégrés peuvent être étendus à partir de code Python chargé sur le système de fichiers du périphérique.
Ce chapitre décrit les modules (bibliothèques de fonctions et de classes) intégrés à MicroPython. Cette documentation cherche en général à décrire l’ensemble des modules et fonctions/classes implémentés dans le projet MicroPython. Cependant, MicroPython est hautement configurable, et chaque portage vers une carte/un système embarqué particulier peut n’inclure qu’un sous-ensemble des bibliothèques MicroPython disponibles.
Cela étant, veuillez noter que certaines fonctions/classes d’un module (voire le module entier) décrit dans cette documentation peuvent être indisponibles dans une compilation particulière de MicroPython sur un système particulier. Le meilleur endroit pour trouver des informations générales sur la disponibilité ou non d’une fonctionnalité particulière est la section « General Information », qui contient des informations relatives à un MicroPython port spécifique.
Sur certains portages, vous pouvez découvrir les bibliothèques intégrées disponibles qui peuvent être importées en saisissant ce qui suit au REPL
help('modules')
Au-delà des bibliothèques intégrées décrites dans cette documentation, de nombreux autres modules de la bibliothèque standard Python, ainsi que d’autres extensions MicroPython de celle-ci, peuvent être trouvés dans micropython-lib.
Bibliothèques standard Python et micro-bibliothèques¶
Les bibliothèques Python standard suivantes ont été « micro-isées » pour s’inscrire dans la philosophie de MicroPython. Elles fournissent les fonctionnalités essentielles du module concerné et sont conçues comme un remplacement direct de la bibliothèque standard Python.
array— tableaux de données numériquesasyncio— ordonnanceur d’entrées/sorties asynchronesbinascii— conversions binaire/ASCIIbuiltins— fonctions et exceptions intégréescmath— fonctions mathématiques pour les nombres complexescollections— types de collections et de conteneurserrno— codes d’erreur systèmegc— contrôle du ramasse-miettesgzip— compression et décompression gziphashlib— algorithmes de hachageheapq— algorithme de file à priorité par tasio— flux d’entrée/sortiejson— encodage et décodage JSONmarshal— Sérialisation d’objets Pythonmath— fonctions mathématiquesos— services basiques de « système d’exploitation »platform— accès aux données d’identification de la plateforme sous-jacenterandom— génération de nombres aléatoiresre— expressions régulières simplesselect— attente d’événements sur un ensemble de fluxsocket— module socketssl— Module SSL/TLSstring.templatelib— Prise en charge des chaînes de modèlestruct— empaqueter et désempaqueter des types de données primitifssys— fonctions propres au systèmetime— fonctions liées au tempstypes— noms des types intégrészlib— compression et décompression zlib
Bibliothèques OpenMV Cam¶
Les sections suivantes décrivent les bibliothèques disponibles sur chaque carte prise en charge par OpenMV, comprenant à la fois les éléments intégrés propres à MicroPython et les extensions propres à OpenMV.
Modules communs¶
Intégrés au micrologiciel sur chaque carte caméra OpenMV.
bluetooth— Bluetooth bas niveaucryptolib— algorithmes de chiffrement cryptographiquesdeflate— compression et décompression deflateframebuf— manipulation de tampon d’imagemachine— fonctions liées au matérielmicropython— accès et contrôle des éléments internes de MicroPythonnetwork— configuration réseauopenamp— fournit la prise en charge standard du multitraitement asymétrique (AMP)uctypes— accès structuré aux données binairesvfs— contrôle du système de fichiers virtuelcsi— capteurs de camérasensor— capteur de caméraimage— vision industriellegif— enregistrement gifmjpeg— enregistrement mjpegaudio— Module Audiodisplay— pilote d’affichagefir— pilote de capteur thermique (fir == infrarouge lointain)tof— pilote de capteur temps de volimu— capteur imuomv— Informations sur l’OpenMV Camcrc— Calcul de CRCml— Apprentissage automatiqueulab— bibliothèque de tableaux compatible numpyprotocol— Canaux du protocole OpenMVlogging— journalisation d’événementssenml— Sensor Markup Language
Assistants Python figés (frozen) fournis sur la plupart des cartes caméra OpenMV (pilotes, réseau et utilitaires) :
aioble— BLE asynchronerpc— bibliothèque rpcrtsp— bibliothèque rtspmqtt— Client MQTT simplerequests— Client HTTPmutex— module mutexpid— Régulateur proportionnel-intégral-dérivébno055— Pilote IMU BNO055modbus— Protocole esclave Modbus RTUvl53l1x— Pilote du capteur de distance ToF VL53L1X
Assistants réseau (nécessitent une interface réseau fonctionnelle) :
Framework web¶
Modules du framework de serveur web. Voir les sections par carte ci-dessous pour savoir quelles cartes incluent chacun d’eux.
Modules propres au portage¶
Modules liés à une famille de MCU spécifique. Voir les sections par carte ci-dessous pour savoir quelles cartes incluent chacun d’eux.
Pilotes matériels¶
Pilotes pour capteurs, écrans et autres périphériques fournis sur une ou plusieurs cartes prises en charge par OpenMV. Voir les sections par carte ci-dessous pour savoir quelles cartes incluent chacun d’eux.
dht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireds18x20— pilote du capteur de température DS18x20neopixel— contrôle des LED WS2812 / NeoPixellsm6dsox— IMU 6 axes LSM6DSOXbmi270— Centrale inertielle 6 axes BMI270bmm150— Magnétomètre 3 axes BMM150lsm9ds1— IMU 9 axes LSM9DS1hts221— capteur d’humidité/température HTS221lps22h— capteur de pression LPS22HB/HHhs3003— capteur d’humidité/température HS3003espflash— Programmateur de micrologiciel pour le programme d’amorçage ROM de l’ESP32imu— assistant IMU pour l’Arduino Nano 33 BLE Sensessd1306— Pilote OLEDtb6612— Pilote de moteur TB6612pca9674a— Pilote d’expandeur I2Ctfp410— Contrôleur DVI/HDMIft5x06— Pilote d’écran tactilegt911— Contrôleur tactile capacitif 5 points GT911lora— pilote de modem LoRaapds9960— pilote de capteur de proximité, de gestes et de couleurromfs— Utilitaires d’aide ROMFS
Disponibilité par carte¶
Les listes ci-dessous montrent quels modules propres au portage et modules pilotes sont fournis sur chaque carte. Tous les modules de Common, Frozen Python helpers et Networking helpers (ci-dessus) sont disponibles sur chaque carte caméra, sauf indication contraire.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) avec un NPU intégré à 1 GHz évalué à 600 GOPS INT8. Associe le NPU au capteur global-shutter PAG7936 de 1 MP.
pyb— fonctions liées à la cartestm— fonctionnalités propres aux MCU STM32ssd1306— pilote OLEDtb6612— pilote de moteur TB6612jwt— JSON Web Tokensmicrodot— framework HTTP minimal
OpenMV AE3
SoC bicœur Alif Ensemble E3 : Cortex-M55 @ 400 MHz (HP) plus Cortex-M55 @ 160 MHz (HE), avec deux NPU intégrés (NPU HP 400 MHz / 204 GOPS + NPU HE 160 MHz / 46 GOPS).
alif— fonctions du SoC Alif Ensembleromfs— utilitaires d’assistance ROMFSpca9674a— pilote d’expanseur I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP minimal
OpenMV Cam RT1062
Carte de vision industrielle basse consommation autour du NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Combine la mise en réseau haute vitesse USB-C, le Wi-Fi / Bluetooth et l’Ethernet 10/100.
mimxrt— fonctionnalités propres au NXP i.MX RTdht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireds18x20— pilote de capteur de température DS18x20neopixel— commande des LED WS2812 / NeoPixelssd1306— pilote OLEDtb6612— pilote de moteur TB6612pca9674a— pilote d’expanseur I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP minimal
OpenMV Pure Thermal
Carte d’imagerie thermique complète autour du STM32H743 (Cortex-M7 @ 480 MHz) avec 64 Mo de SDRAM externe, 32 Mo de mémoire flash QSPI, un codec JPEG matériel et une sortie DVI/HDMI.
pyb— fonctions liées à la cartestm— fonctionnalités propres aux MCU STM32tfp410— sérialiseur DVI/HDMIft5x06— pilote d’écran tactile capacitifdht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireds18x20— pilote de capteur de température DS18x20neopixel— commande des LED WS2812 / NeoPixelssd1306— pilote OLEDtb6612— pilote de moteur TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 MHz) avec 32 Mo de SDRAM externe, 32 Mo de mémoire flash QSPI, un codec JPEG matériel et le module caméra OV5640 de 5 MP.
pyb— fonctions liées à la cartestm— fonctionnalités propres aux MCU STM32dht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireds18x20— pilote de capteur de température DS18x20neopixel— commande des LED WS2812 / NeoPixelssd1306— pilote OLEDtb6612— pilote de moteur TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 MHz) avec 1 Mo de SRAM interne, 2 Mo de mémoire flash interne et un codec JPEG matériel.
pyb— fonctions liées à la cartestm— fonctionnalités propres aux MCU STM32dht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireds18x20— pilote de capteur de température DS18x20neopixel— commande des LED WS2812 / NeoPixelssd1306— pilote OLEDtb6612— pilote de moteur TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 MHz) avec 512 Ko de SRAM interne et 2 Mo de mémoire flash interne. Fourni avec le capteur OV7725.
pyb— fonctions liées à la cartestm— fonctionnalités propres aux MCU STM32dht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireds18x20— pilote de capteur de température DS18x20neopixel— commande des LED WS2812 / NeoPixelssd1306— pilote OLEDtb6612— pilote de moteur TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 MHz) avec 256 Ko de SRAM interne et 1 Mo de mémoire flash interne. Fourni avec le capteur OV7725.
pyb— fonctions liées à la cartestm— fonctionnalités propres aux MCU STM32dht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireds18x20— pilote de capteur de température DS18x20neopixel— commande des LED WS2812 / NeoPixelssd1306— pilote OLEDtb6612— pilote de moteur TB6612
Arduino Nicla Vision
Carte de vision industrielle de 22,86 × 22,86 mm autour du SoC bicœur STM32H747AII6 : Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.
pyb— fonctions liées à la cartestm— fonctionnalités propres aux MCU STM32lsm6dsox— IMU 6 axes LSM6DSOXdht— capteurs de température/humidité DHT11 et DHT22ds18x20— pilote de capteur de température DS18x20onewire— protocole de bus 1-Wireneopixel— commande des LED WS2812 / NeoPixel
Arduino Portenta H7
Carte de développement industrielle de 66 × 25 mm autour du SoC bicœur STM32H747XI : Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.
pyb— fonctions liées à la cartestm— fonctionnalités propres aux MCU STM32dht— capteurs de température/humidité DHT11 et DHT22ds18x20— pilote de capteur de température DS18x20onewire— protocole de bus 1-Wireneopixel— commande des LED WS2812 / NeoPixellora— pilote de modem LoRassd1306— pilote OLEDtb6612— pilote de moteur TB6612
Arduino Giga R1 WiFi
Carte au format Mega de 101 × 53 mm autour du SoC bicœur STM32H747XI : Cortex-M7 @ 480 MHz plus Cortex-M4 @ 240 MHz, avec un écran tactile 800x480 embarqué.
pyb— fonctions liées à la cartestm— fonctionnalités propres aux MCU STM32dht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireneopixel— commande des LED WS2812 / NeoPixelgt911— contrôleur tactile capacitif 5 points GT911ft5x06— pilote d’écran tactile capacitif
Arduino Nano RP2040 Connect
Carte au format Nano basée sur le RP2040 avec le module Wi-Fi/Bluetooth U-blox NINA-W102. N’est plus activement prise en charge ; la dernière version du micrologiciel OpenMV pour cette carte est conservée à des fins d’archivage.
rp2— assistants PIO / DMA / mémoire flash propres au RP2040espflash— programmeur de micrologiciel du bootloader ROM ESP32lsm6dsox— IMU 6 axes LSM6DSOXdht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireds18x20— pilote de capteur de température DS18x20neopixel— commande des LED WS2812 / NeoPixel
Arduino Nano 33 BLE Sense
Carte au format Nano basée sur le Nordic nRF52840 avec la suite de capteurs Arduino embarquée. N’est plus activement prise en charge ; la dernière version du micrologiciel OpenMV pour cette carte est conservée à des fins d’archivage.
ubluepy— API de périphérique et de central Bluetooth LE sur le Nordic SoftDevicebmi270— IMU 6 axes BMI270bmm150— magnétomètre 3 axes BMM150lsm9ds1— IMU 9 axes LSM9DS1hts221— capteur d’humidité/température HTS221lps22h— capteur de pression LPS22HB/HHhs3003— capteur d’humidité/température HS3003apds9960— pilote de capteur de proximité, de geste et de couleurdht— capteurs de température/humidité DHT11 et DHT22onewire— protocole de bus 1-Wireds18x20— pilote de capteur de température DS18x20neopixel— commande des LED WS2812 / NeoPixel
Extension des bibliothèques intégrées depuis Python¶
Un sous-ensemble des modules intégrés peut être étendu par du code Python en fournissant un module du même nom dans le système de fichiers. Cette extensibilité s’applique aux modules suivants de la bibliothèque standard Python qui sont intégrés au micrologiciel : array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, ainsi qu’au module machine propre à MicroPython. Tous les autres modules intégrés ne peuvent pas être étendus depuis le système de fichiers.
Cela permet à l’utilisateur de fournir une implémentation étendue d’une bibliothèque intégrée (peut-être pour offrir une compatibilité CPython supplémentaire ou des fonctionnalités manquantes). Ceci est largement utilisé dans micropython-lib, voir Gestion des paquets pour plus d’informations. Le module du système de fichiers effectue généralement une importation avec joker du module intégré afin d’hériter de toutes les variables globales (classes, fonctions et variables) du module intégré.
Dans MicroPython v1.21.0 et versions ultérieures, pour empêcher le module du système de fichiers de s’importer lui-même, il peut forcer l’importation du module intégré en vidant temporairement sys.path pendant l’importation. Par exemple, pour étendre le module time depuis Python, un fichier nommé time.py sur le système de fichiers procéderait comme suit
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
Le résultat est que time.py contient toutes les variables globales du module intégré time, mais ajoute extra_method.
Dans les versions antérieures de MicroPython, vous pouvez forcer l’importation d’un module intégré en ajoutant un u au début de son nom. Par exemple, import utime au lieu de import time. Ainsi, time.py sur le système de fichiers pourrait ressembler à ceci
from utime import *
def extra_method():
pass
Cette méthode est toujours prise en charge, mais la méthode sys.path décrite ci-dessus est désormais préférée, car le préfixe u sera supprimé des noms des modules intégrés dans une future version de MicroPython.
En dehors des cas où il a spécifiquement besoin de forcer l’utilisation du module intégré, le code devrait toujours utiliser import module plutôt que import umodule.