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).Несумісна зміна:
lcd→display,lcd_touch→ft5x06, перейменування виводів LED — дивіться розділ про несумісні зміни.
Нові можливості¶
Бекенди дисплеїв —
DisplayData(зчитування DDC/EDID), серіалізаторTFP410DVI/HDMI, підтримка MIPI-DSI на STM32 H7, драйвер HDMI/DVIcecі бібліотека Pythondisplayз помічником ініціалізації 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 RT —
sensor.set_xclk_frequency()тепер приймає довільну частоту (із прив’язкою до найближчого допустимого дільника CSI), а модулі SPIlcd/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_speechlisten()на 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 і створювати відповідний об’єкт бекенду.
Модуль сенсорного вводу, виводи LED та вбудовані драйвери (minor)¶
Загальний модуль lcd_touch замінено спеціалізованим модулем драйвера ємнісного сенсора FT5X06. Назви виводів LED перейменовано для узгодженості між усіма платами (скрипти, що посилаються на старі назви виводів LED, потрібно оновити). Вбудовані драйвери hts221 / lps22h / lsm6dsox / lsm9ds1 IMU/датчиків замінено версіями з micropython-lib, API яких дещо відрізняється (вбудовані приклади оновлено відповідно).
Непідтримувані засоби керування датчиками тепер видають попередження (behavior)¶
sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() і set_auto_blc() тепер виводять попередження замість виклику RuntimeError, якщо активний датчик не підтримує відповідний засіб керування — таким чином той самий скрипт може працювати з датчиками різних можливостей. Код, що розраховував на перехоплення винятку, потрібно оновити.
Коміт: dbf4996f2
Контрольний список міграції¶
Для чистого переходу на v4.5.0 зазвичай потрібно виконати:
Замініть використання
import lcdновим модулемdisplayі відповідним бекендом (зміна модуля display).Перейдіть з
lcd_touchнаFT5X06, оновіть застарілі назви виводів LED і перевірте API драйверів IMU (зміни сенсорного вводу/виводів/драйверів).Замініть блоки
try/except RuntimeErrorнавколо непідтримуваних засобів керування датчиками перевірками можливостей (зміна керування датчиками).