v3.9.0

v3.9.0 büyük bir sürümdür. Arduino Nano 33 BLE Sense ile birlikte nRF portunu ekler (kamera, PDM audio modülü, ulab, dondurulmuş sensör sürücüleri), FLIR Lepton ile birlikte MLX90641 / MLX90621 termal sensörlerini ve büyük ölçüde yeniden çalışılmış bir fir modülünü, OV5640 otomatik odaklama ioctl’lerini ve yeni image.ImageIO akış türünü getirir. Eski CMSIS-NN nn modülü ve eski ImageReader / ImageWriter sınıfları kaldırıldı — aşağıdaki bozucu değişiklikleri okuyun.

Öne çıkanlar

  • Arduino Nano 33 BLE Sense — kamera, bir PDM audio modülü, ulab ve dondurulmuş sensör sürücüleriyle yeni nRF52840 portu.

  • Termal — yeniden çalışılmış bir fir modülüyle (paletler, aynalama, ölçekleme, radyometri, FFC) FLIR Lepton, MLX90641 ve MLX90621 desteği.

  • OV5640 otomatik odaklama — yeni sensor.IOCTL_*_AUTO_FOCUS ioctl’leri.

  • image.ImageIOImageReader / ImageWriter‘ın yerini alan birleşik bir görüntü akış türü (bellek veya dosya; read/write/seek/size/close).

  • Bozucu: CMSIS-NN nn modülü ve image.ImageReader / image.ImageWriter kaldırıldı ve find_lines() / fir davranışı değişti — bozucu değişikliklere bakın.

Yeni özellikler

  • nRF portu / Arduino Nano 33 BLE Sense — yeni bir audio modülü (audio.init(), audio.start_streaming(), audio.stop_streaming()), etkinleştirilmiş ulab ve dondurulmuş apds9960 / lps22h / lsm9ds1 / hts221 sensör sürücüleriyle yeni nRF52840 portu ve kart desteği.

  • image.ImageIOread() / write() / seek() / size() / close() ile hem bellek hem de dosya akışlarını destekleyen yeni bir görüntü-akış türü, ayrıca ImageIO okuma/yazma/bellek örnekleri.

  • FLIR Leptonfir.radiometric(), fir.trigger_ffc() ve fir.register_vsync_cb() ile FIR_LEPTON desteği eklendi.

  • Termal sensörler — MLX90641 (FIR_MLX90641) ve MLX90621 termopil desteği eklendi (resmi Melexis sürücüleri).

  • fir paletleri / yönlendirme — fir.PALETTE_RAINBOW / PALETTE_IRONBOW / GRAYSCALE / RGB565 sabitleri eklendi ve fir.read_ir() artık hmirror / vflip / transpose kabul ediyor.

  • OV5640 otomatik odaklamasensor.IOCTL_TRIGGER_AUTO_FOCUS / IOCTL_PAUSE_AUTO_FOCUS / IOCTL_RESET_AUTO_FOCUS / IOCTL_WAIT_ON_AUTO_FOCUS eklendi (OpenMV 2/3/4/4 Plus/PT/Portenta).

  • Arduino örnekleri kart-başına dizinlere yeniden düzenlendi.

Diğer değişiklikler ve iyileştirmeler

  • Sıkıştırılmış MicroPython hata mesajlarına geçildi (daha kısa istisna dizeleri); fir.init()‘in type argümanı artık atlandığında bir I2C veri yolu taraması yoluyla otomatik algılıyor; xalloc istisnası artık istenen bayt sayısını raporluyor; Portenta’da UART 8 etkinleştirildi; FIR örnekleri thermal_camera.py / thermal_overlay.py / thermal_overlay_lcd.py içinde birleştirildi. Flash belleğe sığdırmak için, OpenMV 4 derlemesinde image.get_similarity() ve seçici arama devre dışı bırakıldı ve görüntü kütüphanesi artık bir dosya sistemi olmadan derlenebiliyor (dosya-sistemsiz kartlar için).

Hata düzeltmeleri

Kamera ve sensörler:

  • OV5640 PCLK hesaplaması düzeltildi, eksik I2C IRQ işleyicileri eklendi (I2C aktarım takılmaları düzeltildi), cambus I2C okuma/yazma güvenilirlik için yeniden çalışıldı, Lepton I2C veri yolu seçilebilir yapıldı, cambus veri yolu kurtarma pinleri kart-başına yapılandırmaya taşındı, cambus taraması başarısız olmadan önce bir kez yeniden denendi ve OpenMV PT (Lepton + kamera paylaşımlı I2C) çalıştırıldı.

Termal:

  • fir get_ir() / draw_ir() ve image.get_similarity() içindeki maksimum-değer hesaplaması (FLT_MIN-FLT_MAX), AMG8833 12→16-bit işleme ve MLX90621 doğruluğu (resmi Melexis sürücüsü) düzeltildi.

Ekran, ses ve sistem:

  • STM32 SPI LCD aktarımları HAL SPI geri çağırmalarına taşındı (ekran güvenilirliği), Nano 33 audio.init() düzeltildi (HF osilatör + PDM oranı, böylece mikrofon çalışır), yeni HAL ile H7 zamanlayıcı durumu, nRF gc_collect ve erken kart ilklendirme/sonlandırma düzeltildi ve find_apriltags() / find_rects() sırasında “uh oh, no preference for overlapping detection” sahte mesajının yazdırılması durduruldu.

Donanım ve kart desteği

  • Arduino Nano 33 BLE Sense — yeni nRF52840 kartı (kamera, PDM ses, ulab, dondurulmuş sensör sürücüleri).

  • FLIR Lepton, MLX90641 ve MLX90621 termal sensörler.

  • OV5640 otomatik odaklama — OpenMV 2/3/4/4 Plus/PT/Portenta.

  • Portenta — UART 8 etkinleştirildi.

Bozucu API değişiklikleri

v3.8.0 ile v3.9.0 arasında kullanıcıya görünen API kırılmaları. Kapsam: modules/ içindeki Python C-modülleri ve scripts/libraries/ içindeki Python kütüphaneleri.

Her değişiklik etkisine göre etiketlenmiştir:

  • major — özelliği kullanan çoğu betiği etkiler; kodu taşımanız gerekecek.

  • minor — dar API; yalnızca onu kullanan betikleri etkiler.

  • behavior — aynı API, farklı sonuçlar; ince ayar yapılmış betikleri yeniden kontrol edin.

Değişiklikler bu sırayla etkilerine göre gruplandırılmıştır. Yalnızca kodunuzu taşımak istiyorsanız, sondaki taşıma kontrol listesine atlayın. Her commit özeti, GitHub’daki diff’ine bağlanır.

CMSIS-NN nn modülü kaldırıldı (major)

CMSIS-NN nn modülü, nn.load(), net.forward(), net.search() ve nn_class yardımcısı dahil olmak üzere kaldırıldı. Model çıkarımı TensorFlow Lite (tf) modülüne taşınır. nn ile .network modellerini yükleyen betikler, bir TensorFlow Lite modeliyle tf‘ye taşınmalıdır.

Commit’ler: fbc767b36

ImageReader / ImageWriter image.ImageIO ile değiştirildi (major)

image.ImageReader / image.ImageWriter ve bunların next_frame() / add_frame() metotları kaldırıldı ve read() / write() / seek() / size() / close() yoluyla hem bellek hem de dosya akışlarını destekleyen yeni image.ImageIO türüyle değiştirildi. Eski reader/writer sınıflarını kullanan kod image.ImageIO‘ya taşınmalıdır (yeniden adlandırılan imageio_read.py / imageio_write.py örneklerine bakın).

Commit’ler: 783a78754

fir.draw_ir() scale anahtar sözcüğü kaldırıldı (minor)

fir.draw_ir(), yeni görüntü çizim ardışık düzeni üzerine yeniden yazıldı. scale=(min, max) anahtar sözcüğü kaldırıldı ve hint, x_scale, y_scale, roi ve konumsal x/y kayma argümanları eklendi. fir.draw_ir()‘ye scale=(min, max) geçiren betikler bunu kaldırmalı ve yeni argümanları kullanmalıdır.

Commit’ler: 0a29103b1

find_lines() yaklaşımı (behavior)

image.find_lines() artık gradyan büyüklüğünü (abs(gx) + abs(gy)) / 2 olarak yaklaşık hesaplıyor ve 126’nın altındaki büyüklükleri atlıyor. Bu daha hızlıdır ancak tespit edilen çizgiler kümesini ve birikteç değerlerini değiştirir, bu nedenle threshold / theta_margin / rho_margin‘i yeniden kontrol edin ve yeniden ayarlayın.

Commit’ler: 902ae3c98

fir.snapshot() yeniden çalışıldı (behavior)

fir.snapshot() yeni bir anahtar sözcük API’siyle (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb) büyük ölçüde yeniden çalışıldı ve paketlenmiş örnekler yeniden yazıldı. Önceki konumsal/yalnızca-pixformat davranışı değişti; FIR betiklerini yeni anahtar sözcük biçimine taşıyın (güncellenmiş thermopile-shield örneklerine bakın).

Commit’ler: 53f2248b8

fir.init() başarısızlıkta hata fırlatır (behavior)

fir.init() artık termal sensör algılanmadığında sessizce devam etmek yerine hata fırlatıyor (ve temiz bir şekilde sonlandırıyor). Daha önce hata fırlatmamasına güvendiğiniz yerlerde fir.init()‘i try / except içine sarın (veya sensörün bağlı olduğundan emin olun).

Commit’ler: 4b2f972f3

Taşıma kontrol listesi

v3.9.0’a temiz bir taşıma için tipik iş şudur:

  1. CMSIS-NN nn model çıkarımını TensorFlow Lite tf modülüne taşıyın (nn kaldırılması).

  2. image.ImageReader / image.ImageWriter‘ı image.ImageIO ile değiştirin (ImageIO değişikliği).

  3. fir.draw_ir()‘den scale=(min, max) anahtar sözcüğünü kaldırın ve yeni argümanları kullanın (draw_ir değişikliği).

  4. find_lines() parametrelerini yaklaşık büyüklük metriğine karşı yeniden ayarlayın (find_lines değişikliği).

  5. FIR betiklerini yeni fir.snapshot() anahtar sözcük API’sine taşıyın (fir.snapshot değişikliği) ve eksik bir sensörde fir.init()‘in hata fırlatmasını ele alın (fir.init değişikliği).

Diğer tüm betikler değişmeden çalışır.