v4.0.0

v4.0.0 ist der große v3 → v4-Release. Er führt die moderne Multi-Frame-sensor-Pufferungs-API (Double-/Triple-Buffering und ein Video-FIFO), einen Frame-Complete-Callback, ein Bluetooth-Modul (NimBLE-Stack) mit Portenta-Unterstützung, den ersten MT9M114-Kameratreiber, MDMA-ausgelagerte Kameraerfassung, Bayer-/JPEG-Unterstützung in image.draw_image() sowie einen Sprung auf MicroPython 1.15 ein. Der Legacy-Streaming-Modus wurde entfernt und sensor.set_windowing() wurde überarbeitet — lies die nachstehenden Änderungen mit Bruchpotenzial.

Highlights

  • Multi-Frame-Pufferungsensor erhält Double-Buffering, Triple-Buffering und einen Video-FIFO-Modus für höhere, gleichmäßigere Bildraten.

  • Frame-Complete-Callback — registriere einen Callback, der ausgelöst wird, wenn ein neues Einzelbild bereitsteht, für nicht-blockierende Erfassungs-Pipelines.

  • Bluetooth — ein bluetooth-Modul, das auf dem NimBLE-Stack basiert und auf dem Arduino Portenta H7 aktiviert ist (mit einem BLE-Beispiel).

  • MT9M114 — erster Kamerasensor-Treiber.

  • Schnellere Erfassung — MDMA-Auslagerung für die Kameradatenerfassung; draw_image() akzeptiert nun Bayer- und JPEG-Quellen/-Ziele.

  • MicroPython 1.15 — das gebündelte MicroPython wurde von 1.13 auf 1.15 aktualisiert.

  • Mit Bruchpotenzial: der Legacy-Streaming-Modus wurde entfernt und sensor.set_windowing() wurde überarbeitet — siehe die Änderungen mit Bruchpotenzial.

Neue Funktionen

  • Sensor-Multi-Pufferungsensor.set_framebuffers() / sensor.get_framebuffers() und die Modi SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO hinzugefügt, plus sensor.get_frame_available() für Double-, Triple- und Video-FIFO-Erfassung.

  • Frame-Complete-Callbacksensor.set_frame_callback() hinzugefügt, sodass ein Python-Callback ausgeführt wird, wenn jedes neue Einzelbild fertiggestellt ist.

  • Bluetooth — ein bluetooth-Modul hinzugefügt, das auf dem NimBLE-Stack aufbaut (NimBLE-Submodul, CYW-BT-Treiber), aktiviert auf dem Arduino Portenta H7 mit einem BLE-Beispiel.

  • MT9M114 — den ersten MT9M114-Kamerasensor-Treiber hinzugefügt.

  • draw_image — Debayering-Unterstützung und JPEG-Kopierunterstützung hinzugefügt, sodass image.draw_image() Bayer- und JPEG-Quell-/-Zielbilder akzeptiert.

  • MDMA-Erfassungsauslagerung — die Kameradatenerfassung wird für höheren Durchsatz auf MDMA ausgelagert.

  • Ein Farbpaletten-Argument kann nun durch Übergabe von -1 deaktiviert werden (da None als gültiges Argument reserviert ist).

Weitere Änderungen und Verbesserungen

  • Auf die neue Software-I2C-Implementierung umgestellt; an MicroPython-Upstream angeglichen; board-spezifische ulab-Konfiguration; grundlegende eingebaute Module für OpenMV 2 aktiviert; fairere Framebuffer-Auslesesperrung; Mutex-Unterstützung auf Cortex-M0/M0+ mit einem Lock-Timeout erweitert.

Fehlerbehebungen

Kamera und Bildverarbeitung:

  • Die FLIR-Lepton-Init-Zuverlässigkeit auf dem Pure-Thermal-Board, die ImageIO-JPEG-Puffer-/Pause-Behandlung, die HM01B0-vflip/hmirror-Einstellungen, das JPEG-Puffer-Flush, wenn ein Bild ungültig gemacht wird, und ein cropped-Flag behoben, das gesetzt wurde, wenn die Framegröße ungültig war.

System und Konnektivität:

  • Das Leeren des USB-Befehls und den Reset-to-Bootloader-Befehl, die Mutex-Init, die UART-Taktquelle, das FatFS-Code-Page-Define, die WINC1500-Out-of-Band-ACK-Behandlung, das WiFi-Debugging und die Nano33-USB-PID behoben; dedizierte analoge Pads isoliert.

Hardware- und Board-Unterstützung

  • MT9M114-Kamerasensor (erster Treiber).

  • Arduino Portenta H7 — Bluetooth aktiviert (NimBLE) mit einem BLE-Beispiel.

  • Arduino Nano RP2040 Connect / Nano 33 BLE Sense — WiFi-Debug-Flag deaktiviert, wo nicht unterstützt; Blinky-Beispiel hinzugefügt; USB-PID-Korrektur.

API-Änderungen mit Bruchpotenzial

Für Benutzer sichtbare API-Brüche zwischen v3.9.4 und v4.0.0. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.

Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:

  • major — betrifft die meisten Skripte; du wirst mit ziemlicher Sicherheit Code portieren müssen.

  • minor — enge API; betrifft nur Skripte, die sie verwendet haben.

  • behavior — gleiche API, andere Ergebnisse; überprüfe abgestimmte Skripte erneut.

Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn du nur deinen Code portieren möchtest, springe zur Migrations-Checkliste am Ende. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.

Streaming-Modus entfernt (major)

Der Legacy-Sensor-Streaming-Modus wurde zugunsten der neuen Multi-Frame-Pufferungs-API entfernt. Code, der den Streaming-Modus aktiviert hat, muss auf sensor.set_framebuffers() mit DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO umsteigen und die Erfassung stattdessen mit sensor.snapshot() / sensor.get_frame_available() steuern.

Commits: a42f3a647

sensor.set_windowing() überarbeitet (behavior)

sensor.set_windowing() wurde deutlich flexibler gestaltet: Es akzeptiert nun mehrere Argumentformen (ein Region-Tupel, oder Breite/Höhe zentriert, oder x, y, w, h) und löst das Fenster relativ zur aktuellen Auflösung auf. Skripte, die Windowing-Argumente in der alten festen Form übergeben haben, wählen möglicherweise eine andere Region aus und sollten erneut überprüft werden.

Commits: 3e9c43554

MicroPython 1.13 → 1.15 (behavior)

Der gebündelte MicroPython-Kern wurde von 1.13 auf 1.15 (über 1.14) aktualisiert. Das Verhalten der Standardbibliothek und der Sprache folgt MicroPython 1.15 Upstream; überprüfe Skripte erneut, die von versionsspezifischem micropython- / Standardmodul-Verhalten abhängen.

Commits: 364eea6c7, 26c5376b0

ImageIO-Argument update_jpeg_buffer entfernt (minor)

Die ImageIO-JPEG-Puffer-Aktualisierung wurde so überarbeitet, dass der Puffer aus dem Bildquellen-Argument abgeleitet wird, und das explizite update_jpeg_buffer-Argument wurde entfernt. Skripte, die update_jpeg_buffer an ImageIO übergeben haben, müssen dieses Argument entfernen.

Commits: 5c6937bd1

Migrations-Checkliste

Für eine saubere Portierung auf v4.0.0 fällt typischerweise folgende Arbeit an:

  1. Ersetze jede Verwendung des entfernten Streaming-Modus durch die neue Multi-Pufferungs-API sensor.set_framebuffers() (Streaming-Modus entfernt).

  2. Überprüfe sensor.set_windowing()-Aufrufe gegen die überarbeitete, flexiblere Argumentbehandlung erneut (die Windowing-Änderung).

  3. Validiere Skripte, die von versionsspezifischem MicroPython-Verhalten abhängen, erneut gegen MicroPython 1.15 (der MicroPython-Sprung).

  4. Entferne das update_jpeg_buffer-Argument aus ImageIO-Aufrufen (die ImageIO-Änderung).

Alle anderen Skripte laufen unverändert weiter.