v4.0.0#
v4.0.0 — це основний реліз v3 → v4. Він вводить сучасний API буферизації багатьох кадрів sensor (подвійна / потрійна буферизація та відео-FIFO), зворотний виклик завершення кадру, модуль Bluetooth (стек NimBLE) з підтримкою Portenta, початковий драйвер камери MT9M114, розвантаження захоплення камери на MDMA, підтримку Bayer/JPEG у image.draw_image() та перехід на MicroPython 1.15. Застарілий потоковий режим видалено, а sensor.set_windowing() переопрацьовано — ознайомтеся з несумісними змінами нижче.
Основні можливості#
Буферизація кількох кадрів —
sensorотримує подвійну буферизацію, потрійну буферизацію та режим відео-FIFO для вищих і рівномірніших частот кадрів.Зворотний виклик завершення кадру — реєстрація зворотного виклику, що спрацьовує, коли новий кадр готовий, для неблокуючих конвеєрів захоплення.
Bluetooth — модуль
bluetooth, побудований на стеку NimBLE, увімкнений на Arduino Portenta H7 (із прикладом BLE).MT9M114 — початковий драйвер камерного датчика.
Швидше захоплення — розвантаження захоплення даних камери на MDMA;
draw_image()тепер приймає джерела/цілі Bayer та JPEG.MicroPython 1.15 — вбудований MicroPython оновлено з 1.13 до 1.15.
Несумісна зміна: застарілий потоковий режим видалено, а
sensor.set_windowing()переопрацьовано — дивіться несумісні зміни.
Нові можливості#
Багатобуферизація датчика — додано
sensor.set_framebuffers()/sensor.get_framebuffers()та режимиSINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFO, а такожsensor.get_frame_available()для подвійного, потрійного захоплення та відео-FIFO.Зворотний виклик завершення кадру — додано
sensor.set_frame_callback(), щоб Python-зворотний виклик запускався після завершення кожного нового кадру.Bluetooth — додано модуль
bluetoothна основі стека NimBLE (підмодуль NimBLE, драйвер CYW-BT), увімкнений на Arduino Portenta H7 із прикладом BLE.MT9M114 — додано початковий драйвер камерного датчика MT9M114.
draw_image — додано підтримку дебаєрування та копіювання JPEG, тому
image.draw_image()приймає вихідні/цільові зображення Bayer та JPEG.Розвантаження захоплення на MDMA — захоплення даних камери розвантажено на MDMA для вищої пропускної здатності.
Аргумент колірної палітри тепер можна вимкнути, передавши
-1(оскількиNoneзарезервовано як дійсний аргумент).
Інші зміни та покращення#
Перехід на нову реалізацію програмного I2C; вирівнювання з upstream MicroPython; конфігурація ulab для кожної плати; базові вбудовані модулі увімкнено для OpenMV 2; чесніше блокування зчитування кадрового буфера; підтримку мьютексу розширено до Cortex-M0/M0+ з тайм-аутом блокування.
Виправлення помилок#
Камера та обробка зображень:
Виправлено надійність ініціалізації FLIR Lepton на платі Pure Thermal, обробку буфера JPEG / призупинення в ImageIO, налаштування вертикального/горизонтального дзеркалювання HM01B0, очищення буфера JPEG при анулюванні зображення та прапорець
cropped, що встановлювався при недійсному розмірі кадру.
Система та підключення:
Виправлено очищення команд USB та команду скидання до завантажувача, ініціалізацію мьютексу, джерело тактування UART, визначення кодової сторінки FatFS, обробку позасмугового ACK WINC1500, налагодження WiFi та USB PID Nano33; ізольовано виділені аналогові виводи.
Апаратне забезпечення та підтримка плат#
Камерний датчик MT9M114 (початковий драйвер).
Arduino Portenta H7 — Bluetooth увімкнено (NimBLE) із прикладом BLE.
Arduino Nano RP2040 Connect / Nano 33 BLE Sense — прапорець налагодження WiFi вимкнено там, де не підтримується; додано приклад blinky; виправлення USB PID.
Несумісні зміни API#
Видимі для користувача несумісні зміни API між v3.9.4 та v4.0.0. Область: Python C-модулі в modules/ та бібліотеки Python у scripts/libraries/.
Кожна зміна позначена за впливом:
major — торкається більшості скриптів; майже напевно потрібне портування коду.
minor — вузький API; торкається лише скриптів, що його використовували.
behavior — той самий API, інші результати; перевірте налаштовані скрипти.
Зміни згруповано за впливом у відповідному порядку. Якщо ви хочете просто портувати код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту посилається на його різницю на GitHub.
Потоковий режим видалено (major)#
Застарілий потоковий режим датчика видалено на користь нового API буферизації багатьох кадрів. Код, що вмикав потоковий режим, необхідно перевести на sensor.set_framebuffers() з DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO та керувати захопленням через sensor.snapshot() / sensor.get_frame_available().
Коміти: a42f3a647
sensor.set_windowing() переопрацьовано (behavior)#
sensor.set_windowing() зробили значно гнучкішим: тепер він приймає кілька форм аргументів (кортеж регіону, або ширина/висота по центру, або x, y, w, h) та визначає вікно відносно поточної роздільної здатності. Скрипти, що передавали аргументи вікна у старому фіксованому форматі, можуть вибирати інший регіон і мають бути перевірені.
Коміти: 3e9c43554
MicroPython 1.13 → 1.15 (behavior)#
Вбудоване ядро MicroPython оновлено з 1.13 до 1.15 (через 1.14). Поведінка стандартної бібліотеки та мови відповідає upstream MicroPython 1.15; перевірте скрипти, що залежать від версійно-специфічної поведінки micropython / стандартних модулів.
Аргумент update_jpeg_buffer ImageIO видалено (minor)#
Оновлення буфера JPEG ImageIO переопрацьовано для виведення буфера з аргументу джерела зображення, а явний аргумент update_jpeg_buffer видалено. Скрипти, що передавали update_jpeg_buffer до ImageIO, мають видалити цей аргумент.
Коміти: 5c6937bd1
Контрольний список міграції#
Для чистого портування на v4.0.0 типова робота полягає в:
Замініть будь-яке використання видаленого потокового режиму на новий API багатобуферизації
sensor.set_framebuffers()(потоковий режим видалено).Перевірте виклики
sensor.set_windowing()відповідно до переопрацьованої, гнучкішої обробки аргументів (зміна вікна).Перевірте скрипти, що залежать від версійно-специфічної поведінки MicroPython, відповідно до MicroPython 1.15 (оновлення MicroPython).
Видаліть аргумент
update_jpeg_bufferз викликів ImageIO (зміна ImageIO).
Всі інші скрипти працюють без змін.