v3.4.2¶
v3.4.2 ist ein großes Release. Es führt die OpenMV Cam H7 Plus (SDRAM, riesiger Framebuffer für hochauflösende Aufnahmen), die OV5640 5 MP-Kamera, FDCAN-Unterstützung, einen neu geschriebenen OV2640-Treiber, Image.jpeg_encode_for_ide() sowie neue pid- / modbus-Bibliotheken ein. Die WINC1500-ifconfig()-API und die Standardwerte von find_apriltags() haben sich geändert — lesen Sie die nachfolgenden Breaking Changes.
Highlights¶
OpenMV Cam H7 Plus — neues Board mit einem SDRAM-Treiber und einem ~31 MB großen Framebuffer für hochauflösende Aufnahmen.
OV5640 5 MP-Kameratreiber mit I2C-basierter Erkennung.
FDCAN-Peripherie-Unterstützung, mit einem CAN-Beispiel.
OV2640-Neufassung — aufrechte Bilder, funktionierende Auto-Funktionen, JPEG-Schnappschuss und eine neue
sensor.XGA-Framesize.IDE-JPEG —
Image.jpeg_encode_for_ide()und automatische Übertragung großer JPEGs an die IDE.Breaking: Die Semantik von WINC1500
WLAN.ifconfig()hat sich geändert,MQTTClient.wait_msg()löst bei leerem Empfang keine Ausnahme mehr aus undfind_apriltags()verwendet standardmäßig 4-Wege-Konnektivität — siehe die Breaking Changes.
Neue Funktionen¶
WiFi —
WLAN.netinfo()(gibt(rssi, security, ssid, mac, ip)zurück) und WINC1500-Static-IP-Konfiguration überWLAN.ifconfig()hinzugefügt, mit einem Static-IP-Beispiel.FDCAN — FDCAN-Peripherie-Unterstützung und ein
can.py-Beispiel hinzugefügt.IDE-JPEG —
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide()hinzugefügt; große JPEGs werden automatisch an die IDE übertragen, wenn der Puffer zu klein ist.Bibliotheken — eine
pid-PID-Reglerbibliothek, einemodbus-RTU-Slave-Bibliothek (mit einem 32-modbus-Beispiel) und eineSSD1306_I2C-Klasse für I2C-OLED-Displays hinzugefügt.Beispiele — MQTT-Subscribe (
mqtt_sub.py, wobeimqtt.pyinmqtt_pub.pyumbenannt wurde) hinzugefügt.Sensor — die
sensor.XGA-Framesize (1024x768) hinzugefügt;print()/repr()auf einem Bayer-Bild gibt nun JSON-Metadaten aus.
Weitere Änderungen und Verbesserungen¶
Den OV2640-Treiber neu geschrieben (aufrechte Bilder, funktionierende Auto-Funktionen, JPEG-Schnappschuss akzeptiert); hochauflösende AprilTags aktiviert (hebt die ROI-Begrenzung von <64K Pixeln auf leistungsfähigen Boards auf); den OV2640-PCLK von 72 MHz auf 36 MHz gesenkt.
Fehlerbehebungen¶
Bildverarbeitung:
Behoben: ein Binär-Ops-Überlauf über das Bildende hinaus, die printf/Float-Präzision in der Ausgabe von
find_apriltags()/find_datamatrices()/find_lines(), fehlerhaftes JSON inprint()von Blobs,find_apriltags()auf vflip-/hmirror-Bildern, derfind_lbp()-ROI-Bug, der JPEG-Kompressions-Timeout bei großen Auflösungen und dasfb_alloc-Speicherstatistik-Reporting.
Kamera und Sensoren:
Behoben: JPEG-Modus-Cache-Wartung und Pufferausrichtung, die maximale DCMI-Transfergröße, OV2640-Register-Konfiguration und -Auflösungen, das Wiederherstellen des Sensor-Shutdown-Zustands beim Reset und die Bildqualität des OV7725 (ein kamerabezogener Banding-Filter hinzugefügt).
Netzwerk und System:
Behoben: ein
socket.accept()-Hardfault/-Bug, die WINC1500-Socket-Timeout-Behandlung (Timeout 0 ist jetzt blockierend; Sockets werden bei Recv-Timeout nicht geschlossen), der H7-Deep-Sleep, die RTC (Upstream-Update sowie H7-EXTI- / Wakeup-Timer- / Soft-Reset-Probleme) und der Timer-IRQ vonpyb.Servo(Servo war funktionslos).
Hardware- und Board-Unterstützung¶
OpenMV Cam H7 Plus (OPENMV4R) — neues Board mit einem SDRAM-Treiber, der einen großen (~31 MB) Framebuffer ermöglicht.
OV5640 — neuer 5-MP-Kameratreiber mit I2C-basierter Erkennung.
FDCAN — Peripherie-Unterstützung.
Breaking-API-Änderungen¶
Für Benutzer sichtbare API-Brüche zwischen v3.4.1 und v3.4.2. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.
Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:
major — betrifft die meisten Skripte, die die Funktion verwendet haben; Sie müssen Ihren Code anpassen.
minor — eingeschränkte API; betrifft nur Skripte, die sie verwendet haben.
behavior — gleiche API, andere Ergebnisse; überprüfen Sie abgestimmte Skripte erneut.
Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn Sie nur Ihren Code portieren möchten, springen Sie zur Migrations-Checkliste am Ende. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.
Semantik von WINC1500 WLAN.ifconfig() geändert (major)¶
Auf dem WINC1500-WiFi-Shield gibt WLAN.ifconfig() nicht mehr die alte 5-elementige Liste [rssi, security, ssid, mac, ip] zurück. Es liest/setzt nun ein (ip, subnet, gateway, dns)-Tupel (und unterstützt Static-IP-Konfiguration), passend zur standardmäßigen network-Schnittstelle. Code, der Verbindungsinformationen aus ifconfig() gelesen hat, muss auf die neue Methode WLAN.netinfo() ((rssi, security, ssid, mac, ip)) umstellen.
Commits: e685b484a
MQTTClient.wait_msg() gibt bei leerem Empfang None zurück (minor)¶
MQTTClient.wait_msg() der mqtt-Bibliothek gibt nun bei einem leeren Empfang None zurück, statt OSError(-1) auszulösen. Code, der OSError(-1) abgefangen hat, um einen geschlossenen/leeren Socket zu erkennen, muss stattdessen auf einen None-Rückgabewert prüfen.
Commits: 76239ea89
Migrations-Checkliste¶
Für eine saubere Portierung auf v3.4.2 fällt typischerweise folgende Arbeit an:
Ersetzen Sie Verbindungsinfo-Lesevorgänge von WINC1500
WLAN.ifconfig()durchWLAN.netinfo()(die ifconfig-Änderung).Prüfen Sie
MQTTClient.wait_msg()auf einenNone-Rückgabewert, stattOSError(-1)abzufangen (die wait_msg-Änderung).Stimmen Sie die AprilTag-Erkennung neu ab oder kompilieren Sie mit
IMLIB_ENABLE_FINE_APRILTAGS, wenn Sie 8-Wege-Konnektivität benötigen (die find_apriltags-Änderung).
Alle anderen Skripte laufen unverändert.