v4.1.0

A v4.1.0 traz suporte completo para o Arduino Nano RP2040 Connect / Raspberry Pi Pico (WiFi, Bluetooth, captura de câmara, salto para bootloader), descodificação direta de imagens JPEG, um cliente HTTP urequests integrado no firmware, suporte ao sensor OV7670, e relatório de erros de sensor normalizado. A API WiFi e as exceções de sensor foram alteradas — leia as mudanças de ruptura abaixo.

Destaques

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

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

  • Cliente HTTP urequests integrado no firmware.

  • Suporte ao sensor de câmara OV7670.

  • Ruptura: a API WiFi NINA/RP2 foi reformulada e vários erros de sensor passam agora a lançar RuntimeError — consulte as alterações de ruptura.

Novas funcionalidades

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

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

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

  • Biblioteca auxiliar ble_advertising, integrada no firmware do 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 bootloader no Arduino Nano 33 BLE Sense.

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

Outras alterações e melhorias

  • Os sockets UDP RP2 associam-se automaticamente a uma porta efémera quando usados sem associação; submódulo MicroPython incluído atualizado.

Correções de erros

Rede:

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

Câmara e sistema:

  • Corrigidos o reinício do HM01B0, o bloqueio do bus I2C da câmara após uma deteção falhada de sensor no OpenMV H7, a entrada em modo de baixo consumo ULPI H7 na desconexão USB, a geração de pinos ADC H7, e o pinout da câmara Portenta / SPI-CS do shield.

Suporte de hardware e placas

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

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

  • Arduino Portenta H7 — I2C4 de breakout, pinos extra de PWM/relógio, sensores OV7725 / MT9V034.

Alterações de ruptura da API

Alterações de API visíveis para o utilizador entre v4.0.2 e v4.1.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada alteração é 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. Se apenas pretende portar o seu código, salte para o guia de migração no final. Cada hash de commit é uma ligação para o respetivo diff no GitHub.

API WiFi NINA / RP2 reformulada (menor)

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

Commits: eb2f98277, e14470f68, 0c40f4832

Erros de sensor passam agora a lançar RuntimeError (comportamento)

O relatório de erros do sensor foi normalizado em torno de uma tabela de códigos de erro unificada: falhas da câmara (tempo limite de captura, framesize/pixformat/window/framerate inválidos, erro de framebuffer, overflow JPEG, sensor não detetado, …) passam agora a lançar mensagens consistentes e descritivas, e várias condições que antes lançavam ValueError passam a lançar RuntimeError (incluindo sensor.reset()). O código que capturava ValueError para estes casos tem de capturar RuntimeError.

Commits: 0491a6a88, c8bf0af6f, 2fb226562

Guia de migração

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

  1. Portar o código WiFi NINA/RP2 para a interface padrão network.WLAN (WLAN(interface), active(), essid=) e esperar um tuplo de nina.fw_version() (a alteração da API WiFi).

  2. Alterar except ValueError para except RuntimeError em torno do tratamento de erros da câmara / sensor.reset() (a alteração de erros do sensor).