Biblioteci OpenMV MicroPython

Atenționare

Rezumat important al acestei secțiuni

  • MicroPython oferă module integrate care reflectă funcționalitatea bibliotecii standard Python (de exemplu os, time), precum și module specifice MicroPython (de exemplu bluetooth, machine).

  • Majoritatea modulelor din biblioteca standard Python implementează un subset al funcționalității modulului Python echivalent și, în câteva cazuri, oferă unele extensii specifice MicroPython (de exemplu array, os)

  • Din cauza constrângerilor de resurse sau a altor limitări, este posibil ca unele porturi sau versiuni de firmware să nu includă toată funcționalitatea documentată aici.

  • Pentru a permite extensibilitatea, unele module integrate pot fi extinse din cod Python încărcat pe sistemul de fișiere al dispozitivului.

Acest capitol descrie modulele (biblioteci de funcții și clase) care sunt integrate în MicroPython. Această documentație în general aspiră să descrie toate modulele și funcțiile/clasele care sunt implementate în proiectul MicroPython. Totuși, MicroPython este foarte configurabil, iar fiecare port pentru o anumită placă/sistem încorporat poate include doar un subset al bibliotecilor MicroPython disponibile.

Având aceasta în vedere, vă atragem atenția că unele funcții/clase dintr-un modul (sau chiar întregul modul) descrise în această documentație pot fi indisponibile într-o anumită compilare a MicroPython pe un anumit sistem. Cel mai bun loc pentru a găsi informații generale despre disponibilitatea/indisponibilitatea unei anumite caracteristici este secțiunea „General Information”, care conține informații referitoare la un MicroPython port specific.

Pe unele porturi puteți descoperi bibliotecile integrate disponibile care pot fi importate introducând următoarele la REPL

help('modules')

Pe lângă bibliotecile integrate descrise în această documentație, multe alte module din biblioteca standard Python, precum și extensii MicroPython suplimentare ale acesteia, pot fi găsite în micropython-lib.

Biblioteci standard Python și micro-biblioteci

Următoarele biblioteci standard Python au fost „micro-izate” pentru a se potrivi cu filosofia MicroPython. Ele oferă funcționalitatea de bază a modulului respectiv și sunt menite să fie un înlocuitor direct pentru biblioteca standard Python.

Biblioteci OpenMV Cam

Următoarele secțiuni descriu bibliotecile disponibile pe fiecare placă acceptată de OpenMV, incluzând atât modulele integrate specifice MicroPython, cât și propriile extensii ale OpenMV.

Module comune

Integrate în firmware pe fiecare placă de cameră OpenMV.

Ajutoare Python „înghețate” (frozen) livrate pe majoritatea plăcilor de cameră OpenMV (drivere, rețelistică și utilitare):

Ajutoare de rețelistică (necesită o interfață de rețea funcțională):

Cadru web

Module ale cadrului de server web. Consultați secțiunile pentru fiecare placă de mai jos pentru a vedea care plăci includ fiecare modul.

Module specifice portului

Module legate de o anumită familie de MCU. Consultați secțiunile pentru fiecare placă de mai jos pentru a vedea care plăci includ fiecare modul.

Drivere hardware

Drivere pentru senzori, afișaje și alte periferice livrate pe una sau mai multe plăci acceptate de OpenMV. Consultați secțiunile pentru fiecare placă de mai jos pentru a vedea care plăci includ fiecare modul.

Disponibilitate pentru fiecare placă

Listele de mai jos arată care module specifice portului și de drivere sunt livrate pe fiecare placă. Toate modulele din Common, Frozen Python helpers și Networking helpers (de mai sus) sunt disponibile pe fiecare placă de cameră, dacă nu se specifică altfel.

OpenMV N6

STM32N657 (Cortex-M55 @ 800 MHz) cu un NPU integrat de 1 GHz evaluat la 600 GOPS INT8. Asociază NPU-ul cu senzorul global-shutter PAG7936 de 1 MP.

  • pyb — funcții legate de placă

  • stm — funcționalitate specifică MCU-urilor STM32

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

  • jwt — JSON Web Tokens

  • microdot — cadru HTTP minimal

OpenMV AE3

SoC dual-core Alif Ensemble E3: Cortex-M55 @ 400 MHz (HP) plus Cortex-M55 @ 160 MHz (HE), cu două NPU-uri integrate (NPU HP de 400 MHz / 204 GOPS + NPU HE de 160 MHz / 46 GOPS).

  • alif — funcții ale SoC-ului Alif Ensemble

  • romfs — utilitare ajutătoare ROMFS

  • pca9674a — driver de expander I2C PCA9674A

  • jwt — JSON Web Tokens

  • microdot — cadru HTTP minimal

OpenMV Cam RT1062

Placă de viziune artificială cu consum redus de energie bazată pe NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Combină rețelistică USB-C de mare viteză, Wi-Fi / Bluetooth și Ethernet 10/100.

  • mimxrt — funcționalitate specifică NXP i.MX RT

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • onewire — protocol de magistrală 1-Wire

  • ds18x20 — driver de senzor de temperatură DS18x20

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

  • pca9674a — driver de expander I2C PCA9674A

  • jwt — JSON Web Tokens

  • microdot — cadru HTTP minimal

OpenMV Pure Thermal

Placă de imagistică termică cu sistem complet bazată pe STM32H743 (Cortex-M7 @ 480 MHz) cu 64 MB SDRAM extern, 32 MB memorie flash QSPI, un codec JPEG hardware și ieșire DVI/HDMI.

  • pyb — funcții legate de placă

  • stm — funcționalitate specifică MCU-urilor STM32

  • tfp410 — serializator DVI/HDMI

  • ft5x06 — driver de ecran tactil capacitiv

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • onewire — protocol de magistrală 1-Wire

  • ds18x20 — driver de senzor de temperatură DS18x20

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

OpenMV Cam H7 Plus

STM32H743 (Cortex-M7 @ 480 MHz) cu 32 MB SDRAM extern, 32 MB memorie flash QSPI, un codec JPEG hardware și modulul de cameră OV5640 de 5MP.

  • pyb — funcții legate de placă

  • stm — funcționalitate specifică MCU-urilor STM32

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • onewire — protocol de magistrală 1-Wire

  • ds18x20 — driver de senzor de temperatură DS18x20

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

OpenMV Cam H7

STM32H743 (Cortex-M7 @ 480 MHz) cu 1 MB SRAM intern, 2 MB memorie flash internă și un codec JPEG hardware.

  • pyb — funcții legate de placă

  • stm — funcționalitate specifică MCU-urilor STM32

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • onewire — protocol de magistrală 1-Wire

  • ds18x20 — driver de senzor de temperatură DS18x20

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

OpenMV Cam M7

STM32F765 (Cortex-M7 @ 216 MHz) cu 512 KB SRAM intern și 2 MB memorie flash internă. Furnizat împreună cu senzorul OV7725.

  • pyb — funcții legate de placă

  • stm — funcționalitate specifică MCU-urilor STM32

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • onewire — protocol de magistrală 1-Wire

  • ds18x20 — driver de senzor de temperatură DS18x20

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

OpenMV Cam M4

STM32F427 (Cortex-M4 @ 180 MHz) cu 256 KB SRAM intern și 1 MB memorie flash internă. Furnizat împreună cu senzorul OV7725.

  • pyb — funcții legate de placă

  • stm — funcționalitate specifică MCU-urilor STM32

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • onewire — protocol de magistrală 1-Wire

  • ds18x20 — driver de senzor de temperatură DS18x20

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

Arduino Nicla Vision

Placă de viziune artificială de 22,86 × 22,86 mm bazată pe SoC-ul dual-core STM32H747AII6: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.

  • pyb — funcții legate de placă

  • stm — funcționalitate specifică MCU-urilor STM32

  • lsm6dsox — IMU LSM6DSOX cu 6 axe

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • ds18x20 — driver de senzor de temperatură DS18x20

  • onewire — protocol de magistrală 1-Wire

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

Arduino Portenta H7

Placă de dezvoltare industrială de 66 × 25 mm bazată pe SoC-ul dual-core STM32H747XI: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.

  • pyb — funcții legate de placă

  • stm — funcționalitate specifică MCU-urilor STM32

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • ds18x20 — driver de senzor de temperatură DS18x20

  • onewire — protocol de magistrală 1-Wire

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

  • lora — driver de modem LoRa

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

Arduino Giga R1 WiFi

Placă cu factor de formă Mega de 101 × 53 mm bazată pe SoC-ul dual-core STM32H747XI: Cortex-M7 @ 480 MHz plus Cortex-M4 @ 240 MHz, cu un ecran tactil integrat de 800x480.

  • pyb — funcții legate de placă

  • stm — funcționalitate specifică MCU-urilor STM32

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • onewire — protocol de magistrală 1-Wire

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

  • gt911 — controler tactil capacitiv cu 5 puncte GT911

  • ft5x06 — driver de ecran tactil capacitiv

Arduino Nano RP2040 Connect

Placă cu factor de formă Nano bazată pe RP2040 cu modulul Wi-Fi/Bluetooth U-blox NINA-W102. Nu mai este susținută activ; ultima versiune de firmware OpenMV pentru această placă este păstrată pentru uz de arhivare.

  • rp2 — ajutoare PIO / DMA / flash specifice RP2040

  • espflash — instrument de scriere a firmware-ului bootloader-ului ROM ESP32

  • lsm6dsox — IMU LSM6DSOX cu 6 axe

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • onewire — protocol de magistrală 1-Wire

  • ds18x20 — driver de senzor de temperatură DS18x20

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

Arduino Nano 33 BLE Sense

Placă cu factor de formă Nano Nordic nRF52840 cu suita integrată de senzori Arduino. Nu mai este susținută activ; ultima versiune de firmware OpenMV pentru această placă este păstrată pentru uz de arhivare.

  • ubluepy — API periferic și central Bluetooth LE pe Nordic SoftDevice

  • bmi270 — IMU BMI270 cu 6 axe

  • bmm150 — magnetometru BMM150 cu 3 axe

  • lsm9ds1 — IMU LSM9DS1 cu 9 axe

  • hts221 — senzor de umiditate/temperatură HTS221

  • lps22h — senzor de presiune LPS22HB/HH

  • hs3003 — senzor de umiditate/temperatură HS3003

  • apds9960 — driver de senzor de proximitate, gesturi și culoare

  • dht — senzori de temperatură/umiditate DHT11 și DHT22

  • onewire — protocol de magistrală 1-Wire

  • ds18x20 — driver de senzor de temperatură DS18x20

  • neopixel — controlul LED-urilor WS2812 / NeoPixel

Extinderea bibliotecilor integrate din Python

Un subset al modulelor integrate pot fi extinse prin cod Python prin furnizarea unui modul cu același nume în sistemul de fișiere. Această extensibilitate se aplică următoarelor module din biblioteca standard Python care sunt integrate în firmware: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, precum și modulul specific MicroPython machine. Toate celelalte module integrate nu pot fi extinse din sistemul de fișiere.

Aceasta permite utilizatorului să furnizeze o implementare extinsă a unei biblioteci integrate (poate pentru a oferi o compatibilitate CPython suplimentară sau funcționalitate lipsă). Acest lucru este folosit pe scară largă în micropython-lib, consultați Gestionarea pachetelor pentru mai multe informații. Modulul din sistemul de fișiere va face de obicei un import cu wildcard al modulului integrat pentru a moșteni toate variabilele globale (clase, funcții și variabile) de la modulul integrat.

În MicroPython v1.21.0 și versiunile superioare, pentru a împiedica modulul din sistemul de fișiere să se importe pe sine, acesta poate forța un import al modulului integrat prin golirea temporară a sys.path în timpul importului. De exemplu, pentru a extinde modulul time din Python, un fișier numit time.py din sistemul de fișiere ar face următoarele:

_path = sys.path
sys.path = ()
try:
  from time import *
finally:
  sys.path = _path
  del _path

def extra_method():
  pass

Rezultatul este că time.py conține toate variabilele globale ale modulului integrat time, dar adaugă extra_method.

În versiunile mai vechi ale MicroPython, puteți forța un import al unui modul integrat adăugând un u la începutul numelui său. De exemplu, import utime în loc de import time. De pildă, time.py din sistemul de fișiere ar putea arăta astfel:

from utime import *

def extra_method():
  pass

Această metodă este în continuare acceptată, dar metoda sys.path descrisă mai sus este acum preferată, deoarece prefixul u va fi eliminat din numele modulelor integrate într-o versiune viitoare a MicroPython.

În afară de cazul în care are nevoie în mod special să forțeze utilizarea modulului integrat, codul ar trebui să folosească întotdeauna import module în loc de import umodule.