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 esempio bluetooth, 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.

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.

Helper Python congelati forniti sulla maggior parte delle schede camera OpenMV (driver, networking e utilità):

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.

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 scheda

  • stm — funzionalità specifiche degli MCU STM32

  • ssd1306 — driver OLED

  • tb6612 — driver motore TB6612

  • jwt — JSON Web Tokens

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

  • romfs — utilità helper ROMFS

  • pca9674a — driver dell’espansore I2C PCA9674A

  • jwt — JSON Web Tokens

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

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • onewire — protocollo bus 1-Wire

  • ds18x20 — driver del sensore di temperatura DS18x20

  • neopixel — controllo dei LED WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — driver motore TB6612

  • pca9674a — driver dell’espansore I2C PCA9674A

  • jwt — JSON Web Tokens

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

  • stm — funzionalità specifiche degli MCU STM32

  • tfp410 — serializzatore DVI/HDMI

  • ft5x06 — driver del touchscreen capacitivo

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • onewire — protocollo bus 1-Wire

  • ds18x20 — driver del sensore di temperatura DS18x20

  • neopixel — controllo dei LED WS2812 / NeoPixel

  • ssd1306 — driver OLED

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

  • stm — funzionalità specifiche degli MCU STM32

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • onewire — protocollo bus 1-Wire

  • ds18x20 — driver del sensore di temperatura DS18x20

  • neopixel — controllo dei LED WS2812 / NeoPixel

  • ssd1306 — driver OLED

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

  • stm — funzionalità specifiche degli MCU STM32

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • onewire — protocollo bus 1-Wire

  • ds18x20 — driver del sensore di temperatura DS18x20

  • neopixel — controllo dei LED WS2812 / NeoPixel

  • ssd1306 — driver OLED

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

  • stm — funzionalità specifiche degli MCU STM32

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • onewire — protocollo bus 1-Wire

  • ds18x20 — driver del sensore di temperatura DS18x20

  • neopixel — controllo dei LED WS2812 / NeoPixel

  • ssd1306 — driver OLED

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

  • stm — funzionalità specifiche degli MCU STM32

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • onewire — protocollo bus 1-Wire

  • ds18x20 — driver del sensore di temperatura DS18x20

  • neopixel — controllo dei LED WS2812 / NeoPixel

  • ssd1306 — driver OLED

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

  • stm — funzionalità specifiche degli MCU STM32

  • lsm6dsox — IMU a 6 assi LSM6DSOX

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • ds18x20 — driver del sensore di temperatura DS18x20

  • onewire — protocollo bus 1-Wire

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

  • stm — funzionalità specifiche degli MCU STM32

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • ds18x20 — driver del sensore di temperatura DS18x20

  • onewire — protocollo bus 1-Wire

  • neopixel — controllo dei LED WS2812 / NeoPixel

  • lora — driver del modem LoRa

  • ssd1306 — driver OLED

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

  • stm — funzionalità specifiche degli MCU STM32

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • onewire — protocollo bus 1-Wire

  • neopixel — controllo dei LED WS2812 / NeoPixel

  • gt911 — controller touch capacitivo a 5 punti GT911

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

  • espflash — flasher del firmware del bootloader ROM ESP32

  • lsm6dsox — IMU a 6 assi LSM6DSOX

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • onewire — protocollo bus 1-Wire

  • ds18x20 — driver del sensore di temperatura DS18x20

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

  • bmi270 — IMU a 6 assi BMI270

  • bmm150 — magnetometro a 3 assi BMM150

  • lsm9ds1 — IMU a 9 assi LSM9DS1

  • hts221 — sensore di umidità/temperatura HTS221

  • lps22h — sensore di pressione LPS22HB/HH

  • hs3003 — sensore di umidità/temperatura HS3003

  • apds9960 — driver del sensore di prossimità, gesti e colore

  • dht — sensori di temperatura/umidità DHT11 e DHT22

  • onewire — protocollo bus 1-Wire

  • ds18x20 — driver del sensore di temperatura DS18x20

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