Библиотеки 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.
array— массивы числовых данныхasyncio— планировщик асинхронного ввода-выводаbinascii— преобразования binary/ASCIIbuiltins— встроенные функции и исключенияcmath— математические функции для комплексных чиселcollections— типы коллекций и контейнеровerrno— системные коды ошибокgc— управление сборщиком мусораgzip— сжатие и распаковка gziphashlib— алгоритмы хешированияheapq— алгоритм очереди на кучеio— потоки ввода/выводаjson— кодирование и декодирование JSONmarshal— сериализация объектов Pythonmath— математические функцииos— базовые сервисы «операционной системы»platform— доступ к идентифицирующим данным базовой платформыrandom— генерация случайных чиселre— простые регулярные выраженияselect— ожидание событий на наборе потоковsocket— модуль socketssl— Модуль SSL/TLSstring.templatelib— Поддержка шаблонных строкstruct— упаковка и распаковка примитивных типов данныхsys— системно-специфичные функцииtime— функции, связанные со временемtypes— имена встроенных типовzlib— сжатие и распаковка zlib
Библиотеки OpenMV Cam¶
В следующих разделах описаны библиотеки, доступные на каждой поддерживаемой OpenMV плате, включая как специфичные для MicroPython встроенные модули, так и собственные расширения OpenMV.
Общие модули¶
Встроены в прошивку на каждой плате камеры OpenMV.
bluetooth— низкоуровневый Bluetoothcryptolib— криптографические шифрыdeflate— сжатие и распаковка deflateframebuf— работа с буфером кадраmachine— функции, связанные с аппаратным обеспечениемmicropython— доступ к внутренним механизмам MicroPython и управление имиnetwork— настройка сетиopenamp— предоставляет стандартную поддержку асимметричной многопроцессорной обработки (AMP)uctypes— структурированный доступ к двоичным даннымvfs— управление виртуальной файловой системойcsi— датчики камерыsensor— датчик камерыimage— машинное зрениеgif— запись gifmjpeg— запись mjpegaudio— Модуль Audiodisplay— драйвер дисплеяfir— драйвер теплового датчика (fir == far infrared, дальний инфракрасный)tof— драйвер датчика времяпролётного типа (time-of-flight)imu— датчик imuomv— Информация об OpenMV Camcrc— Вычисление CRCml— Машинное обучениеulab— numpy-совместимая библиотека массивовprotocol— Каналы протокола OpenMVlogging— журналирование событийsenml— язык разметки датчиков (Sensor Markup Language)
Замороженные вспомогательные модули Python, поставляемые на большинстве плат камер OpenMV (драйверы, сеть и утилиты):
aioble— асинхронный BLErpc— библиотека rpcrtsp— библиотека rtspmqtt— Простой клиент MQTTrequests— HTTP-клиентmutex— модуль mutexpid— Пропорционально-интегрально-дифференциальный регуляторbno055— Драйвер IMU BNO055modbus— Протокол Modbus RTU slavevl53l1x— Драйвер датчика расстояния ToF VL53L1X
Вспомогательные модули для работы с сетью (требуют работающего сетевого интерфейса):
Веб-фреймворк¶
Модули фреймворка веб-сервера. См. разделы по конкретным платам ниже, чтобы узнать, какие платы включают каждый из них.
Модули, специфичные для порта¶
Модули, привязанные к конкретному семейству MCU. См. разделы по конкретным платам ниже, чтобы узнать, какие платы включают каждый из них.
Драйверы оборудования¶
Драйверы для датчиков, дисплеев и других периферийных устройств, поставляемых на одной или нескольких поддерживаемых OpenMV платах. См. разделы по конкретным платам ниже, чтобы узнать, какие платы включают каждый из них.
dht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireds18x20— драйвер датчика температуры DS18x20neopixel— управление светодиодами WS2812 / NeoPixellsm6dsox— 6-осевой IMU LSM6DSOXbmi270— 6-осевой IMU BMI270bmm150— 3-осевой магнитометр BMM150lsm9ds1— 9-осевой IMU LSM9DS1hts221— датчик влажности/температуры HTS221lps22h— датчик давления LPS22HB/HHhs3003— датчик влажности/температуры HS3003espflash— прошивальщик прошивки через ROM-загрузчик ESP32imu— вспомогательный модуль IMU для Arduino Nano 33 BLE Sensessd1306— Драйвер OLEDtb6612— Драйвер двигателя TB6612pca9674a— Драйвер I2C-расширителяtfp410— Контроллер DVI/HDMIft5x06— драйвер сенсорного экранаgt911— 5-точечный ёмкостный сенсорный контроллер GT911lora— драйвер LoRa-модемаapds9960— драйвер датчика приближения, жестов и цветаromfs— Вспомогательные утилиты ROMFS
Доступность по платам¶
В списках ниже показано, какие специфичные для порта модули и модули драйверов поставляются на каждой плате. Все модули из разделов Общие модули, Замороженные вспомогательные модули Python и Вспомогательные модули для работы с сетью (выше) доступны на каждой плате камеры, если не указано иное.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 МГц) с внутричиповым NPU на 1 ГГц с производительностью 600 GOPS INT8. Сочетает NPU с датчиком PAG7936 на 1 МП с глобальным затвором.
pyb— функции, связанные с платойstm— функциональность, специфичная для MCU STM32ssd1306— драйвер OLEDtb6612— драйвер двигателя TB6612jwt— JSON Web Tokensmicrodot— минимальный 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 Ensembleromfs— вспомогательные утилиты ROMFSpca9674a— драйвер I2C-расширителя PCA9674Ajwt— JSON Web Tokensmicrodot— минимальный HTTP-фреймворк
OpenMV Cam RT1062
Маломощная плата машинного зрения на базе NXP i.MX RT1062 (Cortex-M7 @ 600 МГц). Сочетает высокоскоростную сеть через USB-C, Wi-Fi / Bluetooth и Ethernet 10/100.
mimxrt— функциональность, специфичная для NXP i.MX RTdht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireds18x20— драйвер датчика температуры DS18x20neopixel— управление светодиодами WS2812 / NeoPixelssd1306— драйвер OLEDtb6612— драйвер двигателя TB6612pca9674a— драйвер I2C-расширителя PCA9674Ajwt— JSON Web Tokensmicrodot— минимальный HTTP-фреймворк
OpenMV Pure Thermal
Полносистемная плата тепловизионной съёмки на базе STM32H743 (Cortex-M7 @ 480 МГц) с 64 МБ внешней SDRAM, 32 МБ QSPI-флеш-памяти, аппаратным кодеком JPEG и выходом DVI/HDMI.
pyb— функции, связанные с платойstm— функциональность, специфичная для MCU STM32tfp410— сериализатор DVI/HDMIft5x06— драйвер ёмкостного сенсорного экранаdht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireds18x20— драйвер датчика температуры DS18x20neopixel— управление светодиодами WS2812 / NeoPixelssd1306— драйвер OLEDtb6612— драйвер двигателя TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 МГц) с 32 МБ внешней SDRAM, 32 МБ QSPI-флеш-памяти, аппаратным кодеком JPEG и модулем камеры OV5640 на 5 МП.
pyb— функции, связанные с платойstm— функциональность, специфичная для MCU STM32dht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireds18x20— драйвер датчика температуры DS18x20neopixel— управление светодиодами WS2812 / NeoPixelssd1306— драйвер OLEDtb6612— драйвер двигателя TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 МГц) с 1 МБ внутренней SRAM, 2 МБ внутренней флеш-памяти и аппаратным кодеком JPEG.
pyb— функции, связанные с платойstm— функциональность, специфичная для MCU STM32dht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireds18x20— драйвер датчика температуры DS18x20neopixel— управление светодиодами WS2812 / NeoPixelssd1306— драйвер OLEDtb6612— драйвер двигателя TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 МГц) с 512 КБ внутренней SRAM и 2 МБ внутренней флеш-памяти. Поставляется с датчиком OV7725.
pyb— функции, связанные с платойstm— функциональность, специфичная для MCU STM32dht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireds18x20— драйвер датчика температуры DS18x20neopixel— управление светодиодами WS2812 / NeoPixelssd1306— драйвер OLEDtb6612— драйвер двигателя TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 МГц) с 256 КБ внутренней SRAM и 1 МБ внутренней флеш-памяти. Поставляется с датчиком OV7725.
pyb— функции, связанные с платойstm— функциональность, специфичная для MCU STM32dht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireds18x20— драйвер датчика температуры DS18x20neopixel— управление светодиодами WS2812 / NeoPixelssd1306— драйвер OLEDtb6612— драйвер двигателя TB6612
Arduino Nicla Vision
Плата машинного зрения размером 22,86 × 22,86 мм на базе двухъядерной SoC STM32H747AII6: Cortex-M7 @ 400 МГц плюс Cortex-M4 @ 200 МГц.
pyb— функции, связанные с платойstm— функциональность, специфичная для MCU STM32lsm6dsox— 6-осевой IMU LSM6DSOXdht— датчики температуры/влажности DHT11 и DHT22ds18x20— драйвер датчика температуры DS18x20onewire— протокол шины 1-Wireneopixel— управление светодиодами WS2812 / NeoPixel
Arduino Portenta H7
Промышленная отладочная плата размером 66 × 25 мм на базе двухъядерной SoC STM32H747XI: Cortex-M7 @ 400 МГц плюс Cortex-M4 @ 200 МГц.
pyb— функции, связанные с платойstm— функциональность, специфичная для MCU STM32dht— датчики температуры/влажности DHT11 и DHT22ds18x20— драйвер датчика температуры DS18x20onewire— протокол шины 1-Wireneopixel— управление светодиодами WS2812 / NeoPixellora— драйвер модема LoRassd1306— драйвер OLEDtb6612— драйвер двигателя TB6612
Arduino Giga R1 WiFi
Плата форм-фактора Mega размером 101 × 53 мм на базе двухъядерной SoC STM32H747XI: Cortex-M7 @ 480 МГц плюс Cortex-M4 @ 240 МГц, со встроенным сенсорным экраном 800x480.
pyb— функции, связанные с платойstm— функциональность, специфичная для MCU STM32dht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireneopixel— управление светодиодами WS2812 / NeoPixelgt911— 5-точечный ёмкостный сенсорный контроллер GT911ft5x06— драйвер ёмкостного сенсорного экрана
Arduino Nano RP2040 Connect
Плата форм-фактора Nano на базе RP2040 с модулем Wi-Fi/Bluetooth U-blox NINA-W102. Больше не поддерживается активно; последний выпуск прошивки OpenMV для этой платы сохранён для архивного использования.
rp2— специфичные для RP2040 вспомогательные модули PIO / DMA / флеш-памятиespflash— прошивальщик ROM-загрузчика ESP32lsm6dsox— 6-осевой IMU LSM6DSOXdht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireds18x20— драйвер датчика температуры DS18x20neopixel— управление светодиодами WS2812 / NeoPixel
Arduino Nano 33 BLE Sense
Плата форм-фактора Nano на базе Nordic nRF52840 со встроенным набором датчиков Arduino. Больше не поддерживается активно; последний выпуск прошивки OpenMV для этой платы сохранён для архивного использования.
ubluepy— API периферийного и центрального устройства Bluetooth LE на Nordic SoftDevicebmi270— 6-осевой IMU BMI270bmm150— 3-осевой магнитометр BMM150lsm9ds1— 9-осевой IMU LSM9DS1hts221— датчик влажности/температуры HTS221lps22h— датчик давления LPS22HB/HHhs3003— датчик влажности/температуры HS3003apds9960— драйвер датчика приближения, жестов и цветаdht— датчики температуры/влажности DHT11 и DHT22onewire— протокол шины 1-Wireds18x20— драйвер датчика температуры DS18x20neopixel— управление светодиодами 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.