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.

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.

Assistants Python figés (frozen) fournis sur la plupart des cartes caméra OpenMV (pilotes, réseau et utilitaires) :

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.

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 carte

  • stm — fonctionnalités propres aux MCU STM32

  • ssd1306 — pilote OLED

  • tb6612 — pilote de moteur TB6612

  • jwt — JSON Web Tokens

  • microdot — 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 Ensemble

  • romfs — utilitaires d’assistance ROMFS

  • pca9674a — pilote d’expanseur I2C PCA9674A

  • jwt — JSON Web Tokens

  • microdot — 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 RT

  • dht — capteurs de température/humidité DHT11 et DHT22

  • onewire — protocole de bus 1-Wire

  • ds18x20 — pilote de capteur de température DS18x20

  • neopixel — commande des LED WS2812 / NeoPixel

  • ssd1306 — pilote OLED

  • tb6612 — pilote de moteur TB6612

  • pca9674a — pilote d’expanseur I2C PCA9674A

  • jwt — JSON Web Tokens

  • microdot — 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 carte

  • stm — fonctionnalités propres aux MCU STM32

  • tfp410 — sérialiseur DVI/HDMI

  • ft5x06 — pilote d’écran tactile capacitif

  • dht — capteurs de température/humidité DHT11 et DHT22

  • onewire — protocole de bus 1-Wire

  • ds18x20 — pilote de capteur de température DS18x20

  • neopixel — commande des LED WS2812 / NeoPixel

  • ssd1306 — pilote OLED

  • tb6612 — 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 carte

  • stm — fonctionnalités propres aux MCU STM32

  • dht — capteurs de température/humidité DHT11 et DHT22

  • onewire — protocole de bus 1-Wire

  • ds18x20 — pilote de capteur de température DS18x20

  • neopixel — commande des LED WS2812 / NeoPixel

  • ssd1306 — pilote OLED

  • tb6612 — 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 carte

  • stm — fonctionnalités propres aux MCU STM32

  • dht — capteurs de température/humidité DHT11 et DHT22

  • onewire — protocole de bus 1-Wire

  • ds18x20 — pilote de capteur de température DS18x20

  • neopixel — commande des LED WS2812 / NeoPixel

  • ssd1306 — pilote OLED

  • tb6612 — 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 carte

  • stm — fonctionnalités propres aux MCU STM32

  • dht — capteurs de température/humidité DHT11 et DHT22

  • onewire — protocole de bus 1-Wire

  • ds18x20 — pilote de capteur de température DS18x20

  • neopixel — commande des LED WS2812 / NeoPixel

  • ssd1306 — pilote OLED

  • tb6612 — 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 carte

  • stm — fonctionnalités propres aux MCU STM32

  • dht — capteurs de température/humidité DHT11 et DHT22

  • onewire — protocole de bus 1-Wire

  • ds18x20 — pilote de capteur de température DS18x20

  • neopixel — commande des LED WS2812 / NeoPixel

  • ssd1306 — pilote OLED

  • tb6612 — 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 carte

  • stm — fonctionnalités propres aux MCU STM32

  • lsm6dsox — IMU 6 axes LSM6DSOX

  • dht — capteurs de température/humidité DHT11 et DHT22

  • ds18x20 — pilote de capteur de température DS18x20

  • onewire — protocole de bus 1-Wire

  • neopixel — 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 carte

  • stm — fonctionnalités propres aux MCU STM32

  • dht — capteurs de température/humidité DHT11 et DHT22

  • ds18x20 — pilote de capteur de température DS18x20

  • onewire — protocole de bus 1-Wire

  • neopixel — commande des LED WS2812 / NeoPixel

  • lora — pilote de modem LoRa

  • ssd1306 — pilote OLED

  • tb6612 — 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 carte

  • stm — fonctionnalités propres aux MCU STM32

  • dht — capteurs de température/humidité DHT11 et DHT22

  • onewire — protocole de bus 1-Wire

  • neopixel — commande des LED WS2812 / NeoPixel

  • gt911 — contrôleur tactile capacitif 5 points GT911

  • ft5x06 — 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 RP2040

  • espflash — programmeur de micrologiciel du bootloader ROM ESP32

  • lsm6dsox — IMU 6 axes LSM6DSOX

  • dht — capteurs de température/humidité DHT11 et DHT22

  • onewire — protocole de bus 1-Wire

  • ds18x20 — pilote de capteur de température DS18x20

  • neopixel — 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 SoftDevice

  • bmi270 — IMU 6 axes BMI270

  • bmm150 — magnétomètre 3 axes BMM150

  • lsm9ds1 — IMU 9 axes LSM9DS1

  • hts221 — capteur d’humidité/température HTS221

  • lps22h — capteur de pression LPS22HB/HH

  • hs3003 — capteur d’humidité/température HS3003

  • apds9960 — pilote de capteur de proximité, de geste et de couleur

  • dht — capteurs de température/humidité DHT11 et DHT22

  • onewire — protocole de bus 1-Wire

  • ds18x20 — pilote de capteur de température DS18x20

  • neopixel — 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.