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()).