v4.2.2#

A v4.2.2 adiciona suporte a imagens PNG (decodificação/codificação via lodepng), um carregador de modelos integrados orientado por tabela, suporte ao OV5640 no Portenta, uma atualização do TensorFlow do Edge Impulse e o ulab 4.0. A API de configuração de CAN do RPC mudou — leia as mudanças incompatíveis abaixo.

Destaques#

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

  • tf.load_builtin_model() — modelos integrados orientados por tabela que podem ser substituídos ou adicionados em tempo de build.

  • Portenta H7 — suporte à câmera OV5640 (com autofoco).

  • MicroPython/ulab — ulab atualizado para 4.0.0.

  • Incompatível: a API de configuração de CAN do RPC mudou — veja as mudanças incompatíveis.

Novos recursos#

  • Formato de imagem PNG — um novo método Image.to_png(), uma constante image.PNG / PIXFORMAT_PNG, carregamento/salvamento de arquivos PNG (leitura/escrita de .png) e saída PNG nas conversões de image.to(), por meio do codec lodepng integrado.

  • tf.load_builtin_model(path) — carrega um modelo integrado ao firmware e retorna uma tupla (labels, net); os modelos integrados agora são orientados por tabela, de modo que podem ser substituídos ou adicionados em tempo de build.

Outras mudanças e melhorias#

  • TensorFlow / Edge Impulse — a biblioteca de inferência incluída foi atualizada para o Edge Impulse ei-V2.5.0, o modelo person_detection passou para a tabela de modelos integrados e operadores do TensorFlow que faltavam foram adicionados em todas as builds Cortex-M0+/M4/M7/M55, de modo que mais modelos do Edge Impulse funcionam.

  • ulab atualizado para 4.0.0.

  • Abrir a porta serial virtual USB a 1200 bps agora aciona um reset por toque no estilo Arduino para o bootloader.

  • O firmware do módulo WiFi WINC1500 foi atualizado para 19.7.6 (com o script atualizador), e agora ele informa a versão real do driver do host.

  • A porta RP2 imprime “MPY: soft reboot” e ganhou init/de-init de UART.

Correções de bugs#

  • Corrigido o tamanho bruto do frame buffer no Arduino Nano RP2040 Connect e o Product ID USB do Arduino Nicla Vision (enumeração USB correta).

Hardware e suporte a placas#

  • Arduino Portenta H7 — suporte à câmera OV5640 (com autofoco); o GC2145 fica desabilitado no Portenta.

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

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

Mudanças incompatíveis de API#

Quebras de API visíveis ao usuário entre a v4.2.1 e a v4.2.2. Escopo: módulos C de Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada mudança é marcada com seu impacto:

  • minor — API restrita; afeta apenas scripts que a usavam.

  • behavior — mesma API, resultados diferentes; reavalie scripts ajustados.

As mudanças são agrupadas por impacto nessa ordem. Cada hash de commit leva ao seu diff no GitHub.

API de configuração de CAN do RPC (minor)#

Na biblioteca rpc, o argumento nomeado de CAN sampling_point de rpc_can_master / rpc_can_slave foi renomeado para sample_point (para corresponder ao MicroPython upstream), e o auxiliar manual de bit-timing de CAN foi removido — o barramento CAN agora é configurado via CAN(..., baudrate=, sample_point=). Scripts que passavam sampling_point ou que dependiam do antigo cálculo de bit-timing precisam ser atualizados.

Commits: b565eca58, 06d716986

image.format() e imagens comprimidas (behavior)#

Com o caminho unificado de imagens comprimidas adicionado para PNG, image.format() agora retorna PIXFORMAT_INVALID para um formato desconhecido, e a indexação / iteração / impressão de imagens comprimidas agora cobre tanto PNG quanto JPEG. Código que inspecionava o valor de retorno anterior para formatos desconhecidos deve ser reavaliado.

Commit: f12a4659c

Lista de verificação de migração#

Para uma migração limpa para a v4.2.2: renomeie sampling_pointsample_point no CAN do RPC e remova qualquer configuração manual de bit-timing de CAN (a mudança de CAN do RPC), e reavalie qualquer código que inspecionava image.format() para formatos desconhecidos (a mudança do format()).