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.

  • Несумісна зміна: API WiFi для NINA/RP2 було переопрацьовано, а кілька помилок датчика тепер викидають RuntimeError — дивіться опис несумісних змін.

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

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

  • Декодування 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 сокетів NINA WiFi та тайм-аути операцій, а також стан гонки текстового буфера 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/.

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

  • незначний — вузький API; стосується лише скриптів, що його використовували.

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

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

API WiFi NINA / RP2 переопрацьовано (незначний)

Драйвер WLAN для NINA / RP2 було переопрацьовано для відповідності вхідному інтерфейсу MicroPython / CYW43 network: конструктор 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 (поведінка)

Обробку помилок датчика стандартизовано на основі єдиної таблиці кодів помилок: збої камери (тайм-аут захоплення, недійсний розмір кадру/формат пікселів/вікно/частота кадрів, помилка кадрового буфера, переповнення 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() (зміна помилок датчика).