Knihovny OpenMV MicroPython¶
Varování
Důležité shrnutí této sekce
MicroPython poskytuje vestavěné moduly, které zrcadlí funkčnost standardní knihovny Pythonu (např.
os,time), a také moduly specifické pro MicroPython (např.bluetooth,machine).Většina modulů standardní knihovny Pythonu implementuje podmnožinu funkčnosti odpovídajícího modulu Pythonu a v několika případech poskytuje některá rozšíření specifická pro MicroPython (např.
array,os)Kvůli omezením zdrojů nebo jiným omezením nemusí některé porty nebo verze firmwaru obsahovat veškerou zde popsanou funkčnost.
Aby byla umožněna rozšiřitelnost, lze některé vestavěné moduly rozšířit kódem v Pythonu načteným do souborového systému zařízení.
Tato kapitola popisuje moduly (knihovny funkcí a tříd), které jsou vestavěny v MicroPythonu. Tato dokumentace obecně usiluje o popis všech modulů a funkcí/tříd, které jsou v projektu MicroPython implementovány. MicroPython je však vysoce konfigurovatelný a každý port na konkrétní desku/vestavěný systém může obsahovat pouze podmnožinu dostupných knihoven MicroPythonu.
S ohledem na to mějte na paměti, že některé funkce/třídy v modulu (nebo dokonce celý modul) popsané v této dokumentaci mohou být nedostupné v konkrétním sestavení MicroPythonu na konkrétním systému. Nejlepším místem pro nalezení obecných informací o dostupnosti/nedostupnosti konkrétní funkce je sekce „General Information“, která obsahuje informace týkající se konkrétního MicroPython port.
Na některých portech můžete zjistit dostupné vestavěné knihovny, které lze importovat, zadáním následujícího na REPL
help('modules')
Kromě vestavěných knihoven popsaných v této dokumentaci lze v micropython-lib najít mnoho dalších modulů ze standardní knihovny Pythonu, stejně jako další rozšíření MicroPythonu.
Standardní knihovny Pythonu a mikroknihovny¶
Následující standardní knihovny Pythonu byly „mikro-fikovány“, aby zapadly do filozofie MicroPythonu. Poskytují základní funkčnost daného modulu a jsou určeny jako přímá náhrada za standardní knihovnu Pythonu.
array— pole numerických datasyncio— asynchronní I/O plánovačbinascii— binární/ASCII konverzebuiltins— vestavěné funkce a výjimkycmath— matematické funkce pro komplexní číslacollections— kolekce a kontejnerové typyerrno— systémové chybové kódygc— řízení garbage collectorugzip— komprese a dekomprese gziphashlib— hashovací algoritmyheapq— algoritmus haldové frontyio— vstupní/výstupní streamyjson— kódování a dekódování JSONmarshal— serializace objektů v Pythonumath— matematické funkceos— základní služby „operačního systému“platform— přístup k identifikačním datům podkladové platformyrandom— generování náhodných číselre— jednoduché regulární výrazyselect— čekání na události na množině streamůsocket— modul socketssl— modul SSL/TLSstring.templatelib— podpora šablonových řetězcůstruct— balení a rozbalení primitivních datových typůsys— funkce specifické pro systémtime— funkce související s časemtypes— názvy vestavěných typůzlib— komprese a dekomprese zlib
Knihovny OpenMV Cam¶
Následující sekce popisují knihovny dostupné na každé desce podporované OpenMV, včetně vestavěných modulů specifických pro MicroPython i vlastních rozšíření OpenMV.
Společné moduly¶
Vestavěné ve firmwaru na každé desce kamery OpenMV.
bluetooth— nízkoúrovňový Bluetoothcryptolib— kryptografické šifrydeflate— komprese a dekomprese deflateframebuf— manipulace se snímkovým bufferem (frame buffer)machine— funkce související s hardwaremmicropython— přístup k interním částem MicroPythonu a jejich řízenínetwork— konfigurace sítěopenamp— poskytuje standardní podporu asymetrického multiprocessingu (AMP)uctypes— strukturovaný přístup k binárním datůmvfs— ovládání virtuálního souborového systémucsi— kamerové senzorysensor— senzor kameryimage— strojové viděnígif— nahrávání gifmjpeg— nahrávání mjpegaudio— Modul Audiodisplay— ovladač displejefir— ovladač termálního senzoru (fir == far infrared, vzdálené infračervené záření)tof— ovladač time-of-flight senzoruimu— imu senzoromv— Informace o OpenMV Camcrc— Výpočet CRCml— Strojové učeníulab— knihovna polí kompatibilní s numpyprotocol— Kanály protokolu OpenMVlogging— protokolování událostísenml— Sensor Markup Language
Zmrazení pomocníci v Pythonu dodávaní na většině desek kamer OpenMV (ovladače, síťování a nástroje):
aioble— Asynchronní BLErpc— knihovna rpcrtsp— knihovna rtspmqtt— Jednoduchý MQTT klientrequests— HTTP klientmutex— modul mutexpid— Proporcionálně-integračně-derivační regulátorbno055— Ovladač IMU BNO055modbus— protokol Modbus RTU slavevl53l1x— ovladač ToF senzoru vzdálenosti VL53L1X
Síťoví pomocníci (vyžadují funkční síťové rozhraní):
Webový framework¶
Moduly frameworku webového serveru. Viz sekce pro jednotlivé desky níže, které ukazují, které desky obsahují který modul.
Moduly specifické pro port¶
Moduly vázané na konkrétní rodinu MCU. Viz sekce pro jednotlivé desky níže, které ukazují, které desky obsahují který modul.
Hardwarové ovladače¶
Ovladače pro senzory, displeje a další periferie dodávané na jedné nebo více deskách podporovaných OpenMV. Viz sekce pro jednotlivé desky níže, které ukazují, které desky obsahují který modul.
dht— senzory teploty/vlhkosti DHT11 a DHT22onewire— sběrnicový protokol 1-Wireds18x20— ovladač teplotního senzoru DS18x20neopixel— ovládání LED diod WS2812 / NeoPixellsm6dsox— 6osá IMU LSM6DSOXbmi270— BMI270 6osá IMUbmm150— BMM150 3osý magnetometrlsm9ds1— 9osá IMU LSM9DS1hts221— senzor vlhkosti/teploty HTS221lps22h— tlakový senzor LPS22HB/HHhs3003— senzor vlhkosti/teploty HS3003espflash— nástroj pro nahrávání firmwaru přes ESP32 ROM bootloaderimu— pomocník IMU pro Arduino Nano 33 BLE Sensessd1306— OLED ovladačtb6612— ovladač motorů TB6612pca9674a— Ovladač I2C expandérutfp410— DVI/HDMI řadičft5x06— Ovladač dotykové obrazovkygt911— GT911 5bodový kapacitní dotykový řadičlora— ovladač LoRa modemuapds9960— ovladač senzoru přiblížení, gest a barvyromfs— Pomocné nástroje ROMFS
Dostupnost na jednotlivých deskách¶
Níže uvedené seznamy ukazují, které moduly specifické pro port a ovladače jsou dodávány na každé desce. Všechny moduly v sekcích Společné moduly, Zmrazení pomocníci v Pythonu a Síťoví pomocníci (výše) jsou dostupné na každé desce kamery, pokud není uvedeno jinak.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) s 1GHz on-chip NPU s výkonem 600 GOPS INT8. Kombinuje NPU se senzorem PAG7936 1 MP s globální závěrkou.
pyb— funkce související s deskoustm— funkčnost specifická pro MCU STM32ssd1306— OLED ovladačtb6612— ovladač motoru TB6612jwt— JSON Web Tokensmicrodot— minimální HTTP framework
OpenMV AE3
Dvoujádrový SoC Alif Ensemble E3: Cortex-M55 @ 400 MHz (HP) plus Cortex-M55 @ 160 MHz (HE), se dvěma on-chip NPU (400 MHz / 204 GOPS HP NPU + 160 MHz / 46 GOPS HE NPU).
alif— funkce SoC Alif Ensembleromfs— pomocné nástroje ROMFSpca9674a— ovladač I2C expandéru PCA9674Ajwt— JSON Web Tokensmicrodot— minimální HTTP framework
OpenMV Cam RT1062
Nízkopříkonová deska pro strojové vidění postavená na NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Kombinuje vysokorychlostní síťování přes USB-C, Wi-Fi / Bluetooth a 10/100 Ethernet.
mimxrt— funkčnost specifická pro NXP i.MX RTdht— senzory teploty/vlhkosti DHT11 a DHT22onewire— protokol sběrnice 1-Wireds18x20— ovladač teplotního senzoru DS18x20neopixel— ovládání LED WS2812 / NeoPixelssd1306— OLED ovladačtb6612— ovladač motoru TB6612pca9674a— ovladač I2C expandéru PCA9674Ajwt— JSON Web Tokensmicrodot— minimální HTTP framework
OpenMV Pure Thermal
Kompletní deska pro termovizní zobrazování postavená na STM32H743 (Cortex-M7 @ 480 MHz) se 64 MB externí SDRAM, 32 MB QSPI flash pamětí, hardwarovým JPEG kodekem a DVI/HDMI výstupem.
pyb— funkce související s deskoustm— funkčnost specifická pro MCU STM32tfp410— DVI/HDMI serializérft5x06— ovladač kapacitní dotykové obrazovkydht— senzory teploty/vlhkosti DHT11 a DHT22onewire— protokol sběrnice 1-Wireds18x20— ovladač teplotního senzoru DS18x20neopixel— ovládání LED WS2812 / NeoPixelssd1306— OLED ovladačtb6612— ovladač motoru TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 MHz) s 32 MB externí SDRAM, 32 MB QSPI flash pamětí, hardwarovým JPEG kodekem a 5MP kamerovým modulem OV5640.
pyb— funkce související s deskoustm— funkčnost specifická pro MCU STM32dht— senzory teploty/vlhkosti DHT11 a DHT22onewire— protokol sběrnice 1-Wireds18x20— ovladač teplotního senzoru DS18x20neopixel— ovládání LED WS2812 / NeoPixelssd1306— OLED ovladačtb6612— ovladač motoru TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 MHz) s 1 MB interní SRAM, 2 MB interní flash pamětí a hardwarovým JPEG kodekem.
pyb— funkce související s deskoustm— funkčnost specifická pro MCU STM32dht— senzory teploty/vlhkosti DHT11 a DHT22onewire— protokol sběrnice 1-Wireds18x20— ovladač teplotního senzoru DS18x20neopixel— ovládání LED WS2812 / NeoPixelssd1306— OLED ovladačtb6612— ovladač motoru TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 MHz) s 512 KB interní SRAM a 2 MB interní flash pamětí. Dodáváno se senzorem OV7725.
pyb— funkce související s deskoustm— funkčnost specifická pro MCU STM32dht— senzory teploty/vlhkosti DHT11 a DHT22onewire— protokol sběrnice 1-Wireds18x20— ovladač teplotního senzoru DS18x20neopixel— ovládání LED WS2812 / NeoPixelssd1306— OLED ovladačtb6612— ovladač motoru TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 MHz) s 256 KB interní SRAM a 1 MB interní flash pamětí. Dodáváno se senzorem OV7725.
pyb— funkce související s deskoustm— funkčnost specifická pro MCU STM32dht— senzory teploty/vlhkosti DHT11 a DHT22onewire— protokol sběrnice 1-Wireds18x20— ovladač teplotního senzoru DS18x20neopixel— ovládání LED WS2812 / NeoPixelssd1306— OLED ovladačtb6612— ovladač motoru TB6612
Arduino Nicla Vision
Deska pro strojové vidění o rozměrech 22,86 × 22,86 mm postavená na dvoujádrovém SoC STM32H747AII6: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.
pyb— funkce související s deskoustm— funkčnost specifická pro MCU STM32lsm6dsox— 6osá IMU LSM6DSOXdht— senzory teploty/vlhkosti DHT11 a DHT22ds18x20— ovladač teplotního senzoru DS18x20onewire— protokol sběrnice 1-Wireneopixel— ovládání LED WS2812 / NeoPixel
Arduino Portenta H7
Průmyslová vývojová deska o rozměrech 66 × 25 mm postavená na dvoujádrovém SoC STM32H747XI: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.
pyb— funkce související s deskoustm— funkčnost specifická pro MCU STM32dht— senzory teploty/vlhkosti DHT11 a DHT22ds18x20— ovladač teplotního senzoru DS18x20onewire— protokol sběrnice 1-Wireneopixel— ovládání LED WS2812 / NeoPixellora— ovladač modemu LoRassd1306— OLED ovladačtb6612— ovladač motoru TB6612
Arduino Giga R1 WiFi
Deska formátu Mega o rozměrech 101 × 53 mm postavená na dvoujádrovém SoC STM32H747XI: Cortex-M7 @ 480 MHz plus Cortex-M4 @ 240 MHz, s palubní dotykovou obrazovkou 800x480.
pyb— funkce související s deskoustm— funkčnost specifická pro MCU STM32dht— senzory teploty/vlhkosti DHT11 a DHT22onewire— protokol sběrnice 1-Wireneopixel— ovládání LED WS2812 / NeoPixelgt911— 5bodový kapacitní dotykový kontrolér GT911ft5x06— ovladač kapacitní dotykové obrazovky
Arduino Nano RP2040 Connect
Deska formátu Nano založená na RP2040 s Wi-Fi/Bluetooth modulem U-blox NINA-W102. Již není aktivně podporována; poslední vydání firmwaru OpenMV pro tuto desku je uchováváno pro archivní účely.
rp2— pomocníci PIO / DMA / flash specifičtí pro RP2040espflash— nástroj pro flashování firmwaru ROM bootloaderu ESP32lsm6dsox— 6osá IMU LSM6DSOXdht— senzory teploty/vlhkosti DHT11 a DHT22onewire— protokol sběrnice 1-Wireds18x20— ovladač teplotního senzoru DS18x20neopixel— ovládání LED WS2812 / NeoPixel
Arduino Nano 33 BLE Sense
Deska formátu Nano s Nordic nRF52840 a palubní sadou senzorů Arduino. Již není aktivně podporována; poslední vydání firmwaru OpenMV pro tuto desku je uchováváno pro archivní účely.
ubluepy— API pro Bluetooth LE periferie a centrální zařízení na Nordic SoftDevicebmi270— 6osá IMU BMI270bmm150— 3osý magnetometr BMM150lsm9ds1— 9osá IMU LSM9DS1hts221— senzor vlhkosti/teploty HTS221lps22h— tlakový senzor LPS22HB/HHhs3003— senzor vlhkosti/teploty HS3003apds9960— ovladač senzoru přiblížení, gest a barvydht— senzory teploty/vlhkosti DHT11 a DHT22onewire— protokol sběrnice 1-Wireds18x20— ovladač teplotního senzoru DS18x20neopixel— ovládání LED WS2812 / NeoPixel
Rozšiřování vestavěných knihoven z Pythonu¶
Podmnožinu vestavěných modulů lze rozšířit kódem v Pythonu poskytnutím modulu stejného názvu v souborovém systému. Tato rozšiřitelnost se vztahuje na následující moduly standardní knihovny Pythonu, které jsou vestavěny ve firmwaru: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, stejně jako na modul machine specifický pro MicroPython. Všechny ostatní vestavěné moduly nelze ze souborového systému rozšířit.
To uživateli umožňuje poskytnout rozšířenou implementaci vestavěné knihovny (například pro zajištění další kompatibility s CPythonem nebo chybějící funkčnosti). To se hojně používá v micropython-lib, viz Správa balíčků pro více informací. Modul v souboru obvykle provede zástupný import vestavěného modulu, aby zdědil všechny globální symboly (třídy, funkce a proměnné) z vestavěného modulu.
V MicroPythonu v1.21.0 a vyšším může modul v souboru, aby si zabránil importovat sám sebe, vynutit import vestavěného modulu dočasným vyprázdněním sys.path během importu. Například pro rozšíření modulu time z Pythonu by soubor s názvem time.py v souborovém systému provedl následující:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
Výsledkem je, že time.py obsahuje všechny globální symboly vestavěného modulu time, ale přidává extra_method.
Ve starších verzích MicroPythonu můžete vynutit import vestavěného modulu připojením u na začátek jeho názvu. Například import utime namísto import time. Například time.py v souborovém systému by mohl vypadat takto:
from utime import *
def extra_method():
pass
Tento způsob je stále podporován, ale výše popsaná metoda sys.path je nyní upřednostňována, protože předpona u bude z názvů vestavěných modulů v budoucí verzi MicroPythonu odstraněna.
Kromě případů, kdy je konkrétně potřeba vynutit použití vestavěného modulu, by kód měl vždy používat import module namísto import umodule.