v4.5.0¶
v4.5.0 ist ein großes Release. Das alte Modul lcd wurde durch ein vereinheitlichtes display-Modul mit separaten SPI- / Parallel- / DSI- / TV-Backends ersetzt, das Arduino-Giga-Board wurde hinzugefügt, und eine Reihe neuer Display-, Touch- und Sensorsteuerungsfunktionen ist eingetroffen. Es gibt mehrere inkompatible Änderungen — lies sie unten nach.
Highlights¶
Neues
display-Modul — ersetztlcddurch die vereinheitlichten BackendsSPIDisplay/RGBDisplay/DSIDisplay/TVDisplay.Unterstützung für das Arduino Giga-Board.
Neue Display-/Touch-Hardware — DSI-Displays auf dem STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, ST7701-RGB-Panels und kapazitiver GT911- / FT5X06-Touch.
Neue Sensorsteuerungen — Schwarzwertkalibrierung, Nachtmodus und
sensor.disable_delays(); deutlich schnelleres Transponieren (~5x) und Morphologie (~2,5x).Inkompatibel:
lcd→display,lcd_touch→ft5x06, umbenannte LED-Pins — siehe die inkompatiblen Änderungen.
Neue Funktionen¶
Display-Backends —
DisplayData(DDC/EDID-Auslesen), einTFP410-DVI/HDMI-Serializer, MIPI-DSI-Display-Unterstützung auf dem STM32 H7, ein HDMI/DVI-cec-Treiber sowie eine Python-display-Bibliothek mit einemST7701-RGB-Panel-Initialisierungshelfer.Touch — neuer kapazitiver 5-Punkt-Touch-Treiber
GT911(read_points()/read_id()/reset()).machine-Erweiterung — eine einfrierbaremachine-Bibliothek mit einer Hilfsklassemachine.LEDund einer neuen Methodemachine.LED.value([v]).Sensorsteuerungen —
sensor.set_auto_blc(enable, regs=None)/sensor.get_blc_regs()(Schwarzwertkalibrierung),IOCTL_SET_NIGHT_MODE/IOCTL_GET_NIGHT_MODE(OV7725/OV5640), OV7670 hmirror/vflip sowiesensor.disable_delays(), um die Einschwingverzögerungen der Kamera für eine schnellere Neukonfiguration zu überspringen.i.MX RT —
sensor.set_xclk_frequency()akzeptiert nun jede beliebige Frequenz (mit Anpassung an den nächstgelegenen gültigen CSI-Teiler), und die SPI-Modulelcd/tv/firwurden auf dem RT1060 aktiviert.
Weitere Änderungen und Verbesserungen¶
Deutlich schnellere Bildoperationen — das Transponieren von Bildern ist ~5x schneller und
image.morph()ist ~2,5x schneller.Die Kamerabus-Erkennung scannt und validiert nun mehrere Geräteadressen und unterstützt damit Boards mit mehreren Geräten am Bus.
Fehlerbehebungen¶
Kamera und Sensoren:
Behoben wurde die Genauigkeit der Verstärkungsberechnung bei vielen Sensoren (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), die MT9V0xx-Belichtung / Spalten-Binning, die OV5640-Belichtung und das OV7670-VGA-Windowing.
STM32 verwirft jetzt beschädigte transponierte Einzelbilder, anstatt fehlerhafte Bilder zurückzugeben.
Bildverarbeitung:
Behoben wurden ein Integer-Überlauf, der Bild- / FIR- / ToF- / LCD- / TV-Operationen betraf, ungültige
vcvtm/vcvtp-Gleitkommabefehle auf dem Cortex-M4 (fast_floorf/fast_ceilf), ein In-Place-Skalierungsfehler in derimage.to_*()-Konvertierung sowie eine DMA2D-Zeichen-Cache-Korruption.
Display und System:
Behoben wurden das DSI-Display-Timing und der Hochformatmodus,
micro_speechlisten()auf Nicla Vision / Portenta H7, der STM32-Benutzerschalter (pyb.Switch) sowie die I2C4-Bus-Unterstützung.
Hardware- und Board-Unterstützung¶
Arduino Giga — neues Board mit benannten Arduino-Pin-Zuordnungen und einem vollständigen Beispielsatz.
OpenMV RT1060 — SPI-LCD-, TV- und FIR-Wärmebildmodule aktiviert.
Arduino Nano 33 BLE Sense — LED-Pins.
Inkompatible API-Änderungen¶
Für Benutzer sichtbare API-Brüche zwischen v4.4.3 und v4.5.0. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.
Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:
major — die meisten Skripte, die es verwendet haben, müssen angepasst werden.
minor — schmale API; betrifft nur Skripte, die sie verwendet haben.
behavior — gleiche API, andere Ergebnisse; getunte Skripte erneut prüfen.
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.
lcd-Modul durch display ersetzt (major)¶
Das alte lcd-Modul wurde entfernt und durch ein vereinheitlichtes display-Modul ersetzt, das in die Backends SPIDisplay (SPI-LCD-Shield), RGBDisplay / parallel, DSIDisplay (MIPI-DSI) und TVDisplay mit einer gemeinsamen API aufgeteilt ist. Skripte müssen von import lcd auf das display-Modul umsteigen und das passende Backend-Objekt erzeugen.
Touch-Modul, LED-Pins und mitgelieferte Treiber (minor)¶
Das generische lcd_touch-Modul wurde durch ein dediziertes FT5X06-Treibermodul für kapazitiven Touch ersetzt. Die LED-Pin-Namen wurden zwecks Konsistenz über alle Boards hinweg umbenannt (Skripte, die die alten LED-Pin-Namen referenzieren, müssen aktualisiert werden). Die mitgelieferten IMU-/Sensortreiber hts221 / lps22h / lsm6dsox / lsm9ds1 wurden durch die Upstream-Versionen aus micropython-lib ersetzt, deren APIs sich geringfügig unterscheiden (die mitgelieferten Beispiele wurden entsprechend angepasst).
Nicht unterstützte Sensorsteuerungen warnen jetzt (behavior)¶
sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() und set_auto_blc() geben jetzt eine Warnung aus, anstatt einen RuntimeError auszulösen, wenn der aktive Sensor die Steuerung nicht unterstützt, sodass dasselbe Skript über Sensoren mit unterschiedlichen Fähigkeiten hinweg laufen kann. Code, der sich auf das Abfangen der Ausnahme verlassen hat, muss aktualisiert werden.
Commit: dbf4996f2
Migrations-Checkliste¶
Für eine saubere Portierung auf v4.5.0 fällt typischerweise folgende Arbeit an:
Ersetze die Verwendung von
import lcddurch das neuedisplay-Modul und das passende Backend (die Änderung am display-Modul).Stelle
lcd_touchaufFT5X06um, aktualisiere alle alten LED-Pin-Namen und überprüfe die Upstream-IMU-Treiber-APIs erneut (die Touch-/Pin-/Treiber-Änderungen).Ersetze
try/except RuntimeErrorrund um nicht unterstützte Sensorsteuerungen durch Fähigkeitsprüfungen (die Sensorsteuerungs-Änderung).