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()(изменение ошибок датчиков).