v4.1.0

v4.1.0 bringt vollständige Unterstützung für Arduino Nano RP2040 Connect / Raspberry Pi Pico (WiFi, Bluetooth, Kameraaufnahme, Sprung in den Bootloader), direkte JPEG-Bilddekodierung, einen eingefrorenen urequests-HTTP-Client, Unterstützung für den OV7670-Sensor sowie eine standardisierte Sensorfehlerausgabe. Die WiFi-API und die Sensorausnahmen haben sich geändert — lesen Sie die nachstehenden Breaking Changes.

Highlights

  • RP2-Boards — Arduino Nano RP2040 Connect / Pico erhalten WiFi (NINA-W10), Bluetooth (NimBLE), Kamera-/DCMI-Aufnahme und Sprung in den Bootloader.

  • JPEG-Dekodierung — Bildoperationen akzeptieren nun direkt komprimierte JPEG-Bilder.

  • urequests-HTTP-Client in die Firmware eingefroren.

  • Unterstützung für den OV7670-Kamerasensor.

  • Breaking: Die NINA/RP2-WiFi-API wurde überarbeitet und mehrere Sensorfehler lösen nun RuntimeError aus — siehe die Breaking Changes.

Neue Funktionen

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi über den NINA-W10-network-Treiber, Bluetooth/NimBLE, Kameraaufnahme (DCMI-PIO-Programm) und ein Befehl zum Sprung in den Bootloader.

  • JPEG-Bilddekodierungfind_apriltags(), lcd.display(), tv.display() und verwandte Bildoperationen akzeptieren nun direkt komprimierte JPEG-Bilder (Dekodierung nach binär/Graustufen/RGB565).

  • urequests — der HTTP-Client (GET/POST/PUT/…) ist nun auf der OpenMV 4 / 4 Plus / Portenta / Nicla eingefroren, mit einem Beispiel http_post.py.

  • Hilfsbibliothek ble_advertising, eingefroren auf der Nano RP2040 Connect.

  • Host/Debugpyopenmv.reset_to_bl() und ein neuer Befehl USBDBG_SYS_RESET_TO_BL (0x0E) zum Zurücksetzen in den Bootloader; Sprung in den Bootloader auf der Arduino Nano 33 BLE Sense.

  • OV7670 — neue Unterstützung für den OV7670-Kamerasensor, wählbar auf der OpenMV 4.

Weitere Änderungen und Verbesserungen

  • RP2-UDP-Sockets binden sich automatisch an einen flüchtigen Port, wenn sie ungebunden verwendet werden; das gebündelte MicroPython-Submodul wurde aktualisiert.

Fehlerbehebungen

Netzwerk:

  • Behoben wurden die Behandlung von NINA-WiFi-Socket-accept/close/send/recv/bind und Operations-Timeouts sowie eine RP2-Debug-Textpuffer-Race-Condition, die die IDE-Ausgabe beschädigen konnte.

Kamera und System:

  • Behoben wurden der HM01B0-Reset, der nach einem fehlgeschlagenen Sensor-Scan hängende Kamera-I2C-Bus auf der OpenMV H7, der H7-ULPI-Niedrigenergie-Eintritt bei USB-Trennung, die H7-ADC-Pin-Erzeugung sowie die Portenta-Kamera-Pinbelegung / Shield-SPI-CS.

Hardware- und Board-Unterstützung

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi, Bluetooth, Kamera, größeres Flash-Dateisystem, MSC-Bootloader.

  • OV7670-Kamerasensor (OpenMV 4).

  • Arduino Portenta H7 — Breakout-I2C4, zusätzliche PWM-/Clock-Pins, OV7725- / MT9V034-Sensoren.

Breaking API-Änderungen

Für den Benutzer sichtbare API-Brüche zwischen v4.0.2 und v4.1.0. Geltungsbereich: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.

Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:

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

  • behavior — gleiche API, andere Ergebnisse; abgestimmte Skripte erneut prüfen.

Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn Sie lediglich Ihren Code portieren möchten, springen Sie zur Migrations-Checkliste am Ende. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.

NINA / RP2-WiFi-API überarbeitet (minor)

Der NINA / RP2-WLAN-Treiber wurde überarbeitet, um der network-Schnittstelle des Upstream-MicroPython / CYW43 zu entsprechen: ein WLAN(interface)-Konstruktor (STA/AP-Modus), eine neue Methode active([bool]), config / start_ap als Aliase von connect, das Argument ssid von connect() wurde in essid umbenannt, ein neues Schlüsselwort channel sowie nina.fw_version(), das nun ein Tupel (major, minor, patch) anstelle von Roh-Bytes zurückgibt. Eine Abweichung der NINA-Firmware-Version ist nun eine nicht-fatale Warnung anstelle eines OSError.

Commits: eb2f98277, e14470f68, 0c40f4832

Sensorfehler lösen nun RuntimeError aus (behavior)

Die Sensorfehlerausgabe wurde rund um eine einheitliche Fehlercodetabelle standardisiert: Kamerafehler (Aufnahme-Timeout, ungültige framesize/pixformat/window/framerate, Framebuffer-Fehler, JPEG-Überlauf, nicht erkannter Sensor, …) lösen nun einheitliche, beschreibende Meldungen aus, und mehrere Bedingungen, die zuvor ValueError ausgelöst haben, lösen nun RuntimeError aus (einschließlich sensor.reset()). Code, der für diese Fälle ValueError abgefangen hat, muss stattdessen RuntimeError abfangen.

Commits: 0491a6a88, c8bf0af6f, 2fb226562

Migrations-Checkliste

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

  1. Portieren Sie NINA/RP2-WiFi-Code auf die standardmäßige network.WLAN-Schnittstelle (WLAN(interface), active(), essid=) und erwarten Sie ein Tupel von nina.fw_version() (die WiFi-API-Änderung).

  2. Ändern Sie except ValueError in except RuntimeError rund um die Fehlerbehandlung von Kamera / sensor.reset() (die Sensorfehler-Änderung).