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 exemplubluetooth,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.
array— tablouri de date numericeasyncio— planificator de I/O asincronbinascii— conversii binar/ASCIIbuiltins— funcții și excepții încorporatecmath— funcții matematice pentru numere complexecollections— tipuri de colecții și containereerrno— coduri de eroare ale sistemuluigc— controlul colectorului de gunoigzip— compresie și decompresie gziphashlib— algoritmi de hashingheapq— algoritmul de coadă cu heapio— fluxuri de intrare/ieșirejson— codificare și decodificare JSONmarshal— serializarea obiectelor Pythonmath— funcții matematiceos— servicii de bază ale „sistemului de operare”platform— acces la datele de identificare ale platformei subiacenterandom— generează numere aleatoriire— expresii regulate simpleselect— așteaptă evenimente pe un set de fluxurisocket— modulul socketssl— modulul SSL/TLSstring.templatelib— suport pentru șiruri șablonstruct— împachetarea și despachetarea tipurilor de date primitivesys— funcții specifice sistemuluitime— funcții legate de timptypes— nume pentru tipurile încorporatezlib— compresie și decompresie zlib
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.
bluetooth— Bluetooth de nivel joscryptolib— cifruri criptograficedeflate— compresie și decompresie deflateframebuf— manipularea tamponului de cadre (frame buffer)machine— funcții legate de hardwaremicropython— acces și control al componentelor interne MicroPythonnetwork— configurarea rețeleiopenamp— oferă suport standard pentru multiprocesare asimetrică (AMP)uctypes— acces la date binare într-un mod structuratvfs— controlul sistemului de fișiere virtualcsi— senzori de camerăsensor— senzorul camereiimage— viziune artificialăgif— înregistrare gifmjpeg— înregistrare mjpegaudio— Modulul Audiodisplay— driver de afișajfir— driver pentru senzori termici (fir == far infrared)tof— driver pentru senzor time-of-flightimu— senzor imuomv— Informații despre OpenMV Camcrc— Calcul CRCml— Învățare automatăulab— bibliotecă de tablouri compatibilă numpyprotocol— Canale de protocol OpenMVlogging— jurnalizarea evenimentelorsenml— Sensor Markup Language
Ajutoare Python „înghețate” (frozen) livrate pe majoritatea plăcilor de cameră OpenMV (drivere, rețelistică și utilitare):
aioble— BLE asincronrpc— biblioteca rpcrtsp— biblioteca rtspmqtt— Client MQTT simplurequests— Client HTTPmutex— modulul mutexpid— Controler proporțional-integral-derivativbno055— Driver IMU BNO055modbus— Protocol slave Modbus RTUvl53l1x— Driver pentru senzorul de distanță ToF VL53L1X
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.
dht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocolul de magistrală 1-Wireds18x20— driver pentru senzorul de temperatură DS18x20neopixel— controlul LED-urilor WS2812 / NeoPixellsm6dsox— IMU pe 6 axe LSM6DSOXbmi270— IMU pe 6 axe BMI270bmm150— Magnetometru pe 3 axe BMM150lsm9ds1— IMU pe 9 axe LSM9DS1hts221— senzor de umiditate/temperatură HTS221lps22h— senzor de presiune LPS22HB/HHhs3003— senzor de umiditate/temperatură HS3003espflash— programator de firmware pentru bootloader-ul ROM al ESP32imu— ajutor IMU pentru Arduino Nano 33 BLE Sensessd1306— Driver OLEDtb6612— Driver de motor TB6612pca9674a— Driver pentru expander I2Ctfp410— Controler DVI/HDMIft5x06— Driver pentru ecran tactilgt911— Controler de atingere capacitiv cu 5 puncte GT911lora— driver pentru modem LoRaapds9960— driver pentru senzor de proximitate, gesturi și culoareromfs— Utilitare ajutătoare ROMFS
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 STM32ssd1306— driver OLEDtb6612— driver de motor TB6612jwt— JSON Web Tokensmicrodot— 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 Ensembleromfs— utilitare ajutătoare ROMFSpca9674a— driver de expander I2C PCA9674Ajwt— JSON Web Tokensmicrodot— 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 RTdht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocol de magistrală 1-Wireds18x20— driver de senzor de temperatură DS18x20neopixel— controlul LED-urilor WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver de motor TB6612pca9674a— driver de expander I2C PCA9674Ajwt— JSON Web Tokensmicrodot— 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 STM32tfp410— serializator DVI/HDMIft5x06— driver de ecran tactil capacitivdht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocol de magistrală 1-Wireds18x20— driver de senzor de temperatură DS18x20neopixel— controlul LED-urilor WS2812 / NeoPixelssd1306— driver OLEDtb6612— 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 STM32dht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocol de magistrală 1-Wireds18x20— driver de senzor de temperatură DS18x20neopixel— controlul LED-urilor WS2812 / NeoPixelssd1306— driver OLEDtb6612— 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 STM32dht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocol de magistrală 1-Wireds18x20— driver de senzor de temperatură DS18x20neopixel— controlul LED-urilor WS2812 / NeoPixelssd1306— driver OLEDtb6612— 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 STM32dht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocol de magistrală 1-Wireds18x20— driver de senzor de temperatură DS18x20neopixel— controlul LED-urilor WS2812 / NeoPixelssd1306— driver OLEDtb6612— 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 STM32dht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocol de magistrală 1-Wireds18x20— driver de senzor de temperatură DS18x20neopixel— controlul LED-urilor WS2812 / NeoPixelssd1306— driver OLEDtb6612— 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 STM32lsm6dsox— IMU LSM6DSOX cu 6 axedht— senzori de temperatură/umiditate DHT11 și DHT22ds18x20— driver de senzor de temperatură DS18x20onewire— protocol de magistrală 1-Wireneopixel— 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 STM32dht— senzori de temperatură/umiditate DHT11 și DHT22ds18x20— driver de senzor de temperatură DS18x20onewire— protocol de magistrală 1-Wireneopixel— controlul LED-urilor WS2812 / NeoPixellora— driver de modem LoRassd1306— driver OLEDtb6612— 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 STM32dht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocol de magistrală 1-Wireneopixel— controlul LED-urilor WS2812 / NeoPixelgt911— controler tactil capacitiv cu 5 puncte GT911ft5x06— 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 RP2040espflash— instrument de scriere a firmware-ului bootloader-ului ROM ESP32lsm6dsox— IMU LSM6DSOX cu 6 axedht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocol de magistrală 1-Wireds18x20— driver de senzor de temperatură DS18x20neopixel— 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 SoftDevicebmi270— IMU BMI270 cu 6 axebmm150— magnetometru BMM150 cu 3 axelsm9ds1— IMU LSM9DS1 cu 9 axehts221— senzor de umiditate/temperatură HTS221lps22h— senzor de presiune LPS22HB/HHhs3003— senzor de umiditate/temperatură HS3003apds9960— driver de senzor de proximitate, gesturi și culoaredht— senzori de temperatură/umiditate DHT11 și DHT22onewire— protocol de magistrală 1-Wireds18x20— driver de senzor de temperatură DS18x20neopixel— 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.