v4.1.0

v4.1.0 обеспечивает полную поддержку Arduino Nano RP2040 Connect / Raspberry Pi Pico (WiFi, Bluetooth, захват с камеры, переход в загрузчик), прямое декодирование изображений JPEG, встроенный HTTP-клиент urequests, поддержку датчика OV7670 и стандартизированную обработку ошибок датчиков. WiFi API и исключения датчиков изменились — ознакомьтесь с критическими изменениями ниже.

Основные моменты

  • Платы RP2 — Arduino Nano RP2040 Connect / Pico получают WiFi (NINA-W10), Bluetooth (NimBLE), захват с камеры/DCMI и переход в загрузчик.

  • Декодирование JPEG — операции с изображениями теперь принимают сжатые изображения JPEG напрямую.

  • HTTP-клиент urequests встроен в прошивку.

  • Поддержка датчика камеры OV7670.

  • Критическое изменение: WiFi API для NINA/RP2 был переработан, и некоторые ошибки датчиков теперь вызывают RuntimeError — см. критические изменения.

Новые возможности

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi через драйвер network для NINA-W10, Bluetooth/NimBLE, захват с камеры (PIO-программа DCMI) и команда перехода в загрузчик.

  • Декодирование изображений JPEGfind_apriltags(), lcd.display(), tv.display() и связанные операции с изображениями теперь принимают сжатые изображения JPEG напрямую (декодирование в binary/grayscale/RGB565).

  • urequests — HTTP-клиент (GET/POST/PUT/…) теперь встроен в OpenMV 4 / 4 Plus / Portenta / Nicla, с примером http_post.py.

  • Вспомогательная библиотека ble_advertising, встроенная в Nano RP2040 Connect.

  • Хост/отладкаpyopenmv.reset_to_bl() и новая команда USBDBG_SYS_RESET_TO_BL (0x0E) для перезагрузки в загрузчик; переход в загрузчик на Arduino Nano 33 BLE Sense.

  • OV7670 — новая поддержка датчика камеры OV7670, выбираемого на OpenMV 4.

Прочие изменения и улучшения

  • UDP-сокеты RP2 автоматически привязываются к эфемерному порту при использовании без привязки; обновлён встроенный подмодуль MicroPython.

Исправления ошибок

Сеть:

  • Исправлена обработка accept/close/send/recv/bind и таймаутов операций для WiFi-сокетов NINA, а также состояние гонки текстового буфера отладки RP2, которое могло повреждать вывод IDE.

Камера и система:

  • Исправлены сброс HM01B0, зависание шины I2C камеры после неудачного сканирования датчика на OpenMV H7, вход в режим низкого энергопотребления H7 ULPI при отключении USB, генерация выводов ADC на H7, а также распиновка камеры Portenta / SPI-CS платы расширения.

Поддержка оборудования и плат

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi, Bluetooth, камера, увеличенная файловая система во флеш-памяти, загрузчик MSC.

  • Датчик камеры OV7670 (OpenMV 4).

  • Arduino Portenta H7 — выводной I2C4, дополнительные выводы PWM/тактирования, датчики OV7725 / MT9V034.

Критические изменения API

Видимые пользователю изменения API между v4.0.2 и v4.1.0. Область: C-модули Python в modules/ и библиотеки Python в scripts/libraries/.

Каждое изменение помечено степенью его влияния:

  • minor — узкое API; затрагивает только скрипты, которые его использовали.

  • behavior — то же API, другие результаты; перепроверьте настроенные скрипты.

Изменения сгруппированы по влиянию в этом порядке. Если вам нужно лишь портировать код, перейдите к контрольному списку миграции в конце. Каждый хеш коммита ведёт к его diff на GitHub.

WiFi API для NINA / RP2 переработан (minor)

Драйвер WLAN для NINA / RP2 был переработан для соответствия интерфейсу network из вышестоящего MicroPython / CYW43: конструктор WLAN(interface) (режим STA/AP), новый метод active([bool]), псевдонимы config / start_ap для connect, аргумент ssid метода connect() переименован в essid, новое ключевое слово channel, а nina.fw_version() теперь возвращает кортеж (major, minor, patch) вместо необработанных байтов. Несоответствие версии прошивки NINA теперь является некритическим предупреждением вместо OSError.

Коммиты: eb2f98277, e14470f68, 0c40f4832

Ошибки датчиков теперь вызывают RuntimeError (behavior)

Обработка ошибок датчиков была стандартизирована вокруг единой таблицы кодов ошибок: сбои камеры (таймаут захвата, недопустимый framesize/pixformat/window/framerate, ошибка буфера кадра, переполнение JPEG, необнаруженный датчик, …) теперь вызывают согласованные, описательные сообщения, а несколько условий, которые ранее вызывали ValueError, теперь вызывают RuntimeError (включая sensor.reset()). Код, который перехватывал ValueError для этих случаев, должен перехватывать RuntimeError вместо него.

Коммиты: 0491a6a88, c8bf0af6f, 2fb226562

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

Для чистого переноса на v4.1.0 обычная работа состоит из:

  1. Портируйте код WiFi для NINA/RP2 на стандартный интерфейс network.WLAN (WLAN(interface), active(), essid=) и ожидайте кортеж от nina.fw_version() (изменение WiFi API).

  2. Замените except ValueError на except RuntimeError вокруг обработки ошибок камеры / sensor.reset() (изменение ошибок датчиков).