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.

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.

Zamrożone pomocniki Pythona dostarczane na większości płytek kamer OpenMV (sterowniki, sieci i narzędzia):

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.

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 STM32

  • ssd1306 — sterownik OLED

  • tb6612 — sterownik silnika TB6612

  • jwt — JSON Web Tokens

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

  • romfs — narzędzia pomocnicze ROMFS

  • pca9674a — sterownik ekspandera I2C PCA9674A

  • jwt — JSON Web Tokens

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

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • onewire — protokół magistrali 1-Wire

  • ds18x20 — sterownik czujnika temperatury DS18x20

  • neopixel — sterowanie diodami LED WS2812 / NeoPixel

  • ssd1306 — sterownik OLED

  • tb6612 — sterownik silnika TB6612

  • pca9674a — sterownik ekspandera I2C PCA9674A

  • jwt — JSON Web Tokens

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

  • tfp410 — serializator DVI/HDMI

  • ft5x06 — sterownik pojemnościowego ekranu dotykowego

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • onewire — protokół magistrali 1-Wire

  • ds18x20 — sterownik czujnika temperatury DS18x20

  • neopixel — sterowanie diodami LED WS2812 / NeoPixel

  • ssd1306 — sterownik OLED

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

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • onewire — protokół magistrali 1-Wire

  • ds18x20 — sterownik czujnika temperatury DS18x20

  • neopixel — sterowanie diodami LED WS2812 / NeoPixel

  • ssd1306 — sterownik OLED

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

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • onewire — protokół magistrali 1-Wire

  • ds18x20 — sterownik czujnika temperatury DS18x20

  • neopixel — sterowanie diodami LED WS2812 / NeoPixel

  • ssd1306 — sterownik OLED

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

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • onewire — protokół magistrali 1-Wire

  • ds18x20 — sterownik czujnika temperatury DS18x20

  • neopixel — sterowanie diodami LED WS2812 / NeoPixel

  • ssd1306 — sterownik OLED

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

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • onewire — protokół magistrali 1-Wire

  • ds18x20 — sterownik czujnika temperatury DS18x20

  • neopixel — sterowanie diodami LED WS2812 / NeoPixel

  • ssd1306 — sterownik OLED

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

  • lsm6dsox — 6-osiowy IMU LSM6DSOX

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • ds18x20 — sterownik czujnika temperatury DS18x20

  • onewire — protokół magistrali 1-Wire

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

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • ds18x20 — sterownik czujnika temperatury DS18x20

  • onewire — protokół magistrali 1-Wire

  • neopixel — sterowanie diodami LED WS2812 / NeoPixel

  • lora — sterownik modemu LoRa

  • ssd1306 — sterownik OLED

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

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • onewire — protokół magistrali 1-Wire

  • neopixel — sterowanie diodami LED WS2812 / NeoPixel

  • gt911 — 5-punktowy pojemnościowy kontroler dotyku GT911

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

  • espflash — narzędzie do wgrywania oprogramowania układowego przez bootloader ROM ESP32

  • lsm6dsox — 6-osiowy IMU LSM6DSOX

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • onewire — protokół magistrali 1-Wire

  • ds18x20 — sterownik czujnika temperatury DS18x20

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

  • bmi270 — 6-osiowy IMU BMI270

  • bmm150 — 3-osiowy magnetometr BMM150

  • lsm9ds1 — 9-osiowy IMU LSM9DS1

  • hts221 — czujnik wilgotności/temperatury HTS221

  • lps22h — czujnik ciśnienia LPS22HB/HH

  • hs3003 — czujnik wilgotności/temperatury HS3003

  • apds9960 — sterownik czujnika zbliżeniowego, gestów i koloru

  • dht — czujniki temperatury/wilgotności DHT11 i DHT22

  • onewire — protokół magistrali 1-Wire

  • ds18x20 — sterownik czujnika temperatury DS18x20

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