v4.4.0

v4.4.0 añade una API tf.regression(), soporte para FLIR Lepton en la OpenMV Cam H7 Pro, soporte del coprocesador Cortex-M4 en la Arduino Nicla Vision, y MicroPython 1.19. Cambiaron algunos módulos específicos de placa y ciertos comportamientos de WiFi/LCD — lee los cambios incompatibles más abajo.

Aspectos destacados

  • tf.regression() — ejecuta modelos de regresión de TensorFlow Lite con entrada 1D/salida 1D.

  • Soporte del sensor térmico FLIR Lepton en la OpenMV Cam H7 Pro.

  • Arduino Nicla Vision — soporte del coprocesador Cortex-M4, MicroSpeech funcional, LPUART1.

  • MicroPython actualizado a 1.19; ulab actualizado a 5.1.1.

  • Incompatible: los módulos lcd/tv de la Nicla Vision se deshabilitaron y cambió el controlador WiFi de la RP2040 Connect — consulta los cambios incompatibles.

Nuevas características

  • tf.regression(model, input_array) — una nueva función para modelos de regresión de TensorFlow Lite con entrada/salida 1D, que devuelve una lista de salidas de tipo float.

  • Controles del GC2145sensor.set_auto_exposure() y sensor.set_auto_whitebal() ahora son funcionales en el GC2145 (la exposición automática / balance de blancos pueden deshabilitarse; la exposición/ganancia explícitas aún no son compatibles).

  • Arduino Nicla Vision — se habilitaron el soporte del coprocesador Cortex-M4 (CM4) y el periférico LPUART1.

  • machine.Pin — el pin USB_VBUS ahora está expuesto a los scripts de usuario.

Otros cambios y mejoras

  • MicroPython actualizado a 1.19; ulab a 5.1.1; se actualizó el controlador WiFi cyw43 incluido.

  • Los puertos RP2 (Arduino Nano RP2040 Connect) y nRF (Arduino Nano 33 BLE Sense) cambiaron al nuevo depurador basado en TinyUSB para la conexión con el IDE/host.

  • El XCLK del OV7670 se elevó de 12 MHz a 24 MHz (conjunto de registros actualizado).

Correcciones de errores

Cámara y sensores:

  • Las estadísticas de temperatura de las manchas (blobs) de la OpenMV Pure Thermal ahora usan la imagen IR en lugar de la imagen en color, por lo que la temperatura media por mancha es correcta.

  • Se corrigió el manejo de la ROI y el escalado de área en draw_image() para una salida escalada más precisa.

  • La IMU se reinicializa tras un soft-reset para que siga funcionando cuando el bus SPI de la IMU está habilitado.

Sistema:

  • Se corrigieron problemas de comparación con/sin signo en la detección de características FAST/AGAST, la detección de manchas (blobs), CLAHE y los controladores LCD/TV; se corrigió la desinicialización de GPIO de cámara / SPI / DAC en STM32, el mapeo de pines del LPUART del H7 y el registro del módulo nn de STM32Cube.AI.

Arduino Nicla Vision:

  • MicroSpeech ahora funciona (búfer PDM duplicado, ejemplo añadido) y se corrigió el modo de espera de bajo consumo.

Hardware y soporte de placas

  • OpenMV Cam H7 Pro — soporte del sensor térmico FLIR Lepton.

  • Arduino Nicla Vision — coprocesador CM4, LPUART1, MicroSpeech, espera de bajo consumo.

Cambios incompatibles en la API

Cambios incompatibles de la API visibles para el usuario entre v4.3.3 y v4.4.0. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.

Cada cambio está etiquetado según su impacto:

  • menor — API limitada; solo afecta a scripts en una placa específica.

  • comportamiento — misma API, resultados diferentes; vuelve a revisar los scripts ajustados.

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

Módulos de la Nicla Vision y WiFi de la RP2040 (menor)

En la Arduino Nicla Vision, los módulos lcd y tv se deshabilitaron para liberar memoria para el soporte del coprocesador CM4 — los scripts que usen esos módulos en la Nicla Vision ya no los encontrarán. La Arduino Nano RP2040 Connect cambió de la implementación WiFi/nina personalizada de OpenMV al controlador/módulo NINA-W10 de MicroPython original, cuya API es diferente.

Commits: f78d191e3, ddf01cb09

Tiempo de espera de sockets WiFi y volteo vertical del LCD (comportamiento)

Un tiempo de espera agotado en un socket WINC1500 ahora devuelve un error no bloqueante (EWOULDBLOCK) en lugar de ETIMEDOUT, por lo que los sockets con tiempo de espera agotado ya no se cierran inesperadamente — el código que capturaba ETIMEDOUT debe actualizarse. El display del shield LCD SPI ahora lanza ValueError («Vertical flip requires triple buffering!») cuando se solicita un y_scale negativo sin tener habilitado el triple búfer.

Commits: 1dc4bea88, 7e52cf751

Lista de verificación de migración

Para una portabilidad limpia a v4.4.0, el trabajo habitual es:

  1. En la Nicla Vision, deja de usar lcd/tv; en la Nano RP2040 Connect, porta el código WiFi al controlador NINA-W10 original (los cambios en módulos de placa).

  2. Actualiza el código de sockets WINC1500 para esperar EWOULDBLOCK en caso de tiempo de espera agotado, y habilita el triple búfer para la salida LCD con volteo vertical (los cambios de comportamiento).