v4.1.0

A v4.1.0 traz suporte completo ao Arduino Nano RP2040 Connect / Raspberry Pi Pico (WiFi, Bluetooth, captura de câmera, salto para o bootloader), decodificação direta de imagens JPEG, um cliente HTTP urequests congelado, suporte ao sensor OV7670 e relatório padronizado de erros de sensor. A API de WiFi e as exceções de sensor mudaram — leia as mudanças incompatíveis abaixo.

Destaques

  • Placas RP2 — o Arduino Nano RP2040 Connect / Pico ganha WiFi (NINA-W10), Bluetooth (NimBLE), captura de câmera/DCMI e salto para o bootloader.

  • Decodificação JPEG — as operações de imagem agora aceitam imagens JPEG comprimidas diretamente.

  • Cliente HTTP urequests congelado no firmware.

  • Suporte ao sensor de câmera OV7670.

  • Incompatível: a API de WiFi NINA/RP2 foi reformulada e vários erros de sensor agora lançam RuntimeError — veja as mudanças incompatíveis.

Novos recursos

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi via o driver network NINA-W10, Bluetooth/NimBLE, captura de câmera (programa PIO DCMI) e um comando de salto para o bootloader.

  • Decodificação de imagens JPEGfind_apriltags(), lcd.display(), tv.display() e operações de imagem relacionadas agora aceitam imagens JPEG comprimidas diretamente (decodificando para binário/escala de cinza/RGB565).

  • urequests — o cliente HTTP (GET/POST/PUT/…) agora está congelado no OpenMV 4 / 4 Plus / Portenta / Nicla, com um exemplo http_post.py.

  • Biblioteca auxiliar ble_advertising, congelada no Nano RP2040 Connect.

  • Host/depuraçãopyopenmv.reset_to_bl() e um novo comando USBDBG_SYS_RESET_TO_BL (0x0E) para reiniciar no bootloader; salto para o bootloader no Arduino Nano 33 BLE Sense.

  • OV7670 — novo suporte ao sensor de câmera OV7670, selecionável no OpenMV 4.

Outras mudanças e melhorias

  • Os sockets UDP do RP2 fazem auto-bind a uma porta efêmera quando usados sem bind; o submódulo MicroPython incluído foi atualizado.

Correções de bugs

Rede:

  • Corrigido o tratamento de accept/close/send/recv/bind dos sockets WiFi NINA e os timeouts de operação, além de uma condição de corrida no buffer de texto de depuração do RP2 que podia corromper a saída do IDE.

Câmera e sistema:

  • Corrigidos o reset do HM01B0, o barramento I2C da câmera ficando travado após uma varredura de sensor falha no OpenMV H7, a entrada em baixo consumo da ULPI do H7 ao desconectar o USB, a geração de pinos ADC do H7 e o pinout da câmera Portenta / o SPI-CS do shield.

Hardware e suporte a placas

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi, Bluetooth, câmera, sistema de arquivos em flash maior, bootloader MSC.

  • Sensor de câmera OV7670 (OpenMV 4).

  • Arduino Portenta H7 — breakout I2C4, pinos extras de PWM/clock, sensores OV7725 / MT9V034.

Mudanças incompatíveis na API

Quebras de API visíveis ao usuário entre a v4.0.2 e a v4.1.0. Escopo: C-modules Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada mudança é marcada com seu impacto:

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

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

As mudanças são agrupadas por impacto nessa ordem. Se você quer apenas portar seu código, pule para a lista de verificação de migração ao final. Cada hash de commit leva ao seu diff no GitHub.

API de WiFi NINA / RP2 reformulada (menor)

O driver WLAN NINA / RP2 foi reformulado para corresponder à interface network do MicroPython / CYW43 upstream: um construtor WLAN(interface) (modo STA/AP), um novo método active([bool]), os aliases config / start_ap de connect, o argumento ssid de connect() renomeado para essid, uma nova palavra-chave channel, e nina.fw_version() agora retorna uma tupla (major, minor, patch) em vez de bytes brutos. Uma incompatibilidade de versão do firmware NINA agora é um aviso não fatal em vez de um OSError.

Commits: eb2f98277, e14470f68, 0c40f4832

Erros de sensor agora lançam RuntimeError (comportamento)

O relatório de erros de sensor foi padronizado em torno de uma tabela unificada de códigos de erro: falhas de câmera (timeout de captura, framesize/pixformat/janela/framerate inválidos, erro de framebuffer, overflow de JPEG, sensor não detectado, …) agora lançam mensagens consistentes e descritivas, e várias condições que antes lançavam ValueError agora lançam RuntimeError (incluindo sensor.reset()). Código que capturava ValueError para esses casos deve passar a capturar RuntimeError.

Commits: 0491a6a88, c8bf0af6f, 2fb226562

Lista de verificação de migração

Para uma porta limpa para a v4.1.0, o trabalho típico é:

  1. Porte o código de WiFi NINA/RP2 para a interface padrão network.WLAN (WLAN(interface), active(), essid=) e espere uma tupla de nina.fw_version() (a mudança na API de WiFi).

  2. Troque except ValueError por except RuntimeError em torno do tratamento de erros de câmera / sensor.reset() (a mudança nos erros de sensor).