v3.9.4

v3.9.4 додає модуль buzzer, ioctls виявлення руху HM01B0 Himax (із прикладами низькоенергетичного пробудження за рухом), керування вікном зчитування MT9V034, функції низького енергоспоживання Ethernet, драйвер камери OV7670 та камеру Arduino Nano 33 BLE Sense. Також включено велику партію прискорень JPEG / LCD / TV. API виведення VSYNC замінено на зворотний виклик, а математику підсилення/витримки MT9V034 виправлено — ознайомтеся з несумісними змінами нижче.

Основні можливості

  • Модуль buzzer — новий модуль buzzer (freq(), duty(), RESONANT_FREQ) для OpenMV Pure Thermal.

  • Виявлення руху HM01B0 — нові ioctls виявлення руху Himax та приклад низькоенергетичного пробудження за рухом.

  • Вікно зчитування MT9V034 — керування вікном зчитування глобального затвору через sensor.ioctl().

  • Нові камери / плати — базовий драйвер OV7670, камера Arduino Nano 33 BLE Sense та плата Bormio.

  • Швидший конвеєр — переписаний SIMD-кодувальник JPEG, швидше дебаєрування та значне прискорення передачі LCD/TV.

  • Несумісна зміна: sensor.set_vsync_output() замінено на sensor.set_vsync_callback(), а математику підсилення/витримки MT9V034 виправлено — дивіться несумісні зміни.

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

  • Buzzer — додано модуль buzzer з функціями buzzer.freq(), buzzer.duty() та константою buzzer.RESONANT_FREQ (OpenMV Pure Thermal).

  • Виявлення руху HM01B0 — додано ioctls IOCTL_HIMAX_MD_ENABLE / MD_WINDOW / MD_THRESHOLD / MD_CLEAR та IOCTL_HIMAX_OSC_ENABLE, приклад виявлення руху Himax та приклад низькоенергетичного пробудження himax_wakeup_on_motion_detection.py.

  • Вікно зчитування MT9V034 — додано IOCTL_SET_READOUT_WINDOW / IOCTL_GET_READOUT_WINDOW для керування вікном зчитування MT9V034 через sensor.ioctl().

  • Ethernet низького енергоспоживання — додано функції вимкнення живлення / низького енергоспоживання Ethernet.

  • Portenta — додано функції зворотного виклику для увімкнення/вимкнення зовнішнього осцилятора.

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

  • Переписано кодувальник JPEG з SIMD і прискорено кодування Bayer→YCbCr, ядро апаратного JPEG залишається ввімкненим під час виконання скрипта, прискорено дебаєрування (~19.5 мс для VGA), стискання JPEG перенесено на MDMA, прискорено шляхи передачі TV/LCD з SIMD/ефективним DMA, значно зменшено використання шини SPI LCD. Додано ULPI PHY драйвер USB3320 для USB високої швидкості.

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

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

  • Виправлено ініціалізацію/потокову передачу драйвера HM01B0 та налаштовано його цільове автовідносне/максимальне підсилення, виправлено обмеження підсилення AGC/AEC MT9V034, виправлено завантаження мікропрограми автофокуса OV5640 (порядок байтів).

Дисплей:

  • Виправлено DMA-передачі SPI LCD понад 64 КБ, полярність виведення LCD та стабільність шини LCD (AXI QOS).

Система та підключення:

  • Виправлено екземпляр SDMMC, що використовується драйвером CYW43 WiFi (з визначеним платою екземпляром SDMMC), покращено ефективність DMA FLIR Lepton (VOSPI підвищено до 20 МГц на H7), виправлено поведінку низького енергоспоживання/режиму очікування Portenta (обмеження струму PMIC SW1, Ethernet та ULPI низького енергоспоживання), RTSP-сервер тепер толерує заголовки CSeq та PLAY Range не в порядку (FFPLAY), виправлено вирівнювання стеку компонувальника 8 байт EABI та виправлено зіпсований імпорт у прикладі mqtt_sub.py Portenta.

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

  • Камерний датчик OV7670 — базовий драйвер.

  • Arduino Nano 33 BLE Sense — драйвер камерного датчика (порт nrf) з виправленнями виводу скидання та шини I2C.

  • HM01B0 — додано роздільну здатність 320x320.

  • Bormio — конфігурація PLL, розмітка флеш-пам’яті та GPIO PORT K (також увімкнено на Portenta).

  • USB3320 ULPI PHY — USB високої швидкості.

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

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

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

  • major — торкається більшості скриптів, що використовували цю функцію; необхідне портування коду.

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

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

Виведення VSYNC замінено на зворотний виклик (major)

sensor.set_vsync_output(pin) видалено та замінено на sensor.set_vsync_callback(callback). Лінія VSYNC більше не керує Pin безпосередньо; натомість Python-виклик викликається зі станом VSYNC, а ваш зворотний виклик перемикає Pin самостійно. Код, що використовував sensor.set_vsync_output(), необхідно портувати (дивіться оновлений приклад vsync_gpio_output.py).

Коміти: 5bbe25c20

Математику підсилення/витримки MT9V034 виправлено (behavior)

Тактову частоту MT9V034 та математику підсилення/витримки виправлено, тому sensor.set_auto_gain() / sensor.set_auto_exposure() тепер видають точні (а отже, інші) значення, ніж раніше. Скрипти, де жорстко закодовано компенсуючі значення підсилення/витримки для обходу старої неправильної математики на камерах з глобальним затвором MT9V034, слід позбутися цих обхідних рішень та повторно налаштувати.

Коміти: 4420536c4

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

Для чистого портування на v3.9.4 типова робота полягає в:

  1. Замініть sensor.set_vsync_output(pin) на sensor.set_vsync_callback(callback) і перемикайте Pin всередині зворотного виклику (зміна VSYNC).

  2. Повторно налаштуйте будь-які обхідні рішення підсилення/витримки MT9V034 з урахуванням виправленої математики (зміна MT9V034).

Всі інші скрипти працюють без змін.