Biblioteki OpenMV MicroPython¶
Ostrzeżenie
Ważne podsumowanie tej sekcji
MicroPython udostępnia wbudowane moduły, które odzwierciedlają funkcjonalność standardowej biblioteki Pythona (np.
os,time), a także moduły specyficzne dla MicroPython (np.bluetooth,machine).Większość modułów standardowej biblioteki Pythona implementuje podzbiór funkcjonalności odpowiadającego im modułu Pythona, a w kilku przypadkach udostępnia rozszerzenia specyficzne dla MicroPython (np.
array,os)Ze względu na ograniczenia zasobów lub inne ograniczenia, niektóre porty lub wersje oprogramowania układowego mogą nie zawierać całej udokumentowanej tutaj funkcjonalności.
Aby umożliwić rozszerzalność, niektóre wbudowane moduły można rozszerzać kodem Pythona wczytywanym do systemu plików urządzenia.
Ten rozdział opisuje moduły (biblioteki funkcji i klas) wbudowane w MicroPython. Niniejsza dokumentacja generalnie stara się opisać wszystkie moduły oraz funkcje/klasy zaimplementowane w projekcie MicroPython. Jednak MicroPython jest wysoce konfigurowalny, a każdy port na konkretną płytkę/system wbudowany może zawierać tylko podzbiór dostępnych bibliotek MicroPython.
Mając to na uwadze, należy pamiętać, że niektóre funkcje/klasy w module (a nawet cały moduł) opisane w tej dokumentacji mogą być niedostępne w konkretnej kompilacji MicroPython na konkretnym systemie. Najlepszym miejscem do znalezienia ogólnych informacji o dostępności/niedostępności danej funkcji jest sekcja „General Information”, która zawiera informacje dotyczące konkretnego MicroPython port.
Na niektórych portach możesz odkryć dostępne, wbudowane biblioteki, które można zaimportować, wpisując następujące polecenie w REPL
help('modules')
Poza wbudowanymi bibliotekami opisanymi w tej dokumentacji, wiele dodatkowych modułów ze standardowej biblioteki Pythona, a także dalszych rozszerzeń MicroPython do niej, można znaleźć w micropython-lib.
Standardowe biblioteki Pythona i mikrobiblioteki¶
Następujące standardowe biblioteki Pythona zostały „zmikrofikowane”, aby pasowały do filozofii MicroPython. Udostępniają one podstawową funkcjonalność danego modułu i mają stanowić bezpośredni zamiennik standardowej biblioteki Pythona.
array— tablice danych numerycznychasyncio— asynchroniczny harmonogram operacji we/wybinascii— konwersje binarne/ASCIIbuiltins— funkcje wbudowane i wyjątkicmath— funkcje matematyczne dla liczb zespolonychcollections— typy kolekcji i kontenerówerrno— systemowe kody błędówgc— sterowanie odśmiecaczem pamięcigzip— kompresja i dekompresja gziphashlib— algorytmy haszująceheapq— algorytm kolejki kopcowejio— strumienie wejścia/wyjściajson— kodowanie i dekodowanie JSONmarshal— serializacja obiektów Pythonamath— funkcje matematyczneos— podstawowe usługi „systemu operacyjnego”platform— dostęp do danych identyfikujących platformę bazowąrandom— generowanie liczb losowychre— proste wyrażenia regularneselect— oczekiwanie na zdarzenia w zbiorze strumienisocket— moduł socketssl— moduł SSL/TLSstring.templatelib— obsługa łańcuchów szablonowychstruct— pakowanie i rozpakowywanie prymitywnych typów danychsys— funkcje specyficzne dla systemutime— funkcje związane z czasemtypes— nazwy typów wbudowanychzlib— kompresja i dekompresja zlib
Biblioteki OpenMV Cam¶
Następujące sekcje opisują biblioteki dostępne na każdej płytce obsługiwanej przez OpenMV, obejmujące zarówno wbudowane elementy specyficzne dla MicroPython, jak i własne rozszerzenia OpenMV.
Wspólne moduły¶
Wbudowane w oprogramowanie układowe każdej płytki kamery OpenMV.
bluetooth— niskopoziomowa obsługa Bluetoothcryptolib— szyfry kryptograficznedeflate— kompresja i dekompresja deflateframebuf— manipulacja buforem ramkimachine— funkcje związane ze sprzętemmicropython— dostęp do wewnętrznych mechanizmów MicroPython i ich kontrolanetwork— konfiguracja sieciopenamp— zapewnia standardową obsługę przetwarzania asymetrycznego (AMP)uctypes— dostęp do danych binarnych w sposób strukturalnyvfs— sterowanie wirtualnym systemem plikówcsi— sensory kamerysensor— sensor kameryimage— wizja maszynowagif— nagrywanie gifmjpeg— nagrywanie mjpegaudio— Moduł Audiodisplay— sterownik wyświetlaczafir— sterownik sensora termicznego (fir == far infrared, daleka podczerwień)tof— sterownik sensora time-of-flightimu— sensor imuomv— Informacje o OpenMV Camcrc— Obliczanie CRCml— Uczenie maszynoweulab— biblioteka tablic zgodna z numpyprotocol— Kanały protokołu OpenMVlogging— rejestrowanie zdarzeńsenml— Sensor Markup Language
Zamrożone pomocniki Pythona dostarczane na większości płytek kamer OpenMV (sterowniki, sieci i narzędzia):
aioble— Asynchroniczne BLErpc— biblioteka rpcrtsp— biblioteka rtspmqtt— Prosty klient MQTTrequests— Klient HTTPmutex— moduł mutexpid— Regulator proporcjonalno-całkująco-różniczkującybno055— Sterownik IMU BNO055modbus— Protokół slave Modbus RTUvl53l1x— sterownik czujnika odległości ToF VL53L1X
Pomocniki sieciowe (wymagają działającego interfejsu sieciowego):
Framework webowy¶
Moduły frameworka serwera webowego. Zobacz sekcje poszczególnych płytek poniżej, aby sprawdzić, które płytki zawierają każdy z nich.
Moduły specyficzne dla portu¶
Moduły powiązane z konkretną rodziną MCU. Zobacz sekcje poszczególnych płytek poniżej, aby sprawdzić, które płytki zawierają każdy z nich.
Sterowniki sprzętowe¶
Sterowniki dla czujników, wyświetlaczy i innych urządzeń peryferyjnych dostarczanych na jednej lub kilku płytkach obsługiwanych przez OpenMV. Zobacz sekcje poszczególnych płytek poniżej, aby sprawdzić, które płytki zawierają każdy z nich.
dht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireds18x20— sterownik czujnika temperatury DS18x20neopixel— sterowanie diodami LED WS2812 / NeoPixellsm6dsox— 6-osiowa jednostka IMU LSM6DSOXbmi270— 6-osiowa jednostka IMU BMI270bmm150— 3-osiowy magnetometr BMM150lsm9ds1— 9-osiowa jednostka IMU LSM9DS1hts221— czujnik wilgotności/temperatury HTS221lps22h— sensor ciśnienia LPS22HB/HHhs3003— sensor wilgotności/temperatury HS3003espflash— programator oprogramowania układowego bootloadera ROM ESP32imu— pomocnik IMU dla Arduino Nano 33 BLE Sensessd1306— Sterownik OLEDtb6612— Sterownik silników TB6612pca9674a— Sterownik ekspandera I2Ctfp410— Kontroler DVI/HDMIft5x06— Sterownik ekranu dotykowegogt911— 5-punktowy pojemnościowy kontroler dotyku GT911lora— sterownik modemu LoRaapds9960— sterownik sensora zbliżeniowego, gestów i koloruromfs— Narzędzia pomocnicze ROMFS
Dostępność na poszczególnych płytkach¶
Poniższe listy pokazują, które moduły specyficzne dla portu oraz moduły sterowników są dostarczane na każdej płytce. Wszystkie moduły z sekcji Wspólne moduły, Zamrożone pomocniki Pythona i Pomocniki sieciowe (powyżej) są dostępne na każdej płytce kamery, o ile nie zaznaczono inaczej.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) z wbudowaną w układ jednostką NPU o częstotliwości 1 GHz i wydajności 600 GOPS INT8. Łączy NPU z sensorem PAG7936 1 MP z globalną migawką.
pyb— funkcje związane z płytkąstm— funkcjonalność specyficzna dla MCU STM32ssd1306— sterownik OLEDtb6612— sterownik silnika TB6612jwt— JSON Web Tokensmicrodot— minimalny framework HTTP
OpenMV AE3
Dwurdzeniowy SoC Alif Ensemble E3: Cortex-M55 @ 400 MHz (HP) plus Cortex-M55 @ 160 MHz (HE), z dwiema wbudowanymi w układ jednostkami NPU (400 MHz / 204 GOPS HP NPU + 160 MHz / 46 GOPS HE NPU).
alif— funkcje SoC Alif Ensembleromfs— narzędzia pomocnicze ROMFSpca9674a— sterownik ekspandera I2C PCA9674Ajwt— JSON Web Tokensmicrodot— minimalny framework HTTP
OpenMV Cam RT1062
Niskoprądowa płytka do wizji maszynowej oparta na NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Łączy szybkie połączenia sieciowe USB-C, Wi-Fi / Bluetooth oraz Ethernet 10/100.
mimxrt— funkcjonalność specyficzna dla NXP i.MX RTdht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireds18x20— sterownik czujnika temperatury DS18x20neopixel— sterowanie diodami LED WS2812 / NeoPixelssd1306— sterownik OLEDtb6612— sterownik silnika TB6612pca9674a— sterownik ekspandera I2C PCA9674Ajwt— JSON Web Tokensmicrodot— minimalny framework HTTP
OpenMV Pure Thermal
Kompletna płytka systemowa do obrazowania termicznego oparta na STM32H743 (Cortex-M7 @ 480 MHz) z 64 MB zewnętrznej pamięci SDRAM, 32 MB pamięci flash QSPI, sprzętowym koderem-dekoderem JPEG oraz wyjściem DVI/HDMI.
pyb— funkcje związane z płytkąstm— funkcjonalność specyficzna dla MCU STM32tfp410— serializator DVI/HDMIft5x06— sterownik pojemnościowego ekranu dotykowegodht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireds18x20— sterownik czujnika temperatury DS18x20neopixel— sterowanie diodami LED WS2812 / NeoPixelssd1306— sterownik OLEDtb6612— sterownik silnika TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 MHz) z 32 MB zewnętrznej pamięci SDRAM, 32 MB pamięci flash QSPI, sprzętowym koderem-dekoderem JPEG oraz modułem kamery OV5640 5MP.
pyb— funkcje związane z płytkąstm— funkcjonalność specyficzna dla MCU STM32dht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireds18x20— sterownik czujnika temperatury DS18x20neopixel— sterowanie diodami LED WS2812 / NeoPixelssd1306— sterownik OLEDtb6612— sterownik silnika TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 MHz) z 1 MB wewnętrznej pamięci SRAM, 2 MB wewnętrznej pamięci flash i sprzętowym koderem-dekoderem JPEG.
pyb— funkcje związane z płytkąstm— funkcjonalność specyficzna dla MCU STM32dht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireds18x20— sterownik czujnika temperatury DS18x20neopixel— sterowanie diodami LED WS2812 / NeoPixelssd1306— sterownik OLEDtb6612— sterownik silnika TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 MHz) z 512 KB wewnętrznej pamięci SRAM i 2 MB wewnętrznej pamięci flash. Dostarczana z sensorem OV7725.
pyb— funkcje związane z płytkąstm— funkcjonalność specyficzna dla MCU STM32dht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireds18x20— sterownik czujnika temperatury DS18x20neopixel— sterowanie diodami LED WS2812 / NeoPixelssd1306— sterownik OLEDtb6612— sterownik silnika TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 MHz) z 256 KB wewnętrznej pamięci SRAM i 1 MB wewnętrznej pamięci flash. Dostarczana z sensorem OV7725.
pyb— funkcje związane z płytkąstm— funkcjonalność specyficzna dla MCU STM32dht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireds18x20— sterownik czujnika temperatury DS18x20neopixel— sterowanie diodami LED WS2812 / NeoPixelssd1306— sterownik OLEDtb6612— sterownik silnika TB6612
Arduino Nicla Vision
Płytka do wizji maszynowej o wymiarach 22,86 × 22,86 mm oparta na dwurdzeniowym SoC STM32H747AII6: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.
pyb— funkcje związane z płytkąstm— funkcjonalność specyficzna dla MCU STM32lsm6dsox— 6-osiowy IMU LSM6DSOXdht— czujniki temperatury/wilgotności DHT11 i DHT22ds18x20— sterownik czujnika temperatury DS18x20onewire— protokół magistrali 1-Wireneopixel— sterowanie diodami LED WS2812 / NeoPixel
Arduino Portenta H7
Przemysłowa płytka deweloperska o wymiarach 66 × 25 mm oparta na dwurdzeniowym SoC STM32H747XI: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.
pyb— funkcje związane z płytkąstm— funkcjonalność specyficzna dla MCU STM32dht— czujniki temperatury/wilgotności DHT11 i DHT22ds18x20— sterownik czujnika temperatury DS18x20onewire— protokół magistrali 1-Wireneopixel— sterowanie diodami LED WS2812 / NeoPixellora— sterownik modemu LoRassd1306— sterownik OLEDtb6612— sterownik silnika TB6612
Arduino Giga R1 WiFi
Płytka w formacie Mega o wymiarach 101 × 53 mm oparta na dwurdzeniowym SoC STM32H747XI: Cortex-M7 @ 480 MHz plus Cortex-M4 @ 240 MHz, z wbudowanym ekranem dotykowym 800x480.
pyb— funkcje związane z płytkąstm— funkcjonalność specyficzna dla MCU STM32dht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireneopixel— sterowanie diodami LED WS2812 / NeoPixelgt911— 5-punktowy pojemnościowy kontroler dotyku GT911ft5x06— sterownik pojemnościowego ekranu dotykowego
Arduino Nano RP2040 Connect
Płytka w formacie Nano oparta na RP2040 z modułem Wi-Fi/Bluetooth U-blox NINA-W102. Już nieaktywnie wspierana; ostatnie wydanie oprogramowania układowego OpenMV dla tej płytki jest zachowane do celów archiwalnych.
rp2— pomocniki PIO / DMA / flash specyficzne dla RP2040espflash— narzędzie do wgrywania oprogramowania układowego przez bootloader ROM ESP32lsm6dsox— 6-osiowy IMU LSM6DSOXdht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireds18x20— sterownik czujnika temperatury DS18x20neopixel— sterowanie diodami LED WS2812 / NeoPixel
Arduino Nano 33 BLE Sense
Płytka w formacie Nano oparta na Nordic nRF52840 z wbudowanym zestawem czujników Arduino. Już nieaktywnie wspierana; ostatnie wydanie oprogramowania układowego OpenMV dla tej płytki jest zachowane do celów archiwalnych.
ubluepy— API urządzenia peryferyjnego i centralnego Bluetooth LE na Nordic SoftDevicebmi270— 6-osiowy IMU BMI270bmm150— 3-osiowy magnetometr BMM150lsm9ds1— 9-osiowy IMU LSM9DS1hts221— czujnik wilgotności/temperatury HTS221lps22h— czujnik ciśnienia LPS22HB/HHhs3003— czujnik wilgotności/temperatury HS3003apds9960— sterownik czujnika zbliżeniowego, gestów i kolorudht— czujniki temperatury/wilgotności DHT11 i DHT22onewire— protokół magistrali 1-Wireds18x20— sterownik czujnika temperatury DS18x20neopixel— sterowanie diodami LED WS2812 / NeoPixel
Rozszerzanie wbudowanych bibliotek z poziomu Pythona¶
Podzbiór wbudowanych modułów można rozszerzać kodem Pythona, udostępniając w systemie plików moduł o tej samej nazwie. Ta rozszerzalność dotyczy następujących modułów standardowej biblioteki Pythona, które są wbudowane w oprogramowanie układowe: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, a także specyficznego dla MicroPython modułu machine. Wszystkich pozostałych wbudowanych modułów nie można rozszerzać z poziomu systemu plików.
Pozwala to użytkownikowi udostępnić rozszerzoną implementację wbudowanej biblioteki (być może w celu zapewnienia dodatkowej zgodności z CPython lub brakującej funkcjonalności). Jest to szeroko stosowane w micropython-lib, zobacz Zarządzanie pakietami, aby uzyskać więcej informacji. Moduł z systemu plików zazwyczaj wykonuje import z symbolem wieloznacznym z wbudowanego modułu, aby odziedziczyć wszystkie globalne nazwy (klasy, funkcje i zmienne) z wbudowanego modułu.
W MicroPython v1.21.0 i nowszych, aby zapobiec importowaniu samego siebie przez moduł z systemu plików, może on wymusić import wbudowanego modułu poprzez tymczasowe wyczyszczenie sys.path podczas importu. Na przykład, aby rozszerzyć moduł time z poziomu Pythona, plik o nazwie time.py w systemie plików wykonałby następujące czynności:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
Rezultatem jest to, że time.py zawiera wszystkie globalne nazwy wbudowanego modułu time, ale dodaje extra_method.
We wcześniejszych wersjach MicroPython można wymusić import wbudowanego modułu, dodając u na początku jego nazwy. Na przykład import utime zamiast import time. Na przykład time.py w systemie plików mógłby wyglądać tak:
from utime import *
def extra_method():
pass
Ten sposób jest nadal obsługiwany, ale opisana powyżej metoda z sys.path jest obecnie preferowana, ponieważ przedrostek u zostanie usunięty z nazw wbudowanych modułów w przyszłej wersji MicroPython.
Poza sytuacjami, gdy konkretnie zachodzi potrzeba wymuszenia użycia wbudowanego modułu, kod powinien zawsze używać import module zamiast import umodule.