Librerie MicroPython di OpenMV¶
Avvertimento
Riepilogo importante di questa sezione
MicroPython fornisce moduli integrati che rispecchiano le funzionalità della libreria standard di Python (ad esempio
os,time), nonché moduli specifici di MicroPython (ad esempiobluetooth,machine).La maggior parte dei moduli della libreria standard di Python implementa un sottoinsieme delle funzionalità del modulo Python equivalente e, in alcuni casi, fornisce alcune estensioni specifiche di MicroPython (ad esempio
array,os)A causa di vincoli di risorse o di altre limitazioni, alcuni port o versioni del firmware potrebbero non includere tutte le funzionalità documentate qui.
Per consentire l’estensibilità, alcuni moduli integrati possono essere estesi da codice Python caricato nel filesystem del dispositivo.
Questo capitolo descrive i moduli (librerie di funzioni e classi) integrati in MicroPython. Questa documentazione in generale aspira a descrivere tutti i moduli e le funzioni/classi implementate nel progetto MicroPython. Tuttavia, MicroPython è altamente configurabile, e ogni port verso una particolare scheda/sistema embedded può includere solo un sottoinsieme delle librerie MicroPython disponibili.
Tenendo presente questo, si avverte che alcune funzioni/classi in un modulo (o persino l’intero modulo) descritte in questa documentazione potrebbero non essere disponibili in una particolare build di MicroPython su un particolare sistema. Il posto migliore per trovare informazioni generali sulla disponibilità/non disponibilità di una particolare funzionalità è la sezione «General Information» che contiene informazioni relative a uno specifico MicroPython port.
Su alcuni port è possibile scoprire le librerie integrate disponibili che possono essere importate inserendo quanto segue al REPL
help('modules')
Oltre alle librerie integrate descritte in questa documentazione, molti altri moduli della libreria standard di Python, nonché ulteriori estensioni di MicroPython, possono essere trovati in micropython-lib.
Librerie standard e micro-librerie di Python¶
Le seguenti librerie standard di Python sono state «micro-izzate» per adattarsi alla filosofia di MicroPython. Forniscono le funzionalità di base di quel modulo e sono concepite come sostituti drop-in della libreria standard di Python.
array— array di dati numericiasyncio— scheduler di I/O asincronobinascii— conversioni binario/ASCIIbuiltins— funzioni ed eccezioni builtincmath— funzioni matematiche per numeri complessicollections— tipi di raccolte e contenitorierrno— codici di errore di sistemagc— controllo del garbage collectorgzip— compressione e decompressione gziphashlib— algoritmi di hashingheapq— algoritmo della coda con heapio— flussi di input/outputjson— codifica e decodifica JSONmarshal— serializzazione di oggetti Pythonmath— funzioni matematicheos— servizi di base del «sistema operativo»platform— accesso ai dati identificativi della piattaforma sottostanterandom— genera numeri casualire— espressioni regolari sempliciselect— attende eventi su un insieme di streamsocket— modulo socketssl— modulo SSL/TLSstring.templatelib— Supporto per le Template Stringstruct— impacchetta e spacchetta tipi di dati primitivisys— funzioni specifiche del sistematime— funzioni relative al tempotypes— nomi per i tipi predefinitizlib— compressione e decompressione zlib
Librerie di OpenMV Cam¶
Le seguenti sezioni descrivono le librerie disponibili su ciascuna scheda supportata da OpenMV, comprese sia le funzionalità integrate specifiche di MicroPython sia le estensioni proprie di OpenMV.
Moduli comuni¶
Integrati nel firmware di ogni scheda camera OpenMV.
bluetooth— Bluetooth a basso livellocryptolib— cifrari crittograficideflate— compressione e decompressione deflateframebuf— manipolazione del frame buffermachine— funzioni relative all’hardwaremicropython— accesso e controllo degli interni di MicroPythonnetwork— configurazione di reteopenamp— fornisce il supporto standard per l’Asymmetric Multiprocessing (AMP)uctypes— accesso ai dati binari in modo strutturatovfs— controllo del filesystem virtualecsi— sensori camerasensor— sensore della cameraimage— visione artificialegif— registrazione gifmjpeg— registrazione mjpegaudio— Modulo Audiodisplay— driver del displayfir— driver del sensore termico (fir == far infrared)tof— driver per sensore time-of-flightimu— sensore imuomv— Informazioni sulla OpenMV Camcrc— Calcolo del CRCml— Machine Learningulab— libreria di array compatibile con numpyprotocol— Canali del protocollo OpenMVlogging— registrazione degli eventisenml— Sensor Markup Language
Helper Python congelati forniti sulla maggior parte delle schede camera OpenMV (driver, networking e utilità):
aioble— BLE asincronorpc— libreria rpcrtsp— libreria rtspmqtt— Client MQTT semplicerequests— Client HTTPmutex— modulo mutexpid— Controllore proporzionale-integrale-derivativobno055— Driver IMU BNO055modbus— Protocollo slave Modbus RTUvl53l1x— Driver del sensore di distanza ToF VL53L1X
Helper per il networking (richiedono un’interfaccia di rete funzionante):
Framework web¶
Moduli del framework webserver. Vedere le sezioni per scheda di seguito per sapere quali schede includono ciascuno di essi.
Moduli specifici del port¶
Moduli legati a una specifica famiglia di MCU. Vedere le sezioni per scheda di seguito per sapere quali schede includono ciascuno di essi.
Driver hardware¶
Driver per sensori, display e altre periferiche forniti su una o più schede supportate da OpenMV. Vedere le sezioni per scheda di seguito per sapere quali schede includono ciascuno di essi.
dht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo del bus 1-Wireds18x20— driver per sensore di temperatura DS18x20neopixel— controllo di LED WS2812 / NeoPixellsm6dsox— IMU a 6 assi LSM6DSOXbmi270— IMU a 6 assi BMI270bmm150— Magnetometro a 3 assi BMM150lsm9ds1— IMU a 9 assi LSM9DS1hts221— Sensore di umidità/temperatura HTS221lps22h— sensore di pressione LPS22HB/HHhs3003— sensore di umidità/temperatura HS3003espflash— flasher del firmware del bootloader ROM dell’ESP32imu— Helper IMU per l’Arduino Nano 33 BLE Sensessd1306— Driver OLEDtb6612— Driver per motori TB6612pca9674a— Driver Expander I2Ctfp410— Controller DVI/HDMIft5x06— Driver del touch screengt911— Controller di tocco capacitivo a 5 punti GT911lora— driver del modem LoRaapds9960— driver per sensore di prossimità, gesti e coloreromfs— Utilità di supporto ROMFS
Disponibilità per scheda¶
Gli elenchi seguenti mostrano quali moduli specifici del port e quali driver sono forniti su ciascuna scheda. Tutti i moduli in Common, Frozen Python helpers e Networking helpers (sopra) sono disponibili su ogni scheda camera salvo diversa indicazione.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) con una NPU on-chip da 1 GHz valutata a 600 GOPS INT8. Abbina la NPU al sensore global-shutter PAG7936 da 1 MP.
pyb— funzioni relative alla schedastm— funzionalità specifiche degli MCU STM32ssd1306— driver OLEDtb6612— driver motore TB6612jwt— JSON Web Tokensmicrodot— framework HTTP minimale
OpenMV AE3
SoC dual-core Alif Ensemble E3: Cortex-M55 @ 400 MHz (HP) più Cortex-M55 @ 160 MHz (HE), con due NPU on-chip (NPU HP da 400 MHz / 204 GOPS + NPU HE da 160 MHz / 46 GOPS).
alif— funzioni del SoC Alif Ensembleromfs— utilità helper ROMFSpca9674a— driver dell’espansore I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP minimale
OpenMV Cam RT1062
Scheda per la visione artificiale a basso consumo basata sull’NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Combina networking USB-C ad alta velocità, Wi-Fi / Bluetooth ed Ethernet 10/100.
mimxrt— funzionalità specifiche di NXP i.MX RTdht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo bus 1-Wireds18x20— driver del sensore di temperatura DS18x20neopixel— controllo dei LED WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver motore TB6612pca9674a— driver dell’espansore I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP minimale
OpenMV Pure Thermal
Scheda di imaging termico completa basata sull’STM32H743 (Cortex-M7 @ 480 MHz) con 64 MB di SDRAM esterna, 32 MB di flash QSPI, un codec JPEG hardware e uscita DVI/HDMI.
pyb— funzioni relative alla schedastm— funzionalità specifiche degli MCU STM32tfp410— serializzatore DVI/HDMIft5x06— driver del touchscreen capacitivodht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo bus 1-Wireds18x20— driver del sensore di temperatura DS18x20neopixel— controllo dei LED WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver motore TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 MHz) con 32 MB di SDRAM esterna, 32 MB di flash QSPI, un codec JPEG hardware e il modulo camera OV5640 da 5MP.
pyb— funzioni relative alla schedastm— funzionalità specifiche degli MCU STM32dht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo bus 1-Wireds18x20— driver del sensore di temperatura DS18x20neopixel— controllo dei LED WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver motore TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 MHz) con 1 MB di SRAM interna, 2 MB di flash interna e un codec JPEG hardware.
pyb— funzioni relative alla schedastm— funzionalità specifiche degli MCU STM32dht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo bus 1-Wireds18x20— driver del sensore di temperatura DS18x20neopixel— controllo dei LED WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver motore TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 MHz) con 512 KB di SRAM interna e 2 MB di flash interna. Fornita con il sensore OV7725.
pyb— funzioni relative alla schedastm— funzionalità specifiche degli MCU STM32dht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo bus 1-Wireds18x20— driver del sensore di temperatura DS18x20neopixel— controllo dei LED WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver motore TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 MHz) con 256 KB di SRAM interna e 1 MB di flash interna. Fornita con il sensore OV7725.
pyb— funzioni relative alla schedastm— funzionalità specifiche degli MCU STM32dht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo bus 1-Wireds18x20— driver del sensore di temperatura DS18x20neopixel— controllo dei LED WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver motore TB6612
Arduino Nicla Vision
Scheda per la visione artificiale da 22.86 × 22.86 mm basata sul SoC dual-core STM32H747AII6: Cortex-M7 @ 400 MHz più Cortex-M4 @ 200 MHz.
pyb— funzioni relative alla schedastm— funzionalità specifiche degli MCU STM32lsm6dsox— IMU a 6 assi LSM6DSOXdht— sensori di temperatura/umidità DHT11 e DHT22ds18x20— driver del sensore di temperatura DS18x20onewire— protocollo bus 1-Wireneopixel— controllo dei LED WS2812 / NeoPixel
Arduino Portenta H7
Scheda di sviluppo industriale da 66 × 25 mm basata sul SoC dual-core STM32H747XI: Cortex-M7 @ 400 MHz più Cortex-M4 @ 200 MHz.
pyb— funzioni relative alla schedastm— funzionalità specifiche degli MCU STM32dht— sensori di temperatura/umidità DHT11 e DHT22ds18x20— driver del sensore di temperatura DS18x20onewire— protocollo bus 1-Wireneopixel— controllo dei LED WS2812 / NeoPixellora— driver del modem LoRassd1306— driver OLEDtb6612— driver motore TB6612
Arduino Giga R1 WiFi
Scheda nel formato Mega da 101 × 53 mm basata sul SoC dual-core STM32H747XI: Cortex-M7 @ 480 MHz più Cortex-M4 @ 240 MHz, con un touchscreen integrato 800x480.
pyb— funzioni relative alla schedastm— funzionalità specifiche degli MCU STM32dht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo bus 1-Wireneopixel— controllo dei LED WS2812 / NeoPixelgt911— controller touch capacitivo a 5 punti GT911ft5x06— driver del touchscreen capacitivo
Arduino Nano RP2040 Connect
Scheda nel formato Nano basata su RP2040 con il modulo Wi-Fi/Bluetooth U-blox NINA-W102. Non più attivamente supportata; l’ultima release del firmware OpenMV per questa scheda viene conservata per uso archivistico.
rp2— helper PIO / DMA / flash specifici di RP2040espflash— flasher del firmware del bootloader ROM ESP32lsm6dsox— IMU a 6 assi LSM6DSOXdht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo bus 1-Wireds18x20— driver del sensore di temperatura DS18x20neopixel— controllo dei LED WS2812 / NeoPixel
Arduino Nano 33 BLE Sense
Scheda nel formato Nano basata su Nordic nRF52840 con la suite di sensori Arduino integrata. Non più attivamente supportata; l’ultima release del firmware OpenMV per questa scheda viene conservata per uso archivistico.
ubluepy— API periferica e centrale Bluetooth LE sul Nordic SoftDevicebmi270— IMU a 6 assi BMI270bmm150— magnetometro a 3 assi BMM150lsm9ds1— IMU a 9 assi LSM9DS1hts221— sensore di umidità/temperatura HTS221lps22h— sensore di pressione LPS22HB/HHhs3003— sensore di umidità/temperatura HS3003apds9960— driver del sensore di prossimità, gesti e coloredht— sensori di temperatura/umidità DHT11 e DHT22onewire— protocollo bus 1-Wireds18x20— driver del sensore di temperatura DS18x20neopixel— controllo dei LED WS2812 / NeoPixel
Estendere le librerie integrate da Python¶
Un sottoinsieme dei moduli integrati può essere esteso da codice Python fornendo un modulo con lo stesso nome nel filesystem. Questa estensibilità si applica ai seguenti moduli della libreria standard di Python integrati nel firmware: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, nonché al modulo specifico di MicroPython machine. Tutti gli altri moduli integrati non possono essere estesi dal filesystem.
Questo consente all’utente di fornire un’implementazione estesa di una libreria integrata (magari per offrire ulteriore compatibilità con CPython o funzionalità mancanti). Ciò viene utilizzato ampiamente in micropython-lib, vedere Gestione dei pacchetti per maggiori informazioni. Il modulo nel filesystem in genere eseguirà un’importazione con wildcard del modulo integrato per ereditare tutte le variabili globali (classi, funzioni e variabili) dal modulo integrato.
In MicroPython v1.21.0 e successivi, per impedire che il modulo nel filesystem importi sé stesso, è possibile forzare l’importazione del modulo integrato svuotando temporaneamente sys.path durante l’importazione. Ad esempio, per estendere il modulo time da Python, un file chiamato time.py nel filesystem farebbe quanto segue:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
Il risultato è che time.py contiene tutte le variabili globali del modulo integrato time, ma aggiunge extra_method.
Nelle versioni precedenti di MicroPython, è possibile forzare l’importazione di un modulo integrato anteponendo una u all’inizio del suo nome. Ad esempio, import utime invece di import time. Per esempio, time.py nel filesystem potrebbe avere il seguente aspetto:
from utime import *
def extra_method():
pass
Questo metodo è ancora supportato, ma il metodo sys.path descritto sopra è ora preferito, poiché il prefisso u verrà rimosso dai nomi dei moduli integrati in una versione futura di MicroPython.
A meno che non sia specificamente necessario forzare l’uso del modulo integrato, il codice dovrebbe sempre usare import module anziché import umodule.