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) и команда перехода в загрузчик.Декодирование изображений JPEG —
find_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.
Ошибки датчиков теперь вызывают RuntimeError (behavior)#
Обработка ошибок датчиков была стандартизирована вокруг единой таблицы кодов ошибок: сбои камеры (таймаут захвата, недопустимый framesize/pixformat/window/framerate, ошибка буфера кадра, переполнение JPEG, необнаруженный датчик, …) теперь вызывают согласованные, описательные сообщения, а несколько условий, которые ранее вызывали ValueError, теперь вызывают RuntimeError (включая sensor.reset()). Код, который перехватывал ValueError для этих случаев, должен перехватывать RuntimeError вместо него.
Контрольный список миграции#
Для чистого переноса на v4.1.0 обычная работа состоит из:
Портируйте код WiFi для NINA/RP2 на стандартный интерфейс
network.WLAN(WLAN(interface),active(),essid=) и ожидайте кортеж отnina.fw_version()(изменение WiFi API).Замените
except ValueErrorнаexcept RuntimeErrorвокруг обработки ошибок камеры /sensor.reset()(изменение ошибок датчиков).