Бібліотеки 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.
array— масиви числових данихasyncio— асинхронний планувальник вводу/виводуbinascii— перетворення між двійковими даними та ASCIIbuiltins— вбудовані функції та виняткиcmath— математичні функції для комплексних чиселcollections— типи колекцій та контейнерівerrno— коди системних помилокgc— керування збирачем сміттяgzip— стиснення та розпакування gziphashlib— алгоритми хешуванняheapq— алгоритм черги купиio— потоки введення/виведенняjson— кодування та декодування JSONmarshal— серіалізація об’єктів Pythonmath— математичні функціїos— базові служби «операційної системи»platform— доступ до ідентифікаційних даних базової платформиrandom— генерація випадкових чиселre— прості регулярні виразиselect— очікування подій на наборі потоківsocket— модуль сокетівssl— модуль 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— Аудіомодульdisplay— драйвер дисплеяfir— драйвер теплового датчика (fir == далекий інфрачервоний діапазон)tof— Драйвер датчика часу прольотуimu— датчик IMUomv— OpenMV Cam Informationcrc— Обчислення CRCml— Машинне навчанняulab— бібліотека масивів, сумісна з numpyprotocol— Канали протоколу OpenMVlogging— журналювання подійsenml— Мова розмітки датчиків
Заморожені помічники Python, що постачаються на більшості плат камери OpenMV (драйвери, мережа та утиліти):
Мережеві помічники (потребують працюючого мережевого інтерфейсу):
Веб-фреймворк¶
Модулі веб-серверного фреймворку. Дивіться розділи для конкретних плат нижче, щоб дізнатися, які плати включають кожен з них.
Платформозалежні модулі¶
Модулі, прив’язані до конкретного сімейства MCU. Дивіться розділи для конкретних плат нижче, щоб дізнатися, які плати включають кожен з них.
Апаратні драйвери¶
Драйвери для датчиків, дисплеїв та інших периферійних пристроїв, що постачаються на одній або кількох підтримуваних OpenMV платах. Дивіться розділи для конкретних плат нижче, щоб дізнатися, які плати включають кожен з них.
dht— датчики температури/вологості DHT11 та DHT22onewire— протокол шини 1-Wireds18x20— драйвер датчика температури DS18x20neopixel— керування світлодіодами WS2812 / NeoPixellsm6dsox— 6-осьовий IMU LSM6DSOXbmi270— BMI270 6-осьовий IMUbmm150— BMM150 3-осьовий магнетометрlsm9ds1— 9-осьовий IMU LSM9DS1hts221— датчик вологості/температури HTS221lps22h— датчик тиску LPS22HB/HHhs3003— датчик вологості/температури HS3003espflash— прошивальник мікропрограми ESP32 ROM завантажувачаimu— допоміжний модуль IMU для Arduino Nano 33 BLE Sensessd1306— Драйвер OLED-дисплеяtb6612— Драйвер двигуна TB6612pca9674a— I2C Expander Drivertfp410— Контролер DVI/HDMIft5x06— Драйвер сенсорного екранаgt911— 5-точковий ємнісний сенсорний контролер GT911lora— драйвер LoRa-модемуapds9960— Драйвер датчика близькості, жестів і кольоруromfs— допоміжні утиліти ROMFS
Доступність за платами¶
У наведених нижче списках показано, які платформозалежні та драйверні модулі постачаються на кожній платі. Усі модулі з розділів Загальні, Заморожені помічники Python та Мережеві помічники (вище) доступні на кожній платі камери, якщо не зазначено інше.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 МГц) з вбудованим NPU 1 ГГц на 600 GOPS INT8. Поєднується NPU з 1 МП глобально-затворним датчиком PAG7936.
pyb— функції, пов’язані з платоюstm— функціональність, специфічна для мікроконтролерів 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— функції Alif Ensemble SoCromfs— утиліти помічника ROMFSpca9674a— драйвер розширювача I2C PCA9674Ajwt— JSON Web Tokensmicrodot— мінімальний 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 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— функціональність, специфічна для мікроконтролерів 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— функціональність, специфічна для мікроконтролерів STM32dht— датчики температури/вологості DHT11 та DHT22onewire— протокол шини 1-Wireds18x20— драйвер датчика температури DS18x20neopixel— керування світлодіодами WS2812 / NeoPixelssd1306— драйвер OLEDtb6612— драйвер двигуна TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 МГц) з 1 МБ внутрішньої SRAM, 2 МБ внутрішньої флеш-пам’яті та апаратним кодеком JPEG.
pyb— функції, пов’язані з платоюstm— функціональність, специфічна для мікроконтролерів STM32dht— датчики температури/вологості DHT11 та DHT22onewire— протокол шини 1-Wireds18x20— драйвер датчика температури DS18x20neopixel— керування світлодіодами WS2812 / NeoPixelssd1306— драйвер OLEDtb6612— драйвер двигуна TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 МГц) з 512 КБ внутрішньої SRAM та 2 МБ внутрішньої флеш-пам’яті. Постачається з датчиком OV7725.
pyb— функції, пов’язані з платоюstm— функціональність, специфічна для мікроконтролерів STM32dht— датчики температури/вологості DHT11 та DHT22onewire— протокол шини 1-Wireds18x20— драйвер датчика температури DS18x20neopixel— керування світлодіодами WS2812 / NeoPixelssd1306— драйвер OLEDtb6612— драйвер двигуна TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 МГц) з 256 КБ внутрішньої SRAM та 1 МБ внутрішньої флеш-пам’яті. Постачається з датчиком OV7725.
pyb— функції, пов’язані з платоюstm— функціональність, специфічна для мікроконтролерів 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— функціональність, специфічна для мікроконтролерів 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— функціональність, специфічна для мікроконтролерів 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— функціональність, специфічна для мікроконтролерів STM32dht— датчики температури/вологості DHT11 та DHT22onewire— протокол шини 1-Wireneopixel— керування світлодіодами WS2812 / NeoPixelgt911— 5-точковий ємнісний контролер сенсорного екрана GT911ft5x06— драйвер ємнісного сенсорного екрана
Arduino Nano RP2040 Connect
Плата Nano-форм-фактора на базі RP2040 з модулем Wi-Fi/Bluetooth U-blox NINA-W102. Більше активно не підтримується; остання версія мікропрограми OpenMV для цієї плати збережена для архівного використання.
rp2— помічники PIO / DMA / флеш специфічні для RP2040espflash— прошивальник мікропрограми завантажувача 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.