v3.9.0¶
v3.9.0 är en större utgåva. Den lägger till nRF-porten med Arduino Nano 33 BLE Sense (kamera, PDM-audio-modul, ulab, infrysta sensordrivrutiner), introducerar FLIR Lepton samt MLX90641 / MLX90621-värmesensorer och en kraftigt omarbetad fir-modul, autofokus-ioctls för OV5640, och den nya strömningstypen image.ImageIO. Den gamla CMSIS-NN nn-modulen och de gamla klasserna ImageReader / ImageWriter togs bort — läs de brytande ändringarna nedan.
Höjdpunkter¶
Arduino Nano 33 BLE Sense — ny nRF52840-port med kamera, en PDM-
audio-modul,ulaboch infrysta sensordrivrutiner.Termisk — stöd för FLIR Lepton, MLX90641 och MLX90621 med en omarbetad
fir-modul (paletter, spegling, skalning, radiometri, FFC).OV5640-autofokus — nya
sensor.IOCTL_*_AUTO_FOCUS-ioctls.image.ImageIO— en enhetlig bildströmstyp (minne eller fil; read/write/seek/size/close) som ersätterImageReader/ImageWriter.Brytande: CMSIS-NN
nn-modulen ochimage.ImageReader/image.ImageWritertogs bort, och beteendet förfind_lines()/firändrades — se de brytande ändringarna.
Nya funktioner¶
nRF-port / Arduino Nano 33 BLE Sense — ny nRF52840-port och kortstöd, med en ny
audio-modul (audio.init(),audio.start_streaming(),audio.stop_streaming()),ulabaktiverat, och infrysta sensordrivrutinerapds9960/lps22h/lsm9ds1/hts221.image.ImageIO— en ny bildströmstyp som stöder både minnes- och filströmmar medread()/write()/seek()/size()/close(), plus exempel för ImageIO läsning/skrivning/minne.FLIR Lepton — lade till
FIR_LEPTON-stöd medfir.radiometric(),fir.trigger_ffc()ochfir.register_vsync_cb().Värmesensorer — lade till stöd för MLX90641 (
FIR_MLX90641) och MLX90621-termopiler (officiella Melexis-drivrutiner).fir-paletter / orientering — lade till konstanternafir.PALETTE_RAINBOW/PALETTE_IRONBOW/GRAYSCALE/RGB565, ochfir.read_ir()accepterar nuhmirror/vflip/transpose.OV5640-autofokus — lade till
sensor.IOCTL_TRIGGER_AUTO_FOCUS/IOCTL_PAUSE_AUTO_FOCUS/IOCTL_RESET_AUTO_FOCUS/IOCTL_WAIT_ON_AUTO_FOCUS(OpenMV 2/3/4/4 Plus/PT/Portenta).Omorganiserade Arduino-exemplen i kataloger per kort.
Övriga ändringar och förbättringar¶
Bytte till komprimerade MicroPython-felmeddelanden (kortare undantagssträngar);
type-argumentet ifir.init()autodetekterar nu via en I2C-bussavsökning när det utelämnas;xalloc-undantaget rapporterar nu antalet begärda byte; UART 8 aktiverades på Portenta; FIR-exemplen konsoliderades tillthermal_camera.py/thermal_overlay.py/thermal_overlay_lcd.py. För att rymmas i flashminnet inaktiveradesimage.get_similarity()och selektiv sökning i OpenMV 4-bygget, och bildbiblioteket kan nu byggas utan ett filsystem (för kort utan filsystem).
Buggrättningar¶
Kamera och sensorer:
Rättade OV5640:s PCLK-beräkning, lade till saknade I2C IRQ-hanterare (rättar I2C-överföringar som hänger), omarbetade cambus I2C-läsning/skrivning för tillförlitlighet, gjorde Lepton I2C-bussen valbar, flyttade cambus busstyrningsstift för bussåterhämtning till konfiguration per kort, försöker cambus-avsökningen igen en gång innan den misslyckas, och fick OpenMV PT (Lepton + kamera med delad I2C) att fungera.
Termisk:
Rättade beräkningen av maxvärdet i
firget_ir()/draw_ir()ochimage.get_similarity()(FLT_MIN→-FLT_MAX), AMG8833 12→16-bitarshantering, och MLX90621-noggrannhet (officiell Melexis-drivrutin).
Skärm, ljud och system:
Flyttade STM32 SPI LCD-överföringar till HAL SPI-återanrop (skärmtillförlitlighet), rättade Nano 33
audio.init()(HF-oscillator + PDM-förhållande så att mikrofonen fungerar), H7-timertillståndet med den nya HAL:en, nRFgc_collectoch tidig kortinitiering/avinitiering, och slutade skriva ut det felaktiga meddelandet ”uh oh, no preference for overlapping detection” underfind_apriltags()/find_rects().
Hårdvaru- och kortstöd¶
Arduino Nano 33 BLE Sense — nytt nRF52840-kort (kamera, PDM-ljud,
ulab, infrysta sensordrivrutiner).FLIR Lepton, MLX90641 och MLX90621-värmesensorer.
OV5640-autofokus — OpenMV 2/3/4/4 Plus/PT/Portenta.
Portenta — UART 8 aktiverat.
Brytande API-ändringar¶
Användarsynliga API-brott mellan v3.8.0 och v3.9.0. Omfattning: Python C-moduler i modules/ och Python-bibliotek i scripts/libraries/.
Varje ändring är märkt med sin påverkan:
major — påverkar de flesta skript som använde funktionen; du kommer att behöva porta kod.
minor — smalt API; påverkar endast skript som använde det.
behavior — samma API, andra resultat; kontrollera finjusterade skript igen.
Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.
CMSIS-NN nn-modulen borttagen (major)¶
CMSIS-NN nn-modulen togs bort, inklusive nn.load(), net.forward(), net.search() och nn_class-hjälparen. Modellinferens flyttar till TensorFlow Lite-modulen (tf). Skript som laddade .network-modeller med nn måste portas till tf med en TensorFlow Lite-modell.
Commits: fbc767b36
ImageReader / ImageWriter ersatta av image.ImageIO (major)¶
image.ImageReader / image.ImageWriter och deras metoder next_frame() / add_frame() togs bort och ersattes med den nya typen image.ImageIO, som stöder både minnes- och filströmmar via read() / write() / seek() / size() / close(). Kod som använder de gamla reader/writer-klasserna måste portas till image.ImageIO (se de omdöpta exemplen imageio_read.py / imageio_write.py).
Commits: 783a78754
Nyckelordet scale i fir.draw_ir() borttaget (minor)¶
fir.draw_ir() skrevs om ovanpå den nya bildritningspipelinen. Nyckelordet scale=(min, max) togs bort, och argumenten hint, x_scale, y_scale, roi samt positionella x/y-förskjutningar lades till. Skript som skickade scale=(min, max) till fir.draw_ir() måste ta bort det och använda de nya argumenten.
Commits: 0a29103b1
find_lines()-approximation (behavior)¶
image.find_lines() approximerar nu gradientmagnituden som (abs(gx) + abs(gy)) / 2 och hoppar över magnituder under 126. Detta är snabbare men ändrar uppsättningen av detekterade linjer och ackumulatorvärden, så kontrollera och finjustera threshold / theta_margin / rho_margin igen.
Commits: 902ae3c98
fir.snapshot() omarbetad (behavior)¶
fir.snapshot() omarbetades avsevärt med ett nytt nyckelords-API (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb), och de medföljande exemplen skrevs om. Det tidigare positionella/pixformat-baserade beteendet ändrades; porta FIR-skript till den nya nyckelordsformen (se de uppdaterade exemplen för thermopile-skölden).
Commits: 53f2248b8
fir.init() ger fel vid misslyckande (behavior)¶
fir.init() ger nu ett fel (och avinitierar rent) när värmesensorn inte detekteras, i stället för att tyst fortsätta. Omslut fir.init() i try / except (eller säkerställ att sensorn är ansluten) där du tidigare förlitade dig på att den inte gav fel.
Commits: 4b2f972f3
Migreringschecklista¶
För en ren portning till v3.9.0 är det typiska arbetet:
Porta CMSIS-NN
nn-modellinferens till TensorFlow Litetf-modulen (nn-borttagningen).Ersätt
image.ImageReader/image.ImageWritermedimage.ImageIO(ImageIO-ändringen).Ta bort nyckelordet
scale=(min, max)frånfir.draw_ir()och använd de nya argumenten (draw_ir-ändringen).Finjustera
find_lines()-parametrarna mot det approximativa magnitudmåttet igen (find_lines-ändringen).Porta FIR-skript till det nya nyckelords-API:et för
fir.snapshot()(fir.snapshot-ändringen) och hantera attfir.init()ger fel vid en saknad sensor (fir.init-ändringen).
Alla andra skript körs oförändrade.