v4.0.0¶
v4.0.0 es la importante versión v3 → v4. Introduce la moderna API de almacenamiento en búfer multifotograma de sensor (doble / triple búfer y un FIFO de vídeo), una función de retorno de fotograma completo, un módulo de Bluetooth (pila NimBLE) con compatibilidad para el Portenta, el controlador inicial de cámara MT9M114, captura de cámara descargada en MDMA, compatibilidad con Bayer/JPEG en image.draw_image() y un salto a MicroPython 1.15. Se eliminó el modo de transmisión heredado y se rediseñó sensor.set_windowing(): consulta los cambios incompatibles más abajo.
Aspectos destacados¶
Búfer multifotograma:
sensorincorpora doble búfer, triple búfer y un modo FIFO de vídeo para tasas de fotogramas más altas y fluidas.Función de retorno de fotograma completo: registra una función de retorno (callback) que se dispara cuando hay un nuevo fotograma listo, para pipelines de captura no bloqueantes.
Bluetooth: un módulo
bluetoothconstruido sobre la pila NimBLE, habilitado en el Arduino Portenta H7 (con un ejemplo de BLE).MT9M114: controlador inicial de sensor de cámara.
Captura más rápida: descarga en MDMA para la captura de datos de la cámara;
draw_image()ahora acepta orígenes/destinos Bayer y JPEG.MicroPython 1.15: el MicroPython incluido se actualizó de 1.13 a 1.15.
Incompatible: se eliminó el modo de transmisión heredado y se rediseñó
sensor.set_windowing(): consulta los cambios incompatibles.
Nuevas características¶
Multibúfer del sensor: se añadieron
sensor.set_framebuffers()/sensor.get_framebuffers()y los modosSINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFO, además desensor.get_frame_available()para la captura con doble, triple búfer y FIFO de vídeo.Función de retorno de fotograma completo: se añadió
sensor.set_frame_callback()para que una función de retorno (callback) de Python se ejecute cuando termina cada nuevo fotograma.Bluetooth: se añadió un módulo
bluetoothrespaldado por la pila NimBLE (submódulo NimBLE, controlador CYW-BT), habilitado en el Arduino Portenta H7 con un ejemplo de BLE.MT9M114: se añadió el controlador inicial del sensor de cámara MT9M114.
draw_image: se añadió compatibilidad con desbayerizado y con copia JPEG para que
image.draw_image()acepte imágenes de origen/destino Bayer y JPEG.Descarga de captura en MDMA: la captura de datos de la cámara se descarga en MDMA para un mayor rendimiento.
Un argumento de paleta de colores ahora se puede desactivar pasando
-1(dado queNoneestá reservado como argumento válido).
Otros cambios y mejoras¶
Se cambió a la nueva implementación de I2C por software; se alineó con el repositorio principal de MicroPython; configuración de ulab por placa; módulos integrados básicos habilitados para OpenMV 2; bloqueo más justo de la lectura del búfer de fotogramas; compatibilidad con mutex extendida a Cortex-M0/M0+ con un tiempo de espera de bloqueo.
Corrección de errores¶
Cámara e imagen:
Se corrigieron la fiabilidad de inicialización del FLIR Lepton en la placa Pure Thermal, la gestión del búfer / pausa de JPEG en ImageIO, los ajustes de vflip/hmirror del HM01B0, el vaciado del búfer JPEG cuando se invalida una imagen y un indicador
croppedque se activaba cuando el tamaño de fotograma era inválido.
Sistema y conectividad:
Se corrigieron el drenaje del comando USB y el comando de reinicio al gestor de arranque (bootloader), la inicialización de mutex, la fuente de reloj de la UART, la definición de la página de códigos de FatFS, la gestión de ACK fuera de banda del WINC1500, la depuración de WiFi y el PID USB del Nano33; se aislaron pads analógicos dedicados.
Hardware y compatibilidad de placas¶
Sensor de cámara MT9M114 (controlador inicial).
Arduino Portenta H7: Bluetooth habilitado (NimBLE) con un ejemplo de BLE.
Arduino Nano RP2040 Connect / Nano 33 BLE Sense: indicador de depuración por WiFi desactivado donde no se admite; se añadió un ejemplo blinky; corrección del PID USB.
Cambios incompatibles en la API¶
Cambios incompatibles en la API visibles para el usuario entre v3.9.4 y v4.0.0. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.
Cada cambio está etiquetado según su impacto:
mayor: afecta a la mayoría de los scripts; es casi seguro que tendrás que portar el código.
menor: API estrecha; solo afecta a los scripts que la usaban.
comportamiento: misma API, resultados distintos; 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 con su diff en GitHub.
Se eliminó el modo de transmisión (mayor)¶
El modo de transmisión heredado del sensor se eliminó en favor de la nueva API de búfer multifotograma. El código que habilitaba el modo de transmisión debe cambiar a sensor.set_framebuffers() con DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO y dirigir la captura con sensor.snapshot() / sensor.get_frame_available() en su lugar.
Commits: a42f3a647
Se rediseñó sensor.set_windowing() (comportamiento)¶
sensor.set_windowing() se hizo mucho más flexible: ahora acepta múltiples formas de argumentos (una tupla de región, o ancho/alto centrados, o x, y, w, h) y resuelve la ventana en relación con la resolución actual. Los scripts que pasaban argumentos de ventana en la antigua forma fija pueden seleccionar una región diferente y deberían revisarse de nuevo.
Commits: 3e9c43554
MicroPython 1.13 → 1.15 (comportamiento)¶
El núcleo de MicroPython incluido se actualizó de 1.13 a 1.15 (vía 1.14). El comportamiento de la biblioteca estándar y del lenguaje sigue al de MicroPython 1.15 del repositorio principal; vuelve a revisar los scripts que dependen del comportamiento de micropython / módulos estándar específico de la versión.
Se eliminó el argumento update_jpeg_buffer de ImageIO (menor)¶
La actualización del búfer JPEG de ImageIO se rediseñó para derivar el búfer del argumento de origen de la imagen, y se eliminó el argumento explícito update_jpeg_buffer. Los scripts que pasaban update_jpeg_buffer a ImageIO deben eliminar ese argumento.
Commits: 5c6937bd1
Lista de verificación de migración¶
Para un porte limpio a v4.0.0 el trabajo habitual es:
Reemplazar cualquier uso del modo de transmisión eliminado por la nueva API de multibúfer
sensor.set_framebuffers()(se eliminó el modo de transmisión).Volver a revisar las llamadas a
sensor.set_windowing()frente a la gestión de argumentos rediseñada y más flexible (el cambio de ventana).Volver a validar los scripts que dependen del comportamiento de MicroPython específico de la versión frente a MicroPython 1.15 (la actualización de MicroPython).
Eliminar el argumento
update_jpeg_bufferde las llamadas a ImageIO (el cambio de ImageIO).
Todos los demás scripts funcionan sin modificaciones.