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).
Всі інші скрипти працюють без змін.