v4.5.0

v4.5.0 — це великий випуск. Старий модуль lcd замінено уніфікованим модулем display з окремими бекендами SPI / паралельним / DSI / TV, додано підтримку плати Arduino Giga, а також з’явилась хвиля функцій для роботи з дисплеями, сенсорним вводом та керуванням датчиками. Є кілька несумісних змін — прочитайте їх нижче.

Основне

  • Новий модуль display — замінює lcd уніфікованими бекендами SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • Підтримка плати Arduino Giga.

  • Нове обладнання для дисплеїв і сенсорного вводу — DSI-дисплеї на STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, RGB-панелі ST7701, ємнісний сенсорний ввід GT911 / FT5X06.

  • Нові засоби керування датчиками — калібрування рівня чорного, нічний режим і sensor.disable_delays(); значно швидший транспонування (~5x) і морфологія (~2.5x).

  • Несумісна зміна: lcddisplay, lcd_touchft5x06, перейменування виводів LED — дивіться розділ про несумісні зміни.

Нові можливості

  • Бекенди дисплеївDisplayData (зчитування DDC/EDID), серіалізатор TFP410 DVI/HDMI, підтримка MIPI-DSI на STM32 H7, драйвер HDMI/DVI cec і бібліотека Python display з помічником ініціалізації RGB-панелі ST7701.

  • Сенсорний ввід — новий драйвер 5-точкового ємнісного сенсора GT911 (read_points() / read_id() / reset()).

  • Розширення machine — заморожувана бібліотека machine із допоміжним класом machine.LED і новим методом machine.LED.value([v]).

  • Керування датчикамиsensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (калібрування рівня чорного), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), hmirror/vflip для OV7670 і sensor.disable_delays() для пропуску затримок стабілізації камери задля швидшого переналаштування.

  • i.MX RTsensor.set_xclk_frequency() тепер приймає довільну частоту (із прив’язкою до найближчого допустимого дільника CSI), а модулі SPI lcd / tv / fir увімкнено на RT1060.

Інші зміни та покращення

  • Значно швидші операції над зображеннями — транспонування зображення приблизно у 5 разів швидше, а image.morph() — приблизно у 2,5 рази швидше.

  • Сканування шини камери тепер перевіряє кілька адрес пристроїв, підтримуючи плати з кількома пристроями на шині.

Виправлення помилок

Камера та датчики:

  • Виправлено точність розрахунку підсилення для багатьох датчиків (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), витримку та стовпцеве бінування MT9V0xx, витримку OV5640 і VGA-вікно OV7670.

  • STM32 тепер відкидає пошкоджені транспоновані кадри замість повернення неправильних зображень.

Обробка зображень:

  • Виправлено переповнення цілого числа, що впливало на операції з зображеннями / FIR / ToF / LCD / TV, недійсні інструкції з плаваючою комою vcvtm/vcvtp на Cortex-M4 (fast_floorf/fast_ceilf), помилку масштабування на місці у image.to_*() та пошкодження кешу DMA2D під час малювання.

Дисплей і система:

  • Виправлено тайминг DSI-дисплея і портретний режим, micro_speech listen() на Nicla Vision / Portenta H7, перемикач користувача STM32 (pyb.Switch) і підтримку шини I2C4.

Апаратне забезпечення та підтримка плат

  • Arduino Giga — нова плата з іменованими відображеннями виводів Arduino і повним набором прикладів.

  • OpenMV RT1060 — увімкнено модулі SPI LCD, TV і FIR теплового зображення.

  • Arduino Nano 33 BLE Sense — виводи LED.

Несумісні зміни API

Видимі користувачу несумісні зміни API між v4.4.3 і v4.5.0. Область дії: C-модулі Python у modules/ і бібліотеки Python у scripts/libraries/.

Кожна зміна позначена за ступенем впливу:

  • major — більшість скриптів, що її використовували, потребують редагування.

  • minor — вузький API; впливає лише на скрипти, що його використовували.

  • behavior — той самий API, інші результати; перевірте налаштовані скрипти.

Зміни згруповано за ступенем впливу в тому самому порядку. Якщо ви просто хочете перенести свій код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту посилається на його різницю на GitHub.

Модуль lcd замінено модулем display (major)

Старий модуль lcd було видалено і замінено уніфікованим модулем display,поділеним на бекенди SPIDisplay (SPI LCD-щит), RGBDisplay / паралельний, DSIDisplay (MIPI-DSI) і TVDisplay із спільним API. Скрипти повинні перейти від import lcd до модуля display і створювати відповідний об’єкт бекенду.

Коміти: 227824aac, 6c6336829

Модуль сенсорного вводу, виводи LED та вбудовані драйвери (minor)

Загальний модуль lcd_touch замінено спеціалізованим модулем драйвера ємнісного сенсора FT5X06. Назви виводів LED перейменовано для узгодженості між усіма платами (скрипти, що посилаються на старі назви виводів LED, потрібно оновити). Вбудовані драйвери hts221 / lps22h / lsm6dsox / lsm9ds1 IMU/датчиків замінено версіями з micropython-lib, API яких дещо відрізняється (вбудовані приклади оновлено відповідно).

Коміти: 86ad6dcdb, 9344c3b74, 2b5b7963b

Непідтримувані засоби керування датчиками тепер видають попередження (behavior)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() і set_auto_blc() тепер виводять попередження замість виклику RuntimeError, якщо активний датчик не підтримує відповідний засіб керування — таким чином той самий скрипт може працювати з датчиками різних можливостей. Код, що розраховував на перехоплення винятку, потрібно оновити.

Коміт: dbf4996f2

Контрольний список міграції

Для чистого переходу на v4.5.0 зазвичай потрібно виконати:

  1. Замініть використання import lcd новим модулем display і відповідним бекендом (зміна модуля display).

  2. Перейдіть з lcd_touch на FT5X06, оновіть застарілі назви виводів LED і перевірте API драйверів IMU (зміни сенсорного вводу/виводів/драйверів).

  3. Замініть блоки try/except RuntimeError навколо непідтримуваних засобів керування датчиками перевірками можливостей (зміна керування датчиками).