v4.1.0

v4.1.0 incorpora soporte completo para Arduino Nano RP2040 Connect / Raspberry Pi Pico (WiFi, Bluetooth, captura de cámara, salto al bootloader), decodificación directa de imágenes JPEG, un cliente HTTP urequests congelado, soporte para el sensor OV7670 y un reporte de errores de sensor estandarizado. La API de WiFi y las excepciones del sensor cambiaron — lea los cambios incompatibles a continuación.

Aspectos destacados

  • Placas RP2 — Arduino Nano RP2040 Connect / Pico obtienen WiFi (NINA-W10), Bluetooth (NimBLE), captura de cámara/DCMI y salto al bootloader.

  • Decodificación JPEG — las operaciones de imagen ahora aceptan imágenes JPEG comprimidas directamente.

  • Cliente HTTP urequests congelado en el firmware.

  • Soporte para el sensor de cámara OV7670.

  • Incompatible: la API de WiFi de NINA/RP2 fue rediseñada y varios errores de sensor ahora lanzan RuntimeError — consulte los cambios incompatibles.

Nuevas funciones

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi mediante el controlador network de NINA-W10, Bluetooth/NimBLE, captura de cámara (programa PIO de DCMI) y un comando de salto al bootloader.

  • Decodificación de imágenes JPEGfind_apriltags(), lcd.display(), tv.display() y operaciones de imagen relacionadas ahora aceptan imágenes JPEG comprimidas directamente (decodificación a binario/escala de grises/RGB565).

  • urequests — el cliente HTTP (GET/POST/PUT/…) ahora está congelado en las OpenMV 4 / 4 Plus / Portenta / Nicla, con un ejemplo http_post.py.

  • Biblioteca auxiliar ble_advertising, congelada en la Nano RP2040 Connect.

  • Host/depuraciónpyopenmv.reset_to_bl() y un nuevo comando USBDBG_SYS_RESET_TO_BL (0x0E) para reiniciar en el bootloader; salto al bootloader en la Arduino Nano 33 BLE Sense.

  • OV7670 — nuevo soporte para el sensor de cámara OV7670, seleccionable en la OpenMV 4.

Otros cambios y mejoras

  • Los sockets UDP de RP2 se enlazan automáticamente a un puerto efímero cuando se usan sin enlazar; submódulo de MicroPython incluido actualizado.

Correcciones de errores

Redes:

  • Se corrigió el manejo de accept/close/send/recv/bind de sockets WiFi NINA y los tiempos de espera de las operaciones, además de una condición de carrera en el búfer de texto de depuración de RP2 que podía corromper la salida del IDE.

Cámara y sistema:

  • Se corrigió el reinicio del HM01B0, el bus I2C de la cámara quedándose bloqueado tras un escaneo de sensor fallido en la OpenMV H7, la entrada en bajo consumo del ULPI de la H7 al desconectar el USB, la generación de pines ADC de la H7 y el pinout de la cámara / SPI-CS del shield de la Portenta.

Hardware y soporte de placas

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi, Bluetooth, cámara, sistema de archivos en flash más grande, bootloader MSC.

  • Sensor de cámara OV7670 (OpenMV 4).

  • Arduino Portenta H7 — I2C4 en el breakout, pines adicionales de PWM/reloj, sensores OV7725 / MT9V034.

Cambios incompatibles en la API

Rupturas de la API visibles para el usuario entre v4.0.2 y v4.1.0. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.

Cada cambio está etiquetado con su impacto:

  • menor — API limitada; solo afecta a los scripts que la usaban.

  • comportamiento — misma API, resultados distintos; vuelva a comprobar los scripts ajustados.

Los cambios se agrupan por impacto en ese orden. Si solo desea portar su código, salte a la lista de verificación de migración al final. Cada hash de commit enlaza a su diff en GitHub.

API de WiFi de NINA / RP2 rediseñada (menor)

El controlador WLAN de NINA / RP2 fue rediseñado para coincidir con la interfaz network de MicroPython / CYW43 original: un constructor WLAN(interface) (modo STA/AP), un nuevo método active([bool]), los alias config / start_ap de connect, el argumento ssid de connect() renombrado a essid, una nueva palabra clave channel y nina.fw_version() ahora devuelve una tupla (major, minor, patch) en lugar de bytes en bruto. Una discrepancia de versión del firmware NINA ahora es una advertencia no fatal en lugar de un OSError.

Commits: eb2f98277, e14470f68, 0c40f4832

Los errores de sensor ahora lanzan RuntimeError (comportamiento)

El reporte de errores de sensor se estandarizó en torno a una tabla unificada de códigos de error: los fallos de cámara (tiempo de espera de captura agotado, framesize/pixformat/window/framerate inválido, error de framebuffer, desbordamiento de JPEG, sensor no detectado, …) ahora lanzan mensajes coherentes y descriptivos, y varias condiciones que antes lanzaban ValueError ahora lanzan RuntimeError (incluida sensor.reset()). El código que capturaba ValueError para estos casos debe capturar RuntimeError en su lugar.

Commits: 0491a6a88, c8bf0af6f, 2fb226562

Lista de verificación de migración

Para un porte limpio a v4.1.0 el trabajo habitual es:

  1. Porte el código WiFi de NINA/RP2 a la interfaz estándar network.WLAN (WLAN(interface), active(), essid=) y espere una tupla de nina.fw_version() (el cambio de la API de WiFi).

  2. Cambie except ValueError por except RuntimeError en el manejo de errores de la cámara / sensor.reset() (el cambio de errores de sensor).