v4.5.0

A v4.5.0 é uma versão maior. O antigo módulo lcd foi substituído por um módulo display unificado com backends separados para SPI / paralelo / DSI / TV, foi adicionado suporte à placa Arduino Giga, e chegou uma vaga de funcionalidades para controlo de ecrã, toque e sensor. Existem várias alterações de rutura — leia-as abaixo.

Destaques

  • Novo módulo display — substitui o lcd por backends unificados SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • Suporte à placa Arduino Giga.

  • Novo hardware de ecrã/toque — ecrãs DSI em STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, painéis RGB ST7701, e toque capacitivo GT911 / FT5X06.

  • Novos controlos de sensor — calibração de nível de preto, modo noturno e sensor.disable_delays(); transposição muito mais rápida (~5x) e morfologia (~2,5x).

  • Rutura: lcddisplay, lcd_touchft5x06, pinos LED renomeados — consulte as alterações de rutura.

Novas funcionalidades

  • Backends de ecrãDisplayData (leitura DDC/EDID), um serializador TFP410 DVI/HDMI, suporte a ecrã MIPI-DSI em STM32 H7, um controlador cec para HDMI/DVI, e uma biblioteca Python display com um assistente de inicialização de painel RGB ST7701.

  • Toque — novo controlador de toque capacitivo de 5 pontos GT911 (read_points() / read_id() / reset()).

  • Extensão machine — uma biblioteca machine congelável com uma classe auxiliar machine.LED, e um novo método machine.LED.value([v]).

  • Controlos de sensorsensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (calibração de nível de preto), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), hmirror/vflip OV7670, e sensor.disable_delays() para ignorar atrasos de estabilização da câmara e permitir reconfiguração mais rápida.

  • i.MX RTsensor.set_xclk_frequency() aceita agora qualquer frequência (ajustando ao divisor CSI válido mais próximo) e os módulos SPI lcd / tv / fir foram ativados no RT1060.

Outras alterações e melhorias

  • Operações de imagem muito mais rápidas — a transposição de imagem é ~5x mais rápida e image.morph() é ~2,5x mais rápida.

  • A sondagem do barramento de câmara verifica e valida agora múltiplos endereços de dispositivo, suportando placas com vários dispositivos no barramento.

Correções de erros

Câmara e sensores:

  • Corrigida a precisão do cálculo de ganho em muitos sensores (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), exposição/binning de colunas MT9V0xx, exposição OV5640, e janelamento VGA OV7670.

  • O STM32 descarta agora fotogramas de transposição corrompidos em vez de devolver imagens inválidas.

Processamento de imagem:

  • Corrigido um overflow de inteiro que afetava operações de imagem / FIR / ToF / LCD / TV, instruções de vírgula flutuante vcvtm/vcvtp inválidas no Cortex-M4 (fast_floorf/fast_ceilf), um erro de escalonamento in-place na conversão image.to_*(), e corrupção de cache de desenho DMA2D.

Ecrã e sistema:

  • Corrigidos o temporizador e o modo retrato do ecrã DSI, micro_speech listen() na Nicla Vision / Portenta H7, o interruptor de utilizador STM32 (pyb.Switch), e suporte ao barramento I2C4.

Hardware e suporte a placas

  • Arduino Giga — nova placa, com mapeamentos de pinos Arduino nomeados e um conjunto completo de exemplos.

  • OpenMV RT1060 — módulos SPI LCD, TV e FIR térmico ativados.

  • Arduino Nano 33 BLE Sense — pinos LED.

Alterações de rutura da API

Ruturas de API visíveis pelo utilizador entre v4.4.3 e v4.5.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada alteração está marcada com o seu impacto:

  • maior — a maioria dos scripts que a usavam precisa de edições.

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

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

As alterações estão agrupadas por impacto nessa ordem. Se pretende apenas portar o seu código, salte para a lista de verificação de migração no final. Cada hash de commit liga ao seu diff no GitHub.

Módulo lcd substituído por display (maior)

O antigo módulo lcd foi removido e substituído por um módulo display unificado dividido em backends SPIDisplay (escudo LCD SPI), RGBDisplay / paralelo, DSIDisplay (MIPI-DSI) e TVDisplay, com uma API comum. Os scripts devem passar de import lcd para o módulo display e construir o objeto de backend adequado.

Commits: 227824aac, 6c6336829

Módulo de toque, pinos LED e controladores incluídos (menor)

O módulo genérico lcd_touch foi substituído por um módulo de controlador de toque capacitivo FT5X06 dedicado. Os nomes dos pinos LED foram renomeados para consistência entre todas as placas (os scripts que referenciam os nomes antigos devem ser atualizados). Os controladores IMU/sensor incluídos hts221 / lps22h / lsm6dsox / lsm9ds1 foram substituídos pelas versões da micropython-lib oficial, cujas APIs diferem ligeiramente (os exemplos incluídos foram atualizados em conformidade).

Commits: 86ad6dcdb, 9344c3b74, 2b5b7963b

Controlos de sensor não suportados passam a alertar (comportamento)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() e set_auto_blc() imprimem agora um aviso em vez de lançar um RuntimeError quando o sensor ativo não suporta o controlo, permitindo que o mesmo script funcione com sensores de capacidades diferentes. O código que dependia de capturar a exceção deve ser atualizado.

Commit: dbf4996f2

Lista de verificação de migração

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

  1. Substituir o uso de import lcd pelo novo módulo display e o backend adequado (a alteração do módulo display).

  2. Trocar lcd_touch por FT5X06, atualizar quaisquer nomes antigos de pinos LED, e rever as APIs dos controladores IMU originais (as alterações de toque/pino/controlador).

  3. Substituir try/except RuntimeError em torno de controlos de sensor não suportados por verificações de capacidade (a alteração de controlo de sensor).