v4.0.0¶
v4.0.0 é a grande versão v3 → v4. Ela introduz a moderna API de buffering multi-quadro do sensor (buffering duplo / triplo e um FIFO de vídeo), um callback de quadro completo, um módulo Bluetooth (stack NimBLE) com suporte ao Portenta, o driver inicial da câmera MT9M114, captura de câmera descarregada via MDMA, suporte a Bayer/JPEG no image.draw_image() e um salto para o MicroPython 1.15. O modo de streaming legado foi removido e sensor.set_windowing() foi reformulado — leia as mudanças incompatíveis abaixo.
Destaques¶
Buffering multi-quadro — o
sensorganha buffering duplo, buffering triplo e um modo FIFO de vídeo para taxas de quadros mais altas e mais suaves.Callback de quadro completo — registre um callback que dispara quando um novo quadro está pronto, para pipelines de captura não bloqueantes.
Bluetooth — um módulo
bluetoothconstruído sobre a stack NimBLE, habilitado no Arduino Portenta H7 (com um exemplo BLE).MT9M114 — driver inicial do sensor de câmera.
Captura mais rápida — descarregamento via MDMA para captura de dados da câmera;
draw_image()agora aceita fontes/destinos Bayer e JPEG.MicroPython 1.15 — o MicroPython incluído foi atualizado da 1.13 para a 1.15.
Incompatível: o modo de streaming legado foi removido e
sensor.set_windowing()foi reformulado — veja as mudanças incompatíveis.
Novos recursos¶
Multi-buffering do sensor — adicionou
sensor.set_framebuffers()/sensor.get_framebuffers()e os modosSINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFO, maissensor.get_frame_available()para captura dupla, tripla e FIFO de vídeo.Callback de quadro completo — adicionou
sensor.set_frame_callback()para que um callback Python rode quando cada novo quadro termina.Bluetooth — adicionou um módulo
bluetoothbaseado na stack NimBLE (submódulo NimBLE, driver CYW-BT), habilitado no Arduino Portenta H7 com um exemplo BLE.MT9M114 — adicionou o driver inicial do sensor de câmera MT9M114.
draw_image — adicionou suporte a debayering e suporte a cópia JPEG para que
image.draw_image()aceite imagens de origem/destino Bayer e JPEG.Descarregamento de captura via MDMA — a captura de dados da câmera é descarregada para o MDMA para maior throughput.
Um argumento de paleta de cores agora pode ser desabilitado passando
-1(já queNoneé reservado como um argumento válido).
Outras mudanças e melhorias¶
Mudou para a nova implementação de I2C por software; alinhou com o upstream do MicroPython; configuração de ulab por placa; módulos integrados básicos habilitados no OpenMV 2; bloqueio de leitura do frame buffer mais justo; suporte a mutex estendido para Cortex-M0/M0+ com um timeout de lock.
Correções de bugs¶
Câmera e imagem:
Corrigiu a confiabilidade da inicialização do FLIR Lepton na placa Pure Thermal, o tratamento de buffer / pausa do JPEG do ImageIO, as configurações de vflip/hmirror do HM01B0, o flush do buffer JPEG quando uma imagem é invalidada e uma flag
croppedque era definida quando o framesize era inválido.
Sistema e conectividade:
Corrigiu o esvaziamento do comando USB e o comando de reset para o bootloader, a inicialização do mutex, a fonte de clock do UART, o define de code-page do FatFS, o tratamento de ACK out-of-band do WINC1500, a depuração de WiFi e o USB PID do Nano33; isolou os pads analógicos dedicados.
Hardware e suporte a placas¶
Sensor de câmera MT9M114 (driver inicial).
Arduino Portenta H7 — Bluetooth habilitado (NimBLE) com um exemplo BLE.
Arduino Nano RP2040 Connect / Nano 33 BLE Sense — flag de depuração de WiFi desabilitada onde não suportada; exemplo blinky adicionado; correção do USB PID.
Mudanças incompatíveis na API¶
Quebras de API visíveis ao usuário entre a v3.9.4 e a v4.0.0. Escopo: C-modules Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada mudança é marcada com seu impacto:
major — afeta a maioria dos scripts; você quase certamente precisará portar o código.
minor — API restrita; afeta apenas os scripts que a usavam.
behavior — mesma API, resultados diferentes; verifique novamente os scripts ajustados.
As mudanças são agrupadas por impacto nessa ordem. Se você só quer portar seu código, vá direto para a lista de verificação de migração no final. Cada hash de commit aponta para seu diff no GitHub.
Modo de streaming removido (major)¶
O modo de streaming legado do sensor foi removido em favor da nova API de buffering multi-quadro. Código que habilitava o modo de streaming deve migrar para sensor.set_framebuffers() com DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO e acionar a captura com sensor.snapshot() / sensor.get_frame_available() em vez disso.
Commits: a42f3a647
sensor.set_windowing() reformulado (behavior)¶
sensor.set_windowing() foi tornado muito mais flexível: agora aceita múltiplas formas de argumento (uma tupla de região, ou largura/altura centralizadas, ou x, y, w, h) e resolve a janela em relação à resolução atual. Scripts que passavam argumentos de janela no antigo formato fixo podem selecionar uma região diferente e devem ser reverificados.
Commits: 3e9c43554
MicroPython 1.13 → 1.15 (behavior)¶
O núcleo do MicroPython incluído foi atualizado da 1.13 para a 1.15 (via 1.14). O comportamento da biblioteca padrão e da linguagem segue o MicroPython 1.15 upstream; reverifique scripts que dependem de comportamento específico de versão do micropython / módulos padrão.
Argumento update_jpeg_buffer do ImageIO removido (minor)¶
A atualização do buffer JPEG do ImageIO foi reformulada para derivar o buffer do argumento de origem da imagem, e o argumento explícito update_jpeg_buffer foi removido. Scripts que passavam update_jpeg_buffer ao ImageIO devem descartar esse argumento.
Commits: 5c6937bd1
Lista de verificação de migração¶
Para uma portabilidade limpa para a v4.0.0, o trabalho típico é:
Substituir qualquer uso do modo de streaming removido pela nova API de multi-buffering
sensor.set_framebuffers()(modo de streaming removido).Reverificar as chamadas a
sensor.set_windowing()em relação ao tratamento de argumentos reformulado e mais flexível (a mudança de janela).Revalidar scripts que dependem de comportamento específico de versão do MicroPython em relação ao MicroPython 1.15 (o salto do MicroPython).
Descartar o argumento
update_jpeg_bufferdas chamadas do ImageIO (a mudança do ImageIO).
Todos os outros scripts rodam sem alterações.