v4.5.0

v4.5.0 je velké vydání. Starý modul lcd byl nahrazen jednotným modulem display se samostatnými SPI / paralelními / DSI / TV backendy, byla přidána deska Arduino Giga a dorazila vlna funkcí pro displeje, dotyk a řízení senzorů. Obsahuje několik zásadních změn — přečtěte si je níže.

Hlavní novinky

  • Nový modul display — nahrazuje lcd jednotnými backendy SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • Podpora desky Arduino Giga.

  • Nový hardware pro displeje/dotyk — DSI displeje na STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, RGB panely ST7701 a kapacitní dotyk GT911 / FT5X06.

  • Nové řízení senzorů — kalibrace úrovně černé, noční režim a sensor.disable_delays(); mnohem rychlejší transpozice (~5x) a morfologie (~2,5x).

  • Zásadní změna: lcddisplay, lcd_touchft5x06, přejmenované LED piny — viz zásadní změny.

Nové funkce

  • Backendy displejůDisplayData (čtení DDC/EDID), serializér TFP410 DVI/HDMI, podpora MIPI-DSI displejů na STM32 H7, ovladač HDMI/DVI cec a Python knihovna display s pomocníkem pro inicializaci RGB panelu ST7701.

  • Dotyk — nový 5bodový ovladač kapacitního dotyku GT911 (read_points() / read_id() / reset()).

  • Rozšíření modulu machine — zmrazitelná knihovna machine s pomocnou třídou machine.LED a novou metodou machine.LED.value([v]).

  • Řízení senzorůsensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (kalibrace úrovně černé), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), hmirror/vflip pro OV7670 a sensor.disable_delays() pro přeskočení ustalovacích prodlev kamery za účelem rychlejší rekonfigurace.

  • i.MX RTsensor.set_xclk_frequency() nyní přijímá libovolnou frekvenci (zaokrouhluje na nejbližší platný dělič CSI) a SPI moduly lcd / tv / fir byly povoleny na RT1060.

Další změny a vylepšení

  • Mnohem rychlejší operace s obrazem — transpozice obrazu je ~5x rychlejší a image.morph() je ~2,5x rychlejší.

  • Sondování sběrnice kamery nyní skenuje a ověřuje více adres zařízení, čímž podporuje desky s několika zařízeními na sběrnici.

Opravy chyb

Kamera a senzory:

  • Opravena přesnost výpočtu zisku u mnoha senzorů (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), expozice / sloupcový binning u MT9V0xx, expozice u OV5640 a VGA okénkování u OV7670.

  • STM32 nyní zahazuje poškozené transponované snímky místo vracení vadných obrazů.

Zpracování obrazu:

  • Opraveno přetečení celého čísla ovlivňující operace s obrazem / FIR / ToF / LCD / TV, neplatné instrukce s plovoucí desetinnou čárkou vcvtm/vcvtp na Cortex-M4 (fast_floorf/fast_ceilf), chyba škálování na místě v konverzi image.to_*() a poškození vyrovnávací paměti vykreslování DMA2D.

Displej a systém:

  • Opraveno časování DSI displeje a režim na výšku, micro_speech listen() na Nicla Vision / Portenta H7, uživatelský přepínač STM32 (pyb.Switch) a podpora sběrnice I2C4.

Hardware a podpora desek

  • Arduino Giga — nová deska s pojmenovaným mapováním Arduino pinů a kompletní sadou příkladů.

  • OpenMV RT1060 — povoleny moduly SPI LCD, TV a FIR termální moduly.

  • Arduino Nano 33 BLE Sense — LED piny.

Zásadní změny API

Pro uživatele viditelné změny API mezi v4.4.3 a v4.5.0. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.

Každá změna je označena svým dopadem:

  • major — většina skriptů, které ji používaly, vyžaduje úpravy.

  • minor — úzké API; ovlivňuje pouze skripty, které ho používaly.

  • behavior — stejné API, jiné výsledky; znovu zkontrolujte vyladěné skripty.

Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete pouze přenést svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.

Modul lcd nahrazen modulem display (major)

Starý modul lcd byl odstraněn a nahrazen jednotným modulem display rozděleným na backendy SPIDisplay (SPI LCD shield), RGBDisplay / paralelní, DSIDisplay (MIPI-DSI) a TVDisplay se společným API. Skripty musí přejít z import lcd na modul display a vytvořit příslušný objekt backendu.

Commity: 227824aac, 6c6336829

Dotykový modul, LED piny a dodávané ovladače (minor)

Generický modul lcd_touch byl nahrazen vyhrazeným modulem ovladače kapacitního dotyku FT5X06. Názvy LED pinů byly přejmenovány pro konzistenci napříč všemi deskami (skripty odkazující na staré názvy LED pinů musí být aktualizovány). Dodávané IMU/senzorové ovladače hts221 / lps22h / lsm6dsox / lsm9ds1 byly nahrazeny upstream verzemi z micropython-lib, jejichž API se mírně liší (dodávané příklady byly odpovídajícím způsobem aktualizovány).

Commity: 86ad6dcdb, 9344c3b74, 2b5b7963b

Nepodporované řízení senzorů nyní varuje (behavior)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() a set_auto_blc() nyní vypisují varování místo vyvolání RuntimeError, když aktivní senzor daný ovládací prvek nepodporuje, takže stejný skript může běžet napříč senzory s odlišnými schopnostmi. Kód, který se spoléhal na zachycení výjimky, musí být aktualizován.

Commit: dbf4996f2

Kontrolní seznam migrace

Pro čistý přenos na v4.5.0 je typická práce následující:

  1. Nahraďte použití import lcd novým modulem display a příslušným backendem (změna modulu display).

  2. Přejděte z lcd_touch na FT5X06, aktualizujte všechny staré názvy LED pinů a znovu zkontrolujte API upstream IMU ovladačů (změny dotyku/pinů/ovladačů).

  3. Nahraďte try/except RuntimeError kolem nepodporovaného řízení senzorů kontrolami schopností (změna řízení senzorů).