v4.2.2

A v4.2.2 adiciona suporte a imagens PNG (descodificação/codificação via lodepng), um carregador de modelos incorporados baseado em tabela, suporte ao OV5640 no Portenta, uma atualização do TensorFlow para Edge Impulse, e ulab 4.0. A API de configuração CAN do RPC foi alterada — leia as alterações de ruptura abaixo.

Destaques

  • Suporte a PNGImage.to_png(), image.PNG e leitura/escrita de ficheiros PNG.

  • tf.load_builtin_model() — modelos incorporados baseados em tabela que podem ser substituídos ou adicionados em tempo de compilação.

  • Portenta H7 — suporte à câmara OV5640 (com foco automático).

  • MicroPython/ulab — ulab atualizado para 4.0.0.

  • Ruptura: a API de configuração CAN do RPC foi alterada — consulte as alterações de ruptura.

Novas funcionalidades

  • Formato de imagem PNG — um novo método Image.to_png(), uma constante image.PNG / PIXFORMAT_PNG, carregamento/gravação de ficheiros PNG (leitura/escrita de .png), e saída PNG nas conversões image.to(), através do codec lodepng integrado.

  • tf.load_builtin_model(path) — carrega um modelo incorporado no firmware e devolve um tuplo (labels, net); os modelos incorporados são agora baseados em tabela, podendo ser substituídos ou adicionados em tempo de compilação.

Outras alterações e melhorias

  • TensorFlow / Edge Impulse — a biblioteca de inferência incluída foi atualizada para Edge Impulse ei-V2.5.0, o modelo person_detection passou para a tabela de modelos incorporados, e foram adicionados operadores TensorFlow em falta em todas as compilações Cortex-M0+/M4/M7/M55, permitindo que mais modelos Edge Impulse sejam executados.

  • ulab atualizado para 4.0.0.

  • Abrir a porta série virtual USB a 1200 bps despoleta agora um reset estilo Arduino para o bootloader.

  • O firmware do módulo WiFi WINC1500 foi atualizado para 19.7.6 (com o script de atualização), e agora reporta a versão real do driver do lado do anfitrião.

  • O porto RP2 imprime «MPY: soft reboot» e passou a suportar init/de-init de UART.

Correções de erros

  • Corrigido o tamanho do buffer de fotograma bruto do Arduino Nano RP2040 Connect e o ID de Produto USB do Arduino Nicla Vision (enumeração USB correta).

Suporte de hardware e placas

  • Arduino Portenta H7 — suporte à câmara OV5640 (com foco automático); o GC2145 está desativado no Portenta.

  • Arduino Nano RP2040 Connect — configuração de memória e modelos de sistema de ficheiros novo.

  • Escudo WiFi (WINC1500) — firmware atualizado para 19.7.6.

Alterações de ruptura na API

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

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

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

  • comportamento — mesma API, resultados diferentes; rever scripts ajustados.

As alterações estão agrupadas por impacto nessa ordem. Cada hash de commit tem ligação ao respetivo diff no GitHub.

API de configuração CAN do RPC (menor)

Na biblioteca rpc, o argumento de palavra-chave CAN sampling_point de rpc_can_master / rpc_can_slave foi renomeado para sample_point (para corresponder ao MicroPython a montante), e o auxiliar manual de temporização de bits CAN foi removido — o barramento CAN é agora configurado via CAN(..., baudrate=, sample_point=). Os scripts que passavam sampling_point ou dependiam da computação antiga de temporização de bits devem ser atualizados.

Commits: b565eca58, 06d716986

image.format() e imagens comprimidas (comportamento)

Com o caminho unificado de imagem comprimida adicionado para PNG, image.format() devolve agora PIXFORMAT_INVALID para um formato desconhecido, e a indexação/iteração/impressão de imagens comprimidas cobre agora PNG bem como JPEG. O código que inspecionava o valor de retorno anterior para formatos desconhecidos deve ser revisto.

Commit: f12a4659c

Lista de verificação de migração

Para uma migração limpa para a v4.2.2: renomeie o sampling_pointsample_point do RPC CAN e elimine qualquer configuração manual de temporização de bits CAN (a alteração do RPC CAN), e reveja qualquer código que inspecionasse image.format() para formatos desconhecidos (a alteração de format()).