v4.5.0

v4.5.0 to wydanie główne. Stary moduł lcd został zastąpiony ujednoliconym modułem display z osobnymi backendami SPI / równoległym / DSI / TV, dodano płytkę Arduino Giga oraz pojawiła się fala funkcji dotyczących wyświetlaczy, dotyku i sterowania sensorem. Wprowadzono kilka zmian łamiących zgodność — przeczytaj o nich poniżej.

Najważniejsze zmiany

  • Nowy moduł display — zastępuje lcd ujednoliconymi backendami SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • Obsługa płytki Arduino Giga.

  • Nowy sprzęt wyświetlaczy/dotyku — wyświetlacze DSI na STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, panele RGB ST7701 oraz dotyk pojemnościowy GT911 / FT5X06.

  • Nowe elementy sterowania sensorem — kalibracja poziomu czerni, tryb nocny oraz sensor.disable_delays(); znacznie szybsza transpozycja (~5x) i morfologia (~2,5x).

  • Zmiana łamiąca zgodność: lcddisplay, lcd_touchft5x06, zmienione nazwy pinów LED — zobacz zmiany łamiące zgodność.

Nowe funkcje

  • Backendy wyświetlaczyDisplayData (odczyt DDC/EDID), serializer DVI/HDMI TFP410, obsługa wyświetlaczy MIPI-DSI na STM32 H7, sterownik HDMI/DVI cec oraz biblioteka Pythona display z funkcją pomocniczą inicjalizacji panelu RGB ST7701.

  • Dotyk — nowy 5-punktowy sterownik dotyku pojemnościowego GT911 (read_points() / read_id() / reset()).

  • Rozszerzenie machine — biblioteka machine z możliwością zamrożenia, zawierająca klasę pomocniczą machine.LED, oraz nowa metoda machine.LED.value([v]).

  • Sterowanie sensoremsensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (kalibracja poziomu czerni), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), hmirror/vflip dla OV7670 oraz sensor.disable_delays(), pomijająca opóźnienia stabilizacji kamery dla szybszej rekonfiguracji.

  • i.MX RTsensor.set_xclk_frequency() akceptuje teraz dowolną częstotliwość (dopasowując ją do najbliższego prawidłowego dzielnika CSI), a moduły SPI lcd / tv / fir zostały włączone na RT1060.

Pozostałe zmiany i ulepszenia

  • Znacznie szybsze operacje na obrazie — transpozycja obrazu jest ~5x szybsza, a image.morph() jest ~2,5x szybszy.

  • Sondowanie magistrali kamery skanuje teraz i weryfikuje wiele adresów urządzeń, obsługując płytki z kilkoma urządzeniami na magistrali.

Poprawki błędów

Kamera i sensory:

  • Poprawiono dokładność obliczeń wzmocnienia w wielu sensorach (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), ekspozycję / łączenie kolumn MT9V0xx, ekspozycję OV5640 oraz okienkowanie VGA OV7670.

  • STM32 odrzuca teraz uszkodzone ramki transpozycji zamiast zwracać błędne obrazy.

Przetwarzanie obrazu:

  • Poprawiono przepełnienie liczby całkowitej wpływające na operacje obrazu / FIR / ToF / LCD / TV, nieprawidłowe instrukcje zmiennoprzecinkowe vcvtm/vcvtp na Cortex-M4 (fast_floorf/fast_ceilf), błąd skalowania w miejscu w konwersji image.to_*() oraz uszkodzenie pamięci podręcznej rysowania DMA2D.

Wyświetlacz i system:

  • Poprawiono taktowanie wyświetlacza DSI i tryb portretowy, listen() w micro_speech na Nicla Vision / Portenta H7, przełącznik użytkownika STM32 (pyb.Switch) oraz obsługę magistrali I2C4.

Obsługa sprzętu i płytek

  • Arduino Giga — nowa płytka, z nazwanymi mapowaniami pinów Arduino i pełnym zestawem przykładów.

  • OpenMV RT1060 — włączone moduły SPI LCD, TV oraz termowizyjny FIR.

  • Arduino Nano 33 BLE Sense — piny LED.

Zmiany API łamiące zgodność

Widoczne dla użytkownika zmiany API łamiące zgodność między v4.4.3 a v4.5.0. Zakres: moduły C dla Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.

Każda zmiana jest oznaczona swoim wpływem:

  • major — większość skryptów, które jej używały, wymaga edycji.

  • minor — wąskie API; dotyczy tylko skryptów, które go używały.

  • behavior — to samo API, inne wyniki; sprawdź ponownie dostrojone skrypty.

Zmiany są pogrupowane według wpływu w tej kolejności. Jeśli chcesz po prostu przenieść swój kod, przejdź do listy kontrolnej migracji na końcu. Każdy hash commita prowadzi do jego diffa na GitHubie.

Moduł lcd zastąpiony przez display (major)

Stary moduł lcd został usunięty i zastąpiony ujednoliconym modułem display podzielonym na backendy SPIDisplay (nakładka SPI LCD), RGBDisplay / równoległy, DSIDisplay (MIPI-DSI) oraz TVDisplay ze wspólnym API. Skrypty muszą przejść z import lcd na moduł display i utworzyć odpowiedni obiekt backendu.

Commity: 227824aac, 6c6336829

Moduł dotyku, piny LED i dołączone sterowniki (minor)

Ogólny moduł lcd_touch został zastąpiony dedykowanym modułem sterownika dotyku pojemnościowego FT5X06. Nazwy pinów LED zostały zmienione dla spójności na wszystkich płytkach (skrypty odwołujące się do starych nazw pinów LED muszą zostać zaktualizowane). Dołączone sterowniki IMU/sensorów hts221 / lps22h / lsm6dsox / lsm9ds1 zostały zastąpione wersjami z głównego repozytorium micropython-lib, których API nieco się różnią (dołączone przykłady zostały odpowiednio zaktualizowane).

Commity: 86ad6dcdb, 9344c3b74, 2b5b7963b

Nieobsługiwane elementy sterowania sensorem teraz ostrzegają (behavior)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() oraz set_auto_blc() wypisują teraz ostrzeżenie zamiast zgłaszać RuntimeError, gdy aktywny sensor nie obsługuje danej funkcji, dzięki czemu ten sam skrypt może działać na sensorach o różnych możliwościach. Kod, który polegał na przechwytywaniu wyjątku, musi zostać zaktualizowany.

Commit: dbf4996f2

Lista kontrolna migracji

Dla czystego przeniesienia do v4.5.0 typowa praca to:

  1. Zastąp użycie import lcd nowym modułem display i odpowiednim backendem (zmiana modułu display).

  2. Przełącz lcd_touch na FT5X06, zaktualizuj wszelkie stare nazwy pinów LED i sprawdź ponownie API sterowników IMU z głównego repozytorium (zmiany dotyku/pinów/sterowników).

  3. Zastąp try/except RuntimeError wokół nieobsługiwanych elementów sterowania sensorem sprawdzaniem możliwości (zmiana sterowania sensorem).