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.JPEG для IDE —
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.JPEG для IDE — добавлены
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); большие JPEG автоматически передаются в IDE, когда буфер слишком мал.Библиотеки — добавлены библиотека ПИД-регулятора
pid, библиотека slave-устройства RTUmodbus(с примером 32-modbus) и классSSD1306_I2Cдля OLED-дисплеев по I2C.Примеры — добавлен MQTT subscribe (
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()на изображениях с vflip / hmirror, ошибка ROI вfind_lbp(), тайм-аут сжатия JPEG для больших разрешений, а также отчёт о статистике памяти вfb_alloc.
Камера и датчики:
Исправлены обслуживание кэша и выравнивание буфера в режиме JPEG, максимальный размер передачи DCMI, конфигурация регистров и разрешения OV2640, восстановление состояния выключения датчика при сбросе, а также качество изображения OV7725 (добавлен фильтр полос для каждой камеры).
Сеть и система:
Исправлены хардфолт/ошибка в
socket.accept(), обработка тайм-аута сокета WINC1500 (тайм-аут 0 теперь блокирующий; сокеты не закрываются при тайм-ауте приёма), глубокий сон H7, RTC (обновление из upstream и проблемы H7 EXTI / таймера пробуждения / программного сброса), а также прерывание таймераpyb.Servo(Servo был неработоспособен).
Поддержка оборудования и плат¶
OpenMV Cam H7 Plus (OPENMV4R) — новая плата с драйвером SDRAM, обеспечивающим большой (~31 МБ) буфер кадра.
OV5640 — новый драйвер камеры на 5 МП с обнаружением по I2C.
FDCAN — поддержка периферии.
Ломающие изменения API¶
Видимые пользователю ломающие изменения API между v3.4.1 и v3.4.2. Область охвата: C-модули Python в modules/ и библиотеки Python в scripts/libraries/.
Каждое изменение помечено уровнем воздействия:
major — затрагивает большинство скриптов, использующих эту функцию; вам потребуется адаптировать код.
minor — узкий API; затрагивает только скрипты, которые его использовали.
behavior — тот же API, иные результаты; перепроверьте настроенные скрипты.
Изменения сгруппированы по воздействию в этом порядке. Если вы просто хотите адаптировать свой код, перейдите к контрольному списку миграции в конце. Каждый хеш коммита ведёт на его диф на GitHub.
Изменилась семантика WLAN.ifconfig() для WINC1500 (major)¶
На WiFi shield с 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).
Все остальные скрипты работают без изменений.