v3.4.2¶
v3.4.2 is een grote release. Deze introduceert de OpenMV Cam H7 Plus (SDRAM, enorme framebuffer voor opname op hoge resolutie), de OV5640 5 MP-camera, FDCAN-ondersteuning, een herschreven OV2640-driver, Image.jpeg_encode_for_ide() en nieuwe pid- / modbus-bibliotheken. De WINC1500 ifconfig()-API en de standaardwaarden van find_apriltags() zijn gewijzigd — lees de breaking changes hieronder.
Hoogtepunten¶
OpenMV Cam H7 Plus — nieuw bord met een SDRAM-driver en een framebuffer van ~31 MB voor opname op hoge resolutie.
OV5640 5 MP-cameradriver met I2C-gebaseerde detectie.
FDCAN-randapparaatondersteuning, met een CAN-voorbeeld.
OV2640-herschrijving — rechtopstaande afbeeldingen, werkende automatische functies, JPEG-momentopname en een nieuwe
sensor.XGA-framesize.IDE-JPEG —
Image.jpeg_encode_for_ide()en automatische overdracht van grote JPEG’s naar de IDE.Breaking: de semantiek van WINC1500
WLAN.ifconfig()is gewijzigd,MQTTClient.wait_msg()werpt niet langer een uitzondering bij een lege recv, enfind_apriltags()gebruikt standaard 4-weg-connectiviteit — zie de breaking changes.
Nieuwe functies¶
WiFi —
WLAN.netinfo()toegevoegd (retourneert(rssi, security, ssid, mac, ip)) en WINC1500 statische-IP-configuratie viaWLAN.ifconfig(), met een statische-IP-voorbeeld.FDCAN — FDCAN-randapparaatondersteuning en een
can.py-voorbeeld toegevoegd.IDE-JPEG —
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide()toegevoegd; grote JPEG’s worden automatisch naar de IDE overgedragen wanneer de buffer te klein is.Bibliotheken — een
pidPID-regelaarbibliotheek, eenmodbusRTU-slavebibliotheek (met een 32-modbus-voorbeeld) en eenSSD1306_I2C-klasse voor I2C OLED-displays toegevoegd.Voorbeelden — MQTT subscribe toegevoegd (
mqtt_sub.py, metmqtt.pyhernoemd naarmqtt_pub.py).Sensor — de
sensor.XGA(1024x768)-framesize toegevoegd;print()/repr()op een Bayer-afbeelding levert nu JSON-metadata op.
Overige wijzigingen en verbeteringen¶
De OV2640-driver herschreven (rechtopstaande afbeeldingen, werkende automatische functies, JPEG-momentopname geaccepteerd); apriltags op hoge resolutie ingeschakeld (heft de ROI-limiet van <64K-pixels op geschikte borden op); de OV2640 PCLK verlaagd van 72 MHz naar 36 MHz.
Bugfixes¶
Beeldverwerking:
Een overflow voorbij het einde van de afbeelding bij binaire bewerkingen verholpen, de printf/float-precisie in de uitvoer van
find_apriltags()/find_datamatrices()/find_lines(), misvormde JSON in blob-print(),find_apriltags()op vflipped / hmirrored afbeeldingen, defind_lbp()ROI-bug, de JPEG-compressietimeout voor grote resoluties en de geheugenstatistiekrapportage vanfb_alloc.
Camera en sensoren:
Het cache-onderhoud en de bufferuitlijning in JPEG-modus verholpen, de maximale DCMI-overdrachtsgrootte, de OV2640-registerconfiguratie en -resoluties, het herstellen van de sensor-uitschakelstatus bij reset, en de beeldkwaliteit van de OV7725 (een banding-filter per camera toegevoegd).
Netwerken en systeem:
De hardfault/bug in
socket.accept()verholpen, de afhandeling van WINC1500-sockettimeouts (timeout 0 blokkeert nu; sockets worden niet gesloten bij een recv-timeout), H7 deep-sleep, de RTC (upstream-update en H7 EXTI- / wakeup-timer- / soft-reset-problemen) en de timer-IRQ vanpyb.Servo(Servo was niet functioneel).
Hardware- en bordondersteuning¶
OpenMV Cam H7 Plus (OPENMV4R) — nieuw bord met een SDRAM-driver die een grote framebuffer (~31 MB) mogelijk maakt.
OV5640 — nieuwe 5 MP-cameradriver met I2C-gebaseerde detectie.
FDCAN — randapparaatondersteuning.
Breaking API-wijzigingen¶
Voor de gebruiker zichtbare API-wijzigingen tussen v3.4.1 en v3.4.2. Reikwijdte: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.
Elke wijziging is getagd met de impact ervan:
major — treft de meeste scripts die de functie gebruikten; je zult code moeten porten.
minor — beperkte API; treft alleen scripts die deze gebruikten.
behavior — dezelfde API, andere resultaten; controleer afgestemde scripts opnieuw.
Wijzigingen zijn in die volgorde gegroepeerd per impact. Als je alleen je code wilt porten, ga dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar de bijbehorende diff op GitHub.
Semantiek van WINC1500 WLAN.ifconfig() gewijzigd (major)¶
Op het WINC1500 WiFi-shield retourneert WLAN.ifconfig() niet langer de oude 5-elementenlijst [rssi, security, ssid, mac, ip]. Het haalt/zet nu een (ip, subnet, gateway, dns)-tuple op (en ondersteunt statische-IP-configuratie), overeenkomstig de standaard network-interface. Code die verbindingsinformatie uit ifconfig() las, moet overschakelen naar de nieuwe methode WLAN.netinfo() ((rssi, security, ssid, mac, ip)).
Commits: e685b484a
MQTTClient.wait_msg() retourneert None bij een lege recv (minor)¶
MQTTClient.wait_msg() van de mqtt-bibliotheek retourneert nu None bij een lege ontvangst in plaats van een OSError(-1) te werpen. Code die OSError(-1) opving om een gesloten/lege socket te detecteren, moet in plaats daarvan controleren op een None-retourwaarde.
Commits: 76239ea89
Migratiechecklist¶
Voor een schone port naar v3.4.2 is het gebruikelijke werk:
Vervang het uitlezen van verbindingsinformatie via WINC1500
WLAN.ifconfig()doorWLAN.netinfo()(de ifconfig-wijziging).Controleer
MQTTClient.wait_msg()op eenNone-retourwaarde in plaats vanOSError(-1)op te vangen (de wait_msg-wijziging).Stem de AprilTag-detectie opnieuw af of bouw met
IMLIB_ENABLE_FINE_APRILTAGSals je 8-weg-connectiviteit nodig hebt (de find_apriltags-wijziging).
Alle overige scripts draaien ongewijzigd.