v3.7.0¶
A v3.7.0 é um grande lançamento. Adiciona o módulo audio (microfone PDM do Portenta H7) com uma nova API de callback não bloqueante, o módulo de reconhecimento de fala TensorFlow micro_speech, um controlador de LCD RGB paralelo totalmente novo (com saída HDMI e toque FT5X06), um método image.flush() com constantes de formato de pixel e um pipeline de escala image.draw_image() reescrito. Várias bibliotecas auxiliares legadas e métodos de imagem foram removidos e a matemática de yuv_to_* mudou — leia as mudanças incompatíveis abaixo.
Destaques¶
Módulo
audio— captura do microfone PDM embarcado do Portenta H7 com uma APIstart_streaming(callback)não bloqueante.micro_speech— um módulo de reconhecimento de micro-fala TensorFlow.Novo controlador de LCD — suporte a display RGB paralelo, saída HDMI (TFP410) e toque FT5X06.
image.draw_image()— reescrito com um pipeline completo de escala/alpha/paleta (x_scale/y_scale/hint/color_palette…).image.flush()além de constantes de formato de pixel (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).Incompatível: bibliotecas auxiliares legadas de matemática e vários métodos de imagem foram removidos, as APIs de
draw_image()/ LCD foram reformuladas, eyuv_to_*não subtrai mais 128 — veja as mudanças incompatíveis.
Novos recursos¶
audio— um novo móduloaudiodo Portenta H7 para captura de microfone PDM:audio.init(),audio.start_streaming(callback)não bloqueante eaudio.stop_streaming()(a frequência é especificada em Hz).micro_speech— um novo módulo com uma classeMicroSpeech,audio_callback()emicro_speech()para reconhecimento de fala TensorFlow;listen()usa uma média de janela móvel e aceita uma palavra-chavefilterpara restringir os resultados a uma lista de rótulos.LCD — um novo controlador de LCD com suporte a display RGB paralelo, tipos
LCD_NONE/LCD_SHIELD/LCD_DISPLAY, muitas constantes de framesize,triple_buffer/framesize/refresh/bgr/deinit, umdisplayexpandido, saída HDMI via o TFP410 e suporte a tela sensível ao toque FT5X06.image.flush()— adicionado um métodoimage.flush()e constantes de formato de pixel (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).image.draw_image()— reescrito com um novo pipeline de escala:x_scale/y_scale/x_size/y_size,rgb_channel,alpha,color_palette,alpha_paletteehint, além das constantesimage.AREA/BILINEAR/BICUBIC/CENTER/EXTRACT_RGB_CHANNEL_FIRST/APPLY_COLOR_PALETTE_FIRSTe novos exemplos de alpha-blending / tabela de cores / escala.ImageReader.next_frame()ganhou uma palavra-chavepausepara desabilitar o atraso de reprodução em tempo real.Adicionados exemplos de áudio do Portenta (
audio_fft.py,micro_speech.py) e um exemplo de despertar do estado stop via ExtInt.
Outras mudanças e melhorias¶
Os exemplos embutidos foram reorganizados sob
scripts/examples/Arduino/; o framebuffer agora atualiza instantaneamente após carregar/criar imagens comcopy_to_fb=True(sem necessidade de flush manual); o heap do Portenta foi reduzido levemente para acomodar mais estado estático de drivers.
Correções de bugs¶
Câmera e imagem:
Corrigida a troca de vermelho/azul (ordem de bytes RGB565) em imagens capturadas, o arredondamento de desenho do DMA2D para combinar com o restante do código de desenho, a corrupção de
fb_allocem alocações recursivas (find_blobs()) e o controle detop_hat()/black_hat()condicionado a ambas as operações binárias e de matemática estarem habilitadas.
Display e áudio:
Corrigida a saída do shield LCD e o modo de áudio mono de 1 canal do Portenta.
Portenta:
Contornado um problema de Ethernet/SDRAM (manter
rst_ethem nível alto) e corrigida a configuração de temporização do SDRAM.
Hardware e suporte a placas¶
Arduino Portenta H7 — captura de áudio do microfone PDM embarcado (SAI / PDM2PCM).
LCD — novo controlador de display RGB paralelo (LTDC habilitado no build do H7), saída HDMI via o TFP410 e suporte a LCD com tela sensível ao toque FT5X06.
Mudanças incompatíveis na API¶
Quebras de API visíveis ao usuário entre a v3.6.9 e a v3.7.0. Escopo: C-modules 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; reverifique scripts ajustados.
As mudanças são agrupadas por impacto nessa ordem. Se você só quer portar seu código, vá para o checklist de migração no final. Cada hash de commit leva ao seu diff no GitHub.
Bibliotecas auxiliares legadas de matemática removidas (minor)¶
As bibliotecas auxiliares mtx, rv, ulinalg, umatrix e vec foram removidas de scripts/libraries em favor de ulab. Scripts que façam import de qualquer uma delas falharão e precisam ser portados para ulab.
Commits: 1f7da9272
remove_shadows() / chrominvar() / illuminvar() removidos (minor)¶
image.remove_shadows(), image.chrominvar() e image.illuminvar() foram excluídos sem substituição. Scripts que chamam esses métodos precisam remover as chamadas.
Commits: 3173c2bb3
Assinatura de image.draw_image() reformulada (minor)¶
image.draw_image() foi reescrito sobre um novo pipeline de escala. Os antigos argumentos posicionais alpha / scale único e a ordenação posicional anterior não se aplicam mais; use a nova forma com palavras-chave (x_scale= / y_scale= ou x_size= / y_size=, alpha=, color_palette=, hint= …).
Commits: 3439f8824
Reescrita do módulo LCD (minor)¶
O módulo lcd foi reescrito para o novo controlador de display. lcd.init() agora recebe um type de display (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) e novos argumentos de palavra-chave, e a superfície de constantes / API foi substancialmente reorganizada. Scripts antigos apenas de shield em sua maioria ainda funcionam, mas os padrões e o comportamento mudaram — revise os scripts de LCD contra a nova API de type / framesize.
Commits: 185538207
yuv_to_* não subtrai mais 128 (behavior)¶
image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() agora tratam o elemento Y da tupla como um valor sem sinal de 0–255 em vez de subtrair 128. Os chamadores precisam passar Y sem o viés anterior de −128 para obter as mesmas cores de antes.
Commits: dcf141192
Checklist de migração¶
Para uma portabilidade limpa para a v3.7.0 o trabalho típico é:
Portar o uso de
mtx/rv/ulinalg/umatrix/vecparaulab(a remoção da biblioteca de matemática).Remover as chamadas de
image.remove_shadows()/chrominvar()/illuminvar()(os métodos de imagem removidos).Atualizar as chamadas de
image.draw_image()para a nova assinatura com palavras-chave (a reformulação de draw_image).Revisar os scripts de LCD contra a nova API de
type/framesizedolcd(a reescrita do LCD).Remover o viés de −128 ao passar Y para
yuv_to_*(a mudança de yuv_to_*).
Todos os outros scripts funcionam sem alterações.