Библиотеки OpenMV MicroPython

Предупреждение

Важное резюме этого раздела

  • MicroPython предоставляет встроенные модули, повторяющие функциональность стандартной библиотеки Python (например, os, time), а также модули, специфичные для MicroPython (например, bluetooth, machine).

  • Большинство модулей стандартной библиотеки Python реализуют подмножество функциональности эквивалентного модуля Python, а в нескольких случаях предоставляют специфичные для MicroPython расширения (например, array, os)

  • Из-за ограничений ресурсов или иных причин некоторые порты или версии прошивки могут не включать всю описанную здесь функциональность.

  • Для обеспечения расширяемости некоторые встроенные модули можно расширить с помощью кода Python, загруженного в файловую систему устройства.

В этой главе описаны модули (библиотеки функций и классов), встроенные в MicroPython. Эта документация в целом стремится описать все модули и функции/классы, реализованные в проекте MicroPython. Однако MicroPython легко настраивается, и каждый порт под конкретную плату/встраиваемую систему может включать лишь подмножество доступных библиотек MicroPython.

С учётом этого имейте в виду, что некоторые функции/классы в модуле (или даже модуль целиком), описанные в этой документации, могут быть недоступны в конкретной сборке MicroPython на конкретной системе. Лучшее место для поиска общих сведений о доступности/недоступности той или иной возможности — раздел «General Information», содержащий информацию, относящуюся к конкретному порту MicroPython.

На некоторых портах вы можете узнать доступные встроенные библиотеки, которые можно импортировать, введя следующее в REPL:

help('modules')

Помимо встроенных библиотек, описанных в этой документации, множество других модулей из стандартной библиотеки Python, а также дополнительные расширения MicroPython к ней, можно найти в micropython-lib.

Стандартные библиотеки Python и микробиблиотеки

Следующие стандартные библиотеки Python были «микро-фицированы» в соответствии с философией MicroPython. Они обеспечивают основную функциональность соответствующего модуля и предназначены для использования в качестве полноценной замены стандартной библиотеки Python.

Библиотеки OpenMV Cam

В следующих разделах описаны библиотеки, доступные на каждой поддерживаемой OpenMV плате, включая как специфичные для MicroPython встроенные модули, так и собственные расширения OpenMV.

Общие модули

Встроены в прошивку на каждой плате камеры OpenMV.

Замороженные вспомогательные модули Python, поставляемые на большинстве плат камер OpenMV (драйверы, сеть и утилиты):

Вспомогательные модули для работы с сетью (требуют работающего сетевого интерфейса):

Веб-фреймворк

Модули фреймворка веб-сервера. См. разделы по конкретным платам ниже, чтобы узнать, какие платы включают каждый из них.

Модули, специфичные для порта

Модули, привязанные к конкретному семейству MCU. См. разделы по конкретным платам ниже, чтобы узнать, какие платы включают каждый из них.

Драйверы оборудования

Драйверы для датчиков, дисплеев и других периферийных устройств, поставляемых на одной или нескольких поддерживаемых OpenMV платах. См. разделы по конкретным платам ниже, чтобы узнать, какие платы включают каждый из них.

Доступность по платам

В списках ниже показано, какие специфичные для порта модули и модули драйверов поставляются на каждой плате. Все модули из разделов Общие модули, Замороженные вспомогательные модули Python и Вспомогательные модули для работы с сетью (выше) доступны на каждой плате камеры, если не указано иное.

OpenMV N6

STM32N657 (Cortex-M55 @ 800 МГц) с внутричиповым NPU на 1 ГГц с производительностью 600 GOPS INT8. Сочетает NPU с датчиком PAG7936 на 1 МП с глобальным затвором.

  • pyb — функции, связанные с платой

  • stm — функциональность, специфичная для MCU STM32

  • ssd1306 — драйвер OLED

  • tb6612 — драйвер двигателя TB6612

  • jwt — JSON Web Tokens

  • microdot — минимальный HTTP-фреймворк

OpenMV AE3

Двухъядерная SoC Alif Ensemble E3: Cortex-M55 @ 400 МГц (HP) плюс Cortex-M55 @ 160 МГц (HE), с двумя внутричиповыми NPU (400 МГц / 204 GOPS HP NPU + 160 МГц / 46 GOPS HE NPU).

  • alif — функции SoC Alif Ensemble

  • romfs — вспомогательные утилиты ROMFS

  • pca9674a — драйвер I2C-расширителя PCA9674A

  • jwt — JSON Web Tokens

  • microdot — минимальный HTTP-фреймворк

OpenMV Cam RT1062

Маломощная плата машинного зрения на базе NXP i.MX RT1062 (Cortex-M7 @ 600 МГц). Сочетает высокоскоростную сеть через USB-C, Wi-Fi / Bluetooth и Ethernet 10/100.

  • mimxrt — функциональность, специфичная для NXP i.MX RT

  • dht — датчики температуры/влажности DHT11 и DHT22

  • onewire — протокол шины 1-Wire

  • ds18x20 — драйвер датчика температуры DS18x20

  • neopixel — управление светодиодами WS2812 / NeoPixel

  • ssd1306 — драйвер OLED

  • tb6612 — драйвер двигателя TB6612

  • pca9674a — драйвер I2C-расширителя PCA9674A

  • jwt — JSON Web Tokens

  • microdot — минимальный HTTP-фреймворк

OpenMV Pure Thermal

Полносистемная плата тепловизионной съёмки на базе STM32H743 (Cortex-M7 @ 480 МГц) с 64 МБ внешней SDRAM, 32 МБ QSPI-флеш-памяти, аппаратным кодеком JPEG и выходом DVI/HDMI.

  • pyb — функции, связанные с платой

  • stm — функциональность, специфичная для MCU STM32

  • tfp410 — сериализатор DVI/HDMI

  • ft5x06 — драйвер ёмкостного сенсорного экрана

  • dht — датчики температуры/влажности DHT11 и DHT22

  • onewire — протокол шины 1-Wire

  • ds18x20 — драйвер датчика температуры DS18x20

  • neopixel — управление светодиодами WS2812 / NeoPixel

  • ssd1306 — драйвер OLED

  • tb6612 — драйвер двигателя TB6612

OpenMV Cam H7 Plus

STM32H743 (Cortex-M7 @ 480 МГц) с 32 МБ внешней SDRAM, 32 МБ QSPI-флеш-памяти, аппаратным кодеком JPEG и модулем камеры OV5640 на 5 МП.

  • pyb — функции, связанные с платой

  • stm — функциональность, специфичная для MCU STM32

  • dht — датчики температуры/влажности DHT11 и DHT22

  • onewire — протокол шины 1-Wire

  • ds18x20 — драйвер датчика температуры DS18x20

  • neopixel — управление светодиодами WS2812 / NeoPixel

  • ssd1306 — драйвер OLED

  • tb6612 — драйвер двигателя TB6612

OpenMV Cam H7

STM32H743 (Cortex-M7 @ 480 МГц) с 1 МБ внутренней SRAM, 2 МБ внутренней флеш-памяти и аппаратным кодеком JPEG.

  • pyb — функции, связанные с платой

  • stm — функциональность, специфичная для MCU STM32

  • dht — датчики температуры/влажности DHT11 и DHT22

  • onewire — протокол шины 1-Wire

  • ds18x20 — драйвер датчика температуры DS18x20

  • neopixel — управление светодиодами WS2812 / NeoPixel

  • ssd1306 — драйвер OLED

  • tb6612 — драйвер двигателя TB6612

OpenMV Cam M7

STM32F765 (Cortex-M7 @ 216 МГц) с 512 КБ внутренней SRAM и 2 МБ внутренней флеш-памяти. Поставляется с датчиком OV7725.

  • pyb — функции, связанные с платой

  • stm — функциональность, специфичная для MCU STM32

  • dht — датчики температуры/влажности DHT11 и DHT22

  • onewire — протокол шины 1-Wire

  • ds18x20 — драйвер датчика температуры DS18x20

  • neopixel — управление светодиодами WS2812 / NeoPixel

  • ssd1306 — драйвер OLED

  • tb6612 — драйвер двигателя TB6612

OpenMV Cam M4

STM32F427 (Cortex-M4 @ 180 МГц) с 256 КБ внутренней SRAM и 1 МБ внутренней флеш-памяти. Поставляется с датчиком OV7725.

  • pyb — функции, связанные с платой

  • stm — функциональность, специфичная для MCU STM32

  • dht — датчики температуры/влажности DHT11 и DHT22

  • onewire — протокол шины 1-Wire

  • ds18x20 — драйвер датчика температуры DS18x20

  • neopixel — управление светодиодами WS2812 / NeoPixel

  • ssd1306 — драйвер OLED

  • tb6612 — драйвер двигателя TB6612

Arduino Nicla Vision

Плата машинного зрения размером 22,86 × 22,86 мм на базе двухъядерной SoC STM32H747AII6: Cortex-M7 @ 400 МГц плюс Cortex-M4 @ 200 МГц.

  • pyb — функции, связанные с платой

  • stm — функциональность, специфичная для MCU STM32

  • lsm6dsox — 6-осевой IMU LSM6DSOX

  • dht — датчики температуры/влажности DHT11 и DHT22

  • ds18x20 — драйвер датчика температуры DS18x20

  • onewire — протокол шины 1-Wire

  • neopixel — управление светодиодами WS2812 / NeoPixel

Arduino Portenta H7

Промышленная отладочная плата размером 66 × 25 мм на базе двухъядерной SoC STM32H747XI: Cortex-M7 @ 400 МГц плюс Cortex-M4 @ 200 МГц.

  • pyb — функции, связанные с платой

  • stm — функциональность, специфичная для MCU STM32

  • dht — датчики температуры/влажности DHT11 и DHT22

  • ds18x20 — драйвер датчика температуры DS18x20

  • onewire — протокол шины 1-Wire

  • neopixel — управление светодиодами WS2812 / NeoPixel

  • lora — драйвер модема LoRa

  • ssd1306 — драйвер OLED

  • tb6612 — драйвер двигателя TB6612

Arduino Giga R1 WiFi

Плата форм-фактора Mega размером 101 × 53 мм на базе двухъядерной SoC STM32H747XI: Cortex-M7 @ 480 МГц плюс Cortex-M4 @ 240 МГц, со встроенным сенсорным экраном 800x480.

  • pyb — функции, связанные с платой

  • stm — функциональность, специфичная для MCU STM32

  • dht — датчики температуры/влажности DHT11 и DHT22

  • onewire — протокол шины 1-Wire

  • neopixel — управление светодиодами WS2812 / NeoPixel

  • gt911 — 5-точечный ёмкостный сенсорный контроллер GT911

  • ft5x06 — драйвер ёмкостного сенсорного экрана

Arduino Nano RP2040 Connect

Плата форм-фактора Nano на базе RP2040 с модулем Wi-Fi/Bluetooth U-blox NINA-W102. Больше не поддерживается активно; последний выпуск прошивки OpenMV для этой платы сохранён для архивного использования.

  • rp2 — специфичные для RP2040 вспомогательные модули PIO / DMA / флеш-памяти

  • espflash — прошивальщик ROM-загрузчика ESP32

  • lsm6dsox — 6-осевой IMU LSM6DSOX

  • dht — датчики температуры/влажности DHT11 и DHT22

  • onewire — протокол шины 1-Wire

  • ds18x20 — драйвер датчика температуры DS18x20

  • neopixel — управление светодиодами WS2812 / NeoPixel

Arduino Nano 33 BLE Sense

Плата форм-фактора Nano на базе Nordic nRF52840 со встроенным набором датчиков Arduino. Больше не поддерживается активно; последний выпуск прошивки OpenMV для этой платы сохранён для архивного использования.

  • ubluepy — API периферийного и центрального устройства Bluetooth LE на Nordic SoftDevice

  • bmi270 — 6-осевой IMU BMI270

  • bmm150 — 3-осевой магнитометр BMM150

  • lsm9ds1 — 9-осевой IMU LSM9DS1

  • hts221 — датчик влажности/температуры HTS221

  • lps22h — датчик давления LPS22HB/HH

  • hs3003 — датчик влажности/температуры HS3003

  • apds9960 — драйвер датчика приближения, жестов и цвета

  • dht — датчики температуры/влажности DHT11 и DHT22

  • onewire — протокол шины 1-Wire

  • ds18x20 — драйвер датчика температуры DS18x20

  • neopixel — управление светодиодами WS2812 / NeoPixel

Расширение встроенных библиотек с помощью Python

Подмножество встроенных модулей можно расширить кодом Python, предоставив в файловой системе модуль с тем же именем. Эта расширяемость применима к следующим модулям стандартной библиотеки Python, встроенным в прошивку: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, а также к специфичному для MicroPython модулю machine. Все остальные встроенные модули не могут быть расширены из файловой системы.

Это позволяет пользователю предоставить расширенную реализацию встроенной библиотеки (например, для обеспечения дополнительной совместимости с CPython или недостающей функциональности). Это широко используется в micropython-lib, см. Управление пакетами для получения дополнительной информации. Модуль в файловой системе обычно выполняет импорт всех имён (через подстановочный знак) из встроенного модуля, чтобы унаследовать все его глобальные объекты (классы, функции и переменные).

В MicroPython v1.21.0 и выше, чтобы предотвратить импорт модулем самого себя, он может принудительно импортировать встроенный модуль, временно очистив sys.path во время импорта. Например, чтобы расширить модуль time из Python, файл с именем time.py в файловой системе мог бы сделать следующее:

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

def extra_method():
  pass

В результате time.py содержит все глобальные объекты встроенного модуля time, но добавляет extra_method.

В более ранних версиях MicroPython можно принудительно импортировать встроенный модуль, добавив u в начало его имени. Например, import utime вместо import time. Так, time.py в файловой системе мог бы выглядеть следующим образом:

from utime import *

def extra_method():
  pass

Этот способ по-прежнему поддерживается, но описанный выше метод с sys.path теперь предпочтительнее, так как префикс u будет удалён из имён встроенных модулей в одной из будущих версий MicroPython.

За исключением случаев, когда специально требуется принудительно использовать встроенный модуль, код всегда должен использовать import module , а не import umodule.