v4.0.0

A v4.0.0 é a versão principal v3 → v4. Introduz a moderna API de buffering multi-fotograma sensor (buffering duplo/triplo e uma FIFO de vídeo), um callback de fotograma completo, um módulo Bluetooth (stack NimBLE) com suporte para a Portenta, o controlador inicial da câmara MT9M114, captura de câmara descarregada via MDMA, suporte a Bayer/JPEG em image.draw_image() e uma atualização para o MicroPython 1.15. O modo de streaming legado foi removido e sensor.set_windowing() foi reformulado — consulte as alterações de quebra de compatibilidade abaixo.

Destaques

  • Buffering multi-fotogramasensor passa a suportar buffering duplo, buffering triplo e um modo FIFO de vídeo para taxas de fotogramas mais altas e suaves.

  • Callback de fotograma completo — registe um callback que é acionado quando um novo fotograma fica disponível, para pipelines de captura sem bloqueio.

  • Bluetooth — um módulo bluetooth baseado na stack NimBLE, ativado no Arduino Portenta H7 (com um exemplo BLE).

  • MT9M114 — controlador inicial do sensor de câmara.

  • Captura mais rápida — descarregamento MDMA para a captura de dados da câmara; draw_image() passa a aceitar fontes/destinos Bayer e JPEG.

  • MicroPython 1.15 — o MicroPython incluído foi atualizado de 1.13 para 1.15.

  • Quebra de compatibilidade: o modo de streaming legado foi removido e sensor.set_windowing() foi reformulado — consulte as alterações de quebra de compatibilidade.

Novas funcionalidades

  • Multi-buffering do sensor — adicionados sensor.set_framebuffers() / sensor.get_framebuffers() e os modos SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO, mais sensor.get_frame_available() para captura com buffering duplo, triplo e FIFO de vídeo.

  • Callback de fotograma completo — adicionado sensor.set_frame_callback() para que um callback Python seja executado quando cada novo fotograma terminar.

  • Bluetooth — adicionado um módulo bluetooth suportado pela stack NimBLE (submódulo NimBLE, controlador CYW-BT), ativado no Arduino Portenta H7 com um exemplo BLE.

  • MT9M114 — adicionado o controlador inicial do sensor de câmara MT9M114.

  • draw_image — adicionado suporte a debayering e cópia JPEG para que image.draw_image() aceite imagens fonte/destino Bayer e JPEG.

  • Descarregamento de captura MDMA — a captura de dados da câmara é descarregada para MDMA para maior débito.

  • Um argumento de paleta de cores pode agora ser desativado passando -1 (dado que None está reservado como argumento válido).

Outras alterações e melhorias

  • Mudança para a nova implementação I2C por software; alinhamento com o upstream do MicroPython; configuração de ulab por placa; módulos integrados básicos ativados para OpenMV 2; bloqueio de leitura do buffer de fotogramas mais justo; suporte a mutex alargado para Cortex-M0/M0+ com tempo limite de bloqueio.

Correções de erros

Câmara e imagem:

  • Corrigida a fiabilidade de inicialização do FLIR Lepton na placa Pure Thermal, o manuseamento do buffer JPEG / pausa no ImageIO, as definições de vflip/hmirror do HM01B0, a limpeza do buffer JPEG quando uma imagem é invalidada e uma flag cropped que era definida incorretamente quando o tamanho do fotograma era inválido.

Sistema e conectividade:

  • Corrigida a drenagem de comandos USB e o comando de reset para bootloader, a inicialização de mutex, a fonte de relógio UART, a definição de página de código FatFS, o manuseamento de ACK out-of-band do WINC1500, a depuração WiFi e o PID USB do Nano33; isolados pinos analógicos dedicados.

Hardware e suporte de placas

  • Sensor de câmara MT9M114 (controlador inicial).

  • Arduino Portenta H7 — Bluetooth ativado (NimBLE) com um exemplo BLE.

  • Arduino Nano RP2040 Connect / Nano 33 BLE Sense — flag de depuração WiFi desativada onde não é suportada; exemplo blinky adicionado; correção do PID USB.

Alterações de quebra de compatibilidade

Alterações de API visíveis pelo utilizador entre a v3.9.4 e a v4.0.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada alteração está classificada com o seu impacto:

  • maior — afeta a maioria dos scripts; muito provavelmente será necessário portar o código.

  • menor — API restrita; afeta apenas os scripts que a utilizavam.

  • comportamento — mesma API, resultados diferentes; verifique novamente os scripts afinados.

As alterações estão agrupadas por impacto nessa ordem. Se apenas pretende portar o seu código, avance para a lista de verificação de migração no final. Cada hash de commit tem ligação para o respetivo diff no GitHub.

Modo de streaming removido (maior)

O modo de streaming legado do sensor foi removido a favor da nova API de buffering multi-fotograma. O código que ativava o modo de streaming deve mudar para sensor.set_framebuffers() com DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO e conduzir a captura com sensor.snapshot() / sensor.get_frame_available() em vez disso.

Commits: a42f3a647

sensor.set_windowing() reformulado (comportamento)

sensor.set_windowing() foi tornado muito mais flexível: aceita agora múltiplas formas de argumentos (um tuplo de região, ou largura/altura centrados, ou x, y, w, h) e resolve a janela relativamente à resolução atual. Os scripts que passavam argumentos de janelamento na forma fixa antiga podem selecionar uma região diferente e devem ser verificados novamente.

Commits: 3e9c43554

MicroPython 1.13 → 1.15 (comportamento)

O núcleo MicroPython incluído foi atualizado de 1.13 para 1.15 (via 1.14). O comportamento da biblioteca padrão e da linguagem segue o MicroPython 1.15 upstream; verifique novamente os scripts que dependem de comportamentos específicos de versão em micropython / módulos padrão.

Commits: 364eea6c7, 26c5376b0

Argumento update_jpeg_buffer do ImageIO removido (menor)

A atualização do buffer JPEG do ImageIO foi reformulada para derivar o buffer a partir do argumento de origem da imagem, e o argumento explícito update_jpeg_buffer foi removido. Os scripts que passavam update_jpeg_buffer ao ImageIO devem remover esse argumento.

Commits: 5c6937bd1

Lista de verificação de migração

Para uma migração limpa para a v4.0.0, o trabalho típico é:

  1. Substituir qualquer uso do modo de streaming removido pela nova API de multi-buffering sensor.set_framebuffers() (modo de streaming removido).

  2. Verificar novamente as chamadas a sensor.set_windowing() face ao manuseamento de argumentos reformulado e mais flexível (a alteração de janelamento).

  3. Revalidar os scripts que dependem de comportamentos específicos de versão do MicroPython face ao MicroPython 1.15 (a atualização do MicroPython).

  4. Remover o argumento update_jpeg_buffer das chamadas ao ImageIO (a alteração do ImageIO).

Todos os outros scripts funcionam sem modificações.