v1.1.0

v1.1.0 — це базовий архітектурний реліз: він замінює ранні власні модулі периферійних пристроїв стандартними вбудованими засобами MicroPython, переносить API роботи із зображеннями до модуля image, а таймер кадрової частоти — до time, а також додає вбудовані каскади Хаара, get_pixel() / set_pixel(), підтримку плати OpenMV 2 та відлагодження через USB-CDC. Це реліз із численними критичними змінами API — ознайомтеся з ними нижче.

Основні можливості

  • Вбудовані засоби MicroPython — власні модулі gpio / led / spi / socket / wlan / uart / file / select замінено на pyb / machine від MicroPython.

  • Модуль imageImage() / HaarCascade() / дескриптори тепер знаходяться в модулі image.

  • time.clock — таймер кадрової частоти перенесено до модуля time.

  • Вбудовані каскади ХаараHaarCascade("frontalface") / HaarCascade("eye") (файли не потрібні).

  • Підтримка плати OpenMV 2 та відлагодження через USB-CDC.

  • Критична зміна: структуру модулів перевизначено — перегляньте критичні зміни.

Нові можливості

  • Image — додано Image.get_pixel(x, y) / set_pixel() та індексний доступ до пікселів img[i]; вбудовані каскади Хаара у флеш-пам’яті (HaarCascade("frontalface") / HaarCascade("eye")) та ключове слово stages= для обмеження кількості стадій каскаду; draw_string() працює із зображеннями у відтінках сірого.

  • Sensor — додано sensor.set_colorbar(), sensor.set_saturation() та розмір кадру QQVGA2.

  • mlxmlx.read(type) з виведенням mlx.RAINBOW / mlx.GRAYSCALE.

  • Відлагодження — реалізовано відлагодження через USB CDC, запит версії мікропрограми fw_version(), прошивки для кожної плати (OpenMV 1 / OpenMV 2), самотестування та скрипти тестової смуги кольорів; критичні помилки та помилки синтаксису записуються у флеш-пам’ять.

Інші зміни та вдосконалення

  • Нестача пам’яті тепер викликає MemoryError замість OSError; скрипти виконуються з повторним підняттям виключення, тому помилки виводяться замість краша; швидкість передачі (бод) через послідовний порт налаштовується (за замовчуванням 921600); більший розмір файлової системи у флеш-пам’яті; тактова частота пікселів датчика знижена до 54 МГц для стабільності захвату; sensor.reset() покладається виключно на м’яке скидання датчика.

Виправлення помилок

  • Виправлено зіставлення шаблонів, повторення першого об’єкта у find_features(), атомарний доступ до регістрів SCCB/I2C, виявлення SD-картки, відображення виводів програмного I2C, точність fast_cbrtf / кольорів LAB, а також використання пам’яті для інтегрального зображення / медіанного фільтра на OpenMV 1 / 2.

Апаратне забезпечення та підтримка плат

  • Підтримка плати OpenMV 2 (STM32F427) (та апаратний дизайн OpenMV 3); MCO використовується як тактовий сигнал датчика на OpenMV 2.

Критичні зміни API

Критичні зміни API, видимі користувачу, між v1.0.3-beta та v1.1.0. Область дії: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.

Кожна зміна позначена за ступенем впливу:

  • major — стосується більшості скриптів, що використовували цю функцію; потрібен перенос коду.

  • behavior — той самий API, інші результати; перевірте налаштовані скрипти.

Зміни згруповані за ступенем впливу у відповідному порядку. Якщо ви просто хочете перенести код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту посилається на його diff на GitHub.

Власні модулі периферійних пристроїв видалено (major)

Ранні власні модулі clock / file / gpio / led / select / socket / spi / wlan / uart замінено вбудованими периферійними пристроями pyb / machine від MicroPython. Перенесіть скрипти на стандартні аналоги MicroPython (наприклад, pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Коміти: 6d2fafa94

API роботи із зображеннями перенесено до модуля image (major)

Image(), HaarCascade() та функції збереження/завантаження дескрипторів більше не є простими вбудованими функціями — вони знаходяться в новому модулі image. Скрипти мають виконувати import image та використовувати image.Image / image.HaarCascade().

Коміти: 54288c535

Таймер кадрової частоти перенесено до time (major)

Окремий модуль clock видалено; таймер кадрової частоти тепер знаходиться в time. Використовуйте import time та clock = time.clock() — повернутий об’єкт як і раніше надає .tick() / .fps() / .avg() / .reset().

Коміти: a8928ca3b

/flash та /sd більше не додаються до sys.path (behavior)

Мітки розділів / кореневі каталоги виправлено, і /flash та /sd більше не додаються автоматично до sys.path. Скрипти, які імпортували допоміжні модулі за простим ім’ям із цих місць, мають явно додати шлях (або розмістити модулі там, де вони знаходяться).

Коміти: 09e77b5da

Контрольний список міграції

Для чистого переходу на v1.1.0 зазвичай потрібно:

  1. Замінити власні модулі gpio / led / spi / uart / socket / wlan / file / select на pyb / machine від MicroPython (видалення власних модулів).

  2. Виконати import image та додати префікс image. до Image() / HaarCascade() (переміщення модуля image).

  3. Використовувати import time та clock = time.clock() (переміщення таймера).

  4. Явно додати /flash / /sd до sys.path, якщо ви імпортували допоміжні модулі за простим ім’ям (зміна sys.path).

Всі інші скрипти працюють без змін.