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 JPEGImage.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 och find_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 via WLAN.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 pid PID-regulatorbibliotek, ett modbus RTU-slavbibliotek (med ett 32-modbus-exempel) och en SSD1306_I2C-klass för I2C OLED-skärmar.

  • Exempel — lade till MQTT-prenumeration (mqtt_sub.py, med mqtt.py omdöpt till mqtt_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 samt fb_alloc minnesstatistikrapportering.

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) samt pyb.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

find_apriltags() har som standard 4-vägs anslutning (behavior)

image.find_apriltags() använder nu som standard 4-vägs (i stället för 8-vägs) kantanslutning — snabbare, men detekterade taggar kan skilja sig något. För att återställa den tidigare noggrannheten, bygg den fasta programvaran med IMLIB_ENABLE_FINE_APRILTAGS definierat.

Commits: c1d9bec2c

Migreringschecklista

För en ren portning till v3.4.2 är det typiska arbetet:

  1. Ersätt WINC1500 WLAN.ifconfig()-läsningar av anslutningsinformation med WLAN.netinfo() (ifconfig-ändringen).

  2. Kontrollera MQTTClient.wait_msg() mot en None-retur i stället för att fånga OSError(-1) (wait_msg-ändringen).

  3. Finjustera om AprilTag-detektering eller bygg med IMLIB_ENABLE_FINE_APRILTAGS om du behöver 8-vägs anslutning (find_apriltags-ändringen).

Alla andra skript körs oförändrade.