v1.1.0

A v1.1.0 é o lançamento fundamental de arquitetura: ela abandona os primeiros módulos de periféricos personalizados em favor dos built-ins padrão do MicroPython, move a API de imagem para o módulo image e o relógio de taxa de quadros para o time, e adiciona cascatas Haar embutidas, get_pixel() / set_pixel(), suporte à placa OpenMV 2 e depuração via USB-CDC. É um lançamento fortemente incompatível e definidor de API — leia as mudanças incompatíveis abaixo.

Destaques

  • Built-ins do MicroPython — os módulos personalizados gpio / led / spi / socket / wlan / uart / file / select foram removidos em favor de pyb / machine do MicroPython.

  • Módulo imageImage() / HaarCascade() / descritores agora estão no módulo image.

  • time.clock — o relógio de taxa de quadros foi movido para o módulo time.

  • Cascatas Haar embutidasHaarCascade("frontalface") / HaarCascade("eye") (sem necessidade de arquivo).

  • Suporte à placa OpenMV 2 e depuração via USB-CDC.

  • Incompatível: a estrutura de módulos foi redefinida — veja as mudanças incompatíveis.

Novos recursos

  • Imagem — adicionados Image.get_pixel(x, y) / set_pixel() e acesso a pixels por índice img[i]; cascatas Haar embutidas na flash (HaarCascade("frontalface") / HaarCascade("eye")) e uma palavra-chave stages= para limitar os estágios da cascata; draw_string() funciona em imagens em escala de cinza.

  • Sensor — adicionados sensor.set_colorbar(), sensor.set_saturation() e o tamanho de quadro QQVGA2.

  • mlxmlx.read(type) com saída mlx.RAINBOW / mlx.GRAYSCALE.

  • Depuração — implementada depuração via USB CDC, uma consulta de firmware fw_version(), firmware por placa (OpenMV 1 / OpenMV 2) e scripts de autoteste / barra de cores; erros fatais/de parsing são registrados na flash.

Outras mudanças e melhorias

  • Falta de memória agora levanta MemoryError em vez de OSError; os scripts executam com re-lançamento de exceções para que os erros sejam impressos em vez de travar; a taxa de transmissão serial é configurável (padrão 921600); um sistema de arquivos em flash maior; o clock de pixel do sensor foi reduzido para 54 MHz para estabilidade de captura; sensor.reset() depende apenas de um soft reset do sensor.

Correções de bugs

  • Corrigidos a correspondência de modelos, o find_features() que repetia o primeiro objeto, o acesso atômico a registradores SCCB/I2C, a detecção de chip do cartão SD, o mapeamento de pinos do soft-I2C, a precisão de fast_cbrtf / cor LAB e o uso de memória da imagem integral / filtro de mediana na OpenMV 1 / 2.

Suporte a hardware e placas

  • Suporte à placa OpenMV 2 (STM32F427) (e ao design de hardware da OpenMV 3); MCO usado como clock do sensor na OpenMV 2.

Mudanças incompatíveis na API

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

Cada mudança é marcada com seu impacto:

  • major — afeta a maioria dos scripts que usavam o recurso; você precisará portar o código.

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

As mudanças são agrupadas por impacto nessa ordem. Se você só quer portar seu código, vá direto para o checklist de migração no final. Cada hash de commit liga ao seu diff no GitHub.

Módulos de periféricos personalizados removidos (major)

Os primeiros módulos personalizados clock / file / gpio / led / select / socket / spi / wlan / uart foram removidos em favor dos periféricos embutidos pyb / machine do MicroPython. Porte os scripts para os equivalentes padrão do MicroPython (por exemplo, pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Commits: 6d2fafa94

API de imagem movida para o módulo image (major)

Image(), HaarCascade() e as funções de salvar/carregar de descritores não são mais built-ins isolados — elas vivem no novo módulo image. Os scripts devem fazer import image e usar image.Image / image.HaarCascade().

Commits: 54288c535

Relógio de taxa de quadros movido para time (major)

O módulo independente clock foi removido; o relógio de taxa de quadros agora vive em time. Use import time e clock = time.clock() — o objeto retornado ainda fornece .tick() / .fps() / .avg() / .reset().

Commits: a8928ca3b

/flash e /sd não são mais adicionados ao sys.path (behavior)

Os rótulos de volume / diretório raiz foram corrigidos e /flash e /sd não são mais anexados automaticamente ao sys.path. Scripts que importavam módulos auxiliares por nome simples a partir dessas localizações precisam adicionar o caminho explicitamente (ou colocar os módulos onde são encontrados).

Commits: 09e77b5da

Checklist de migração

Para um port limpo para a v1.1.0, o trabalho típico é:

  1. Substituir os módulos personalizados gpio / led / spi / uart / socket / wlan / file / select por pyb / machine do MicroPython (a remoção dos módulos personalizados).

  2. import image e prefixar Image() / HaarCascade() com image. (a mudança do módulo image).

  3. Usar import time e clock = time.clock() (a mudança do clock).

  4. Adicionar /flash / /sd ao sys.path explicitamente se você importava módulos auxiliares por nome simples (a mudança no sys.path).

Todos os outros scripts executam sem alterações.