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

Попередження

Важливий огляд цього розділу

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

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

  • Через обмеження ресурсів або інші обмеження деякі порти чи версії мікропрограми можуть не містити всієї задокументованої тут функціональності.

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

У цьому розділі описано модулі (бібліотеки функцій та класів), вбудовані в MicroPython. Ця документація загалом прагне описати всі модулі та функції/класи, реалізовані в проекті MicroPython. Однак MicroPython є дуже гнучко налаштовуваним, і кожен порт для конкретної плати/вбудованої системи може включати лише підмножину доступних бібліотек MicroPython.

З огляду на це, будьте попереджені: деякі функції/класи в модулі (або навіть увесь модуль), описані в цій документації, можуть бути недоступні в конкретному збірнику MicroPython для конкретної системи. Найкращим місцем для отримання загальної інформації про наявність/відсутність певної функції є розділ «Загальна інформація», що містить відомості, які стосуються конкретного MicroPython port.

На деяких портах можна дізнатися про доступні вбудовані бібліотеки, які можна імпортувати, ввівши у 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 з 1 МП глобально-затворним датчиком PAG7936.

  • pyb — функції, пов’язані з платою

  • stm — функціональність, специфічна для мікроконтролерів 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 — функції Alif Ensemble SoC

  • romfs — утиліти помічника ROMFS

  • pca9674a — драйвер розширювача I2C PCA9674A

  • jwt — JSON Web Tokens

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

OpenMV Cam RT1062

Плата технічного зору з низьким енергоспоживанням на базі NXP i.MX RT1062 (Cortex-M7 @ 600 МГц). Поєднує мережу USB-C high-speed, 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 — функціональність, специфічна для мікроконтролерів 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 — функціональність, специфічна для мікроконтролерів 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 — функціональність, специфічна для мікроконтролерів 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 — функціональність, специфічна для мікроконтролерів 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 — функціональність, специфічна для мікроконтролерів 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 — функціональність, специфічна для мікроконтролерів 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 — функціональність, специфічна для мікроконтролерів 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 — функціональність, специфічна для мікроконтролерів 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 — помічники PIO / DMA / флеш специфічні для RP2040

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