v3.4.2¶
v3.4.2 — великий реліз. Він представляє OpenMV Cam H7 Plus (SDRAM, великий кадровий буфер для захоплення у високій роздільній здатності), камеру OV5640 5 МП, підтримку FDCAN, перероблений драйвер OV2640, Image.jpeg_encode_for_ide() та нові бібліотеки pid / modbus. API ifconfig() WINC1500 та параметри за замовчуванням find_apriltags() змінилися — читайте розділ несумісних змін нижче.
Основні можливості¶
OpenMV Cam H7 Plus — нова плата з драйвером SDRAM і кадровим буфером ~31 МБ для захоплення у високій роздільній здатності.
Драйвер камери OV5640 5 МП з виявленням через I2C.
Підтримка периферійного пристрою FDCAN з прикладом CAN.
Перероблений OV2640 — правильно орієнтовані зображення, робочі автофункції, знімок у JPEG та новий розмір кадру
sensor.XGA.IDE JPEG —
Image.jpeg_encode_for_ide()та автоматичне передавання великих JPEG до IDE.Несумісні зміни: семантика
WLAN.ifconfig()WINC1500 змінилася,MQTTClient.wait_msg()більше не викидає виняток при порожньому отриманні, аfind_apriltags()за замовчуванням використовує 4-стороннє з’єднання — дивіться розділ несумісних змін.
Нові можливості¶
WiFi — додано
WLAN.netinfo()(повертає(rssi, security, ssid, mac, ip)) та конфігурацію статичної IP для WINC1500 черезWLAN.ifconfig()з прикладом статичної IP.FDCAN — додано підтримку периферійного пристрою FDCAN та приклад
can.py.IDE JPEG — додано
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); великі JPEG автоматично передаються до IDE, якщо буфер замалий.Бібліотеки — додано бібліотеку PID-контролера
pid, бібліотеку RTU-підлеглогоmodbus(з прикладом 32-modbus) та класSSD1306_I2Cдля OLED-дисплеїв з I2C.Приклади — додано підписку MQTT (
mqtt_sub.py, з перейменуваннямmqtt.pyнаmqtt_pub.py).Датчик — додано розмір кадру
sensor.XGA(1024x768);print()/repr()на зображенні Bayer тепер виводить метадані JSON.
Інші зміни та покращення¶
Перероблено драйвер OV2640 (правильно орієнтовані зображення, робочі автофункції, знімок у JPEG); увімкнено apriltags у високій роздільній здатності (знято обмеження ROI <64K пікселів на здатних платах); знижено PCLK OV2640 з 72 МГц до 36 МГц.
Виправлення помилок¶
Зображення:
Виправлено переповнення бінарних операцій за межами зображення, точність printf/float у виводі
find_apriltags()/find_datamatrices()/find_lines(), неправильний JSON уprint()плями,find_apriltags()на вертикально/горизонтально дзеркально відображених зображеннях, помилку ROI вfind_lbp(), таймаут стиснення JPEG для великих роздільних здатностей та звітування про статистику пам’ятіfb_alloc.
Камера та датчики:
Виправлено обслуговування кешу та вирівнювання буфера для режиму JPEG, максимальний розмір передачі DCMI, конфігурацію регістрів та роздільні здатності OV2640, відновлення стану вимикання датчика при скиданні та якість зображення OV7725 (додано фільтр смугастості для кожної камери).
Мережа та система:
Виправлено апаратну помилку/збій
socket.accept(), обробку таймауту сокета WINC1500 (таймаут 0 тепер є блокуючим; сокети не закриваються при таймауті отримання), глибокий сон H7, RTC (оновлення від upstream та проблеми EXTI / таймера пробудження / програмного скидання H7) та переривання таймераpyb.Servo(Servo не функціонував).
Апаратне забезпечення та підтримка плат¶
OpenMV Cam H7 Plus (OPENMV4R) — нова плата з драйвером SDRAM, що забезпечує великий (~31 МБ) кадровий буфер.
OV5640 — новий драйвер камери 5 МП з виявленням через I2C.
FDCAN — підтримка периферійного пристрою.
Несумісні зміни API¶
Видимі користувачем несумісні зміни API між v3.4.1 та v3.4.2. Область: Python C-модулі в modules/ та Python бібліотеки в scripts/libraries/.
Кожна зміна позначена рівнем впливу:
major — стосується більшості скриптів, що використовували цю функцію; вам потрібно буде портувати код.
minor — вузький API; стосується лише скриптів, що використовували його.
behavior — той самий API, різні результати; перевірте налаштовані скрипти.
Зміни згруповані за рівнем впливу в такому порядку. Якщо вам потрібно лише портувати код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту містить посилання на його diff на GitHub.
Семантика WLAN.ifconfig() WINC1500 змінилася (major)¶
На щиті WiFi WINC1500 WLAN.ifconfig() більше не повертає старий 5-елементний список [rssi, security, ssid, mac, ip]. Тепер він отримує/встановлює кортеж (ip, subnet, gateway, dns) (та підтримує конфігурацію статичної IP), відповідаючи стандартному інтерфейсу network. Код, що зчитував інформацію про з’єднання з ifconfig(), повинен перейти на новий метод WLAN.netinfo() ((rssi, security, ssid, mac, ip)).
Коміти: e685b484a
MQTTClient.wait_msg() повертає None при порожньому отриманні (minor)¶
MQTTClient.wait_msg() бібліотеки mqtt тепер повертає None при порожньому отриманні замість виклику OSError(-1). Код, що перехоплював OSError(-1) для виявлення закритого/порожнього сокета, повинен замість цього перевіряти повернення None.
Коміти: 76239ea89
Контрольний список міграції¶
Для чистого портування на v3.4.2 типова робота включає:
Замініть зчитування інформації про з’єднання
WLAN.ifconfig()WINC1500 наWLAN.netinfo()(зміна ifconfig).Перевіряйте
MQTTClient.wait_msg()на поверненняNoneзамість перехопленняOSError(-1)(зміна wait_msg).Перенастройте виявлення AprilTag або зберіть мікропрограму з
IMLIB_ENABLE_FINE_APRILTAGS, якщо вам потрібне 8-стороннє з’єднання (зміна find_apriltags).
Всі інші скрипти виконуються без змін.