v3.4.2¶
v3.4.2 är en stor utgåva. Den inför OpenMV Cam H7 Plus (SDRAM, enorm bildbuffert för högupplöst infångning), OV5640 5 MP-kameran, FDCAN-stöd, en omskriven OV2640-drivrutin, Image.jpeg_encode_for_ide() samt nya bibliotek pid / modbus. WINC1500 ifconfig()-API:et och standardvärdena i find_apriltags() ändrades — läs de brytande ändringarna nedan.
Höjdpunkter¶
OpenMV Cam H7 Plus — nytt kort med en SDRAM-drivrutin och en bildbuffert på ~31 MB för högupplöst infångning.
OV5640 5 MP-kameradrivrutin med I2C-baserad detektering.
FDCAN-kringutrustningsstöd, med ett CAN-exempel.
OV2640-omskrivning — upprätta bilder, fungerande autofunktioner, JPEG-stillbild och en ny
sensor.XGA-bildrutestorlek.IDE JPEG —
Image.jpeg_encode_for_ide()och autoöverföring av stora JPEG:er till IDE:n.Brytande: semantiken för WINC1500
WLAN.ifconfig()ändrades,MQTTClient.wait_msg()ger inte längre ett undantag vid tom recv ochfind_apriltags()har som standard 4-vägs anslutning — se de brytande ändringarna.
Nya funktioner¶
WiFi — lade till
WLAN.netinfo()(returnerar(rssi, security, ssid, mac, ip)) och WINC1500 statisk-IP-konfiguration viaWLAN.ifconfig(), med ett statisk-IP-exempel.FDCAN — lade till FDCAN-kringutrustningsstöd och ett
can.py-exempel.IDE JPEG — lade till
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); stora JPEG:er överförs automatiskt till IDE:n när bufferten är för liten.Bibliotek — lade till ett
pidPID-regulatorbibliotek, ettmodbusRTU-slavbibliotek (med ett 32-modbus-exempel) och enSSD1306_I2C-klass för I2C OLED-skärmar.Exempel — lade till MQTT-prenumeration (
mqtt_sub.py, medmqtt.pyomdöpt tillmqtt_pub.py).Sensor — lade till bildrutestorleken
sensor.XGA(1024x768);print()/repr()på en Bayer-bild matar nu ut JSON-metadata.
Övriga ändringar och förbättringar¶
Skrev om OV2640-drivrutinen (upprätta bilder, fungerande autofunktioner, JPEG-stillbild accepterad); aktiverade högupplösta apriltags (lyfter gränsen på <64K-pixlar för ROI på kapabla kort); sänkte OV2640 PCLK från 72 MHz till 36 MHz.
Buggfixar¶
Bildbehandling:
Fixade ett binäroperations-överskridande förbi bildslutet, printf/float-precision i utdata från
find_apriltags()/find_datamatrices()/find_lines(), felformaterad JSON i blob-print(),find_apriltags()på vflippade / hmirrorerade bilder,find_lbp()ROI-buggen, JPEG-komprimeringstimeouten för stora upplösningar samtfb_allocminnesstatistikrapportering.
Kamera och sensorer:
Fixade JPEG-läges-cacheunderhåll och buffertjustering, max DCMI-överföringsstorlek, OV2640-registerkonfiguration och -upplösningar, återställning av sensorns avstängningstillstånd vid återställning samt OV7725-bildkvalitet (lade till ett bandfilter per kamera).
Nätverk och system:
Fixade
socket.accept()-hårdfel/bugg, WINC1500-sockettimeouthantering (timeout 0 är nu blockerande; socketar stängs inte vid recv-timeout), H7 djupsömn, RTC:n (uppströmsuppdatering och H7 EXTI- / väckningstimer- / mjukåterställningsproblem) samtpyb.Servo-timer-IRQ:n (Servo var icke-funktionell).
Hårdvaru- och kortstöd¶
OpenMV Cam H7 Plus (OPENMV4R) — nytt kort med en SDRAM-drivrutin som möjliggör en stor (~31 MB) bildbuffert.
OV5640 — ny 5 MP-kameradrivrutin med I2C-baserad detektering.
FDCAN — kringutrustningsstöd.
Brytande API-ändringar¶
Användarsynliga API-brytningar mellan v3.4.1 och v3.4.2. 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 behöver porta kod.
minor — smalt API; påverkar endast skript som använde det.
behavior — samma API, andra resultat; kontrollera om finjusterade skript.
Ändringarna grupperas 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.
WINC1500 WLAN.ifconfig()-semantik ändrad (major)¶
På WINC1500 WiFi-shielden returnerar WLAN.ifconfig() inte längre den gamla 5-elementslistan [rssi, security, ssid, mac, ip]. Den hämtar/sätter nu en (ip, subnet, gateway, dns)-tupel (och stöder statisk-IP-konfiguration), i linje med standardgränssnittet network. Kod som läste anslutningsinformation från ifconfig() måste byta till den nya metoden WLAN.netinfo() ((rssi, security, ssid, mac, ip)).
Commits: e685b484a
MQTTClient.wait_msg() returnerar None vid tom recv (minor)¶
mqtt-bibliotekets MQTTClient.wait_msg() returnerar nu None vid en tom mottagning i stället för att ge ett OSError(-1). Kod som fångade OSError(-1) för att upptäcka en stängd/tom socket måste i stället kontrollera mot ett None-returvärde.
Commits: 76239ea89
Migreringschecklista¶
För en ren portning till v3.4.2 är det typiska arbetet:
Ersätt WINC1500
WLAN.ifconfig()-läsningar av anslutningsinformation medWLAN.netinfo()(ifconfig-ändringen).Kontrollera
MQTTClient.wait_msg()mot enNone-retur i stället för att fångaOSError(-1)(wait_msg-ändringen).Finjustera om AprilTag-detektering eller bygg med
IMLIB_ENABLE_FINE_APRILTAGSom du behöver 8-vägs anslutning (find_apriltags-ändringen).
Alla andra skript körs oförändrade.