Подключение usb камеры к stm32

Обновлено: 04.07.2024

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Подозреваю, что "стандартного драйвера вебкамеры" не существует. Есть камеры на чипсетах, драйвера которых включены в дистрибутив винды. Самих контроллеров достаточно много, и у всех свой интерфейс.
По поводу подключения к STM32 - есть большие сомнения, что он потянет работу с вебкой, впрочем, можно и попробовать. Ну а за исходниками работы с камерами наверное нужно лезть в какой нибудь дистрибутив линукса посовременнее. Возни конечно много, но других вариантов я не вижу.

_________________
На любой вопрос даю любой ответ

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Благодарю VDLab! Теперь есть азимут на клад. Буду копать.

Приглашаем всех желающих 25/11/2021 г. принять участие в вебинаре, посвященном антеннам Molex. Готовые к использованию антенны Molex являются компактными, высокопроизводительными и доступны в различных форм-факторах для всех стандартных антенных протоколов и частот. На вебинаре будет проведен обзор готовых решений и перспектив развития продуктовой линейки. Разработчики смогут получить рекомендации по выбору антенны, работе с документацией и поддержкой, заказу образцов.

Подозреваю, что "стандартного драйвера вебкамеры" не существует.

Не существует. Вебкамера самостоятельное устройство с Ethernet интерфейсом.

Когда было больше свободного времени я пытался присоединить usb камеру к микроконтроллеру Luminary до того как TI приобрел ее.

Идея проста, Виндовс детектирует как стандартное видео устройство ,посылает стандартные запросы для определения данных о возможностях камеры. в Стандартной программе видео от Виндовс можно выбрать требуемое разрешение и увидеть стандартные посылки для выбора параметров. после этого в камера шлет непрерывный поток в формате MJPEG.

Не знаю как кой конечный итог подключения, в СТМ есть прямой интерфейс к видеоматрицам, такой же интерфейс и в матрицах видеокамер.

Приглашаем 30 ноября всех желающих посетить вебинар о литиевых источниках тока Fanso (EVE). Вы узнаете об особенностях использования литиевых источников питания и о том, как на них влияют режим работы и условия эксплуатации. Мы расскажем, какие параметры важно учитывать при выборе литиевого ХИТ, рассмотрим «подводные камни», с которыми можно столкнуться при неправильном выборе, разберем, как правильно проводить тесты, чтобы убедиться в надежности конечного решения. Вы сможете задать вопросы представителям производителя, которые будут участвовать в вебинаре

В данной библиотеке описывается подключение модуля цифровой камеры 1,3МПикселя (на базе контроллера OV9655) с использованием DMA через интерфейс DCMI к отладочной плате TM32F4 Discovery.

Стоимость модуля на Ebay составляет примерно 15 евро. Камера имеет разрешение 1280х1024 (SXGA) и глубину цвета 16 бит. Связь с чипом осуществляется через I2C (400кГц максимум), а данные изображения передаются по 8ми битной шине DCMI. Поддерживаются 15 и 30 кадров в секунду.

В данной статье автор реализует просмотр изображения на ЖК-дисплее, на данный момент имеются библиотеки для работы с QVGA дисплеем (320×240) и QQVGA (160×120). Передача осуществляется через DMA для разгрузки процессора и более плавного отображения на дисплее (на данный момент картинка отображается зеркально). Версия библиотеки 1.1 позволяет сохранять снимки. Если выбрано разрешение 160х120 пикселей, снимок может быть сохранен в оперативную память. Полученное изображение может быть в итоге может быть преобразовано из массива в памяти в BMP формат с помощью библиотеки “UB_OV9655_RAM2BMP”. Данные могут быть переданы через UART (для этого требуется подключение UART-библиотеки).

Примечание: некоторые DCMI-порты процессора на модуле Discovery уже заняты кодеком CS43L22 и акселерометром LIS302 (PA4, PA6, PB6, PB9, PC7). Проблем с работой камеры замечено не было, однако, две микросхемы, наверное, одновременно не могут быть использованы.

Важное замечание по отладочной плате: При использовании отладочной платы необходимо переподключить два пина. Стандартное подключение DCMI (CON6) предусматривает использование D2 и D3 на пинах процессора PE0 и PE1. Но эти порты используются для обработки прерываний LIS302 и линии всегда подтянуты к низкому уровню!! Автор подключает эти линии к выводам PC8 и PC9, которые также являются линиями D2 и D3 шины DCMI.

Еще одно замечание: 18 пиновый разъем CON6, помеченный как OV9655, не совсем совместим по пинам, поэтому необходимо припаять переходник. Модуль камеры требует подачи частоты (10-48МГц). В примере используется генератор 16МГц, по умолчанию используется 24МГц, но у автора его не было:-) Для работы с дисплеем и I2C-шиной используется две библиотеки "STM32_UB_LCD_ST7783" и "STM32_UB_I2C1". Для отображения на QQVGA используется библиотека версии 1.5.

Пример исполнения:




Используемые выводы и DMA:

Требуемые библиотеки:

Подключаемые модули CooCox-IDE: DCMI, DMA
Поддерживаемые библиотеки: STM32_UB_I2C1, STM32_UB_LCD_ST7783

Перечисления:

Функции:

Пример использования:

В приложении проект CooCox и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Доброго времени суток, передо мной стоит задача - записать МК STM32F407 видео с камеры ov7660(тему по проблемам с камерой я уже создавал, но теперь проблема в другом, решил еще один топик создать). Запись будет идти либо на SD либо на FLASH USB. Видеокартинку получаю в прерывании от DMA, можно весь буфер, можно 1/2,1/4 и тд пикселей, дальше для контроля вывожу на LCD, и затем должен записать на носитель. Немного покрутив МК и камеру, понял, что "мощей" МК не хватит "хватать" 30 кадров в секунду и сжимать в JPEG для дальнейшей передачи, поэтому в конечной версии в разрыв МК и камеры поставлю аппаратный кодер, а пока его нету, эксперемент провожу на разрешении 160*120 по 2 байта на пиксель.Представил ситуацию, что писать буду на флешку по USB, но решил для наглядности сначала по USB просто скидывать на компьютер, отображая в реальном времени. Казалось бы, если использовать USB, то скорости 12Мбит хватит, дабы если даже идет 30 кадров в секунду , то размер кадра 160*120*2 = 38400, затем на 30 кадров

9,2Мбита в секунду, и это максимум. Хотя до этого и имел опыт работы с USB Ftosh и виртуального ком порта, но проблемы посыпались одна за другой, видимо из-за недостаточного понимания каких то моментов.
1) Сначала решил просто сделать USB как VCP,(проект брал из примера). Причем организовал DMA канал между DCMI и буфером USB напрямую, буфер задал размеров в 38403 байта, а в обработчике прерывания от DMA просто сдвигал переменную - указатель на буфер отправки по USB (APP_Rx_Buffer ,APP_Rx_ptr_in соответсчтвено). Кадров явно не хватает, максимум около 3 в секунду программка из винды ловит. Начал искать в инете, какую скорость можно получить по VCP, ничего толком не нашел, в книжках тоже, хотя передача вроде как ведется BULK. Решил, что может просто драйвер СТМ порта под винду "не тянет", дабы не предназначен для такого. Пошел дальше. 2) Решил попробовать сделать изохронную передачу, причем не читая спецификации HID устройств взял для "переделки" пример HID custom, пример с аудио не захотел. Там добавил еще одну конечную точку с изохронной(хотя потом проборвал и булк ее сделать и вообще с прерываниями) передачей, через 1ую(которая в примере) пакеты передаются, через 2ю нет, кстати пробовал переименовать 1ую точку с 0x81 на 0x82, тоже передача прекратилась.Потом прочитав в книге , что HID тянет толко 64Кбит/сек оставил эту затею. Куда двигаться дальше не знаю . дабы примеры есть только на HID, Oudyo, MSC, и CDC. Может быть и булк потянул бы, если правильно класс устройства подобрать что ли, но сразу втягиваться опасаусь в написание, дабы USB мне лишь знакомо, и возиться с ним долго, лучше сразу выбрать правильный вариант! Более того под самой виндой использую библиотеку libusb, она почему то видит все устройства, а открывает только HID! Отсюда вопросы:
1)Какой класс устройства надо описывать, для этой задачи, какую концепцию передачи вложить в проект?
2)Откуда взять пример какой ть похожий(просто класс то описать структурами можно, а как организовывать посылку для данного класса не ясно, тем более в изохронном режиме. )?
3)Как лучше написать ответную часть под виндой для данного устройства? Заранее спасибо.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Используйте платформу с камерным модулем OpenMV M7 для реализации проектов с машинным зрением. На плате распаян дополнительный микроконтроллер для обработки данных изображения на лету и управления внешними устройствами.


Камера OpenMV M7 позволит сделать умную систему видеонаблюдения с распознаванием лиц, цифровое зрение для робота или систему сортировки на производстве.

Подключение и настройка

Шаг 1

Подключите плату к компьютеру по USB. Для коммуникации используйте кабель micro-USB.

Шаг 2

Примеры работы

Все примеры работы с камерой вы найдёте на странице документации про среду разработки OpenMV IDE.

Элементы платы


Камерный модуль

Объектив с фокусным расстоянием 2,8 мм и диафрагмой F2.0 крепится через байонет со стандартной резьбой M12 с шагом 0,5 мм, поэтому к OpenMV H7 подходят сменные объективы от GoPro и других портативных камер. На обратной стороне объектива установлен ИК-фильтр на 650 нм, который можно снять для съёмок в темноте.

Компания OpenMV также предлагает свои фирменные объективы.

Микроконтроллер STM32F765VIT6

Мозгом платы выступает 32-битный процессор STM32F765VIT6 от компании STMicroelectronics с вычислительным ядром ARM Cortex-M7. Контроллер отвечает за обработку изображения с камерного модуля OV7725, а также предоставляет доступ к 10 пинам ввода-вывода общего назначения (GPIO) для коммуникации с внешними устройствами.

Микроконтроллер работает на тактовой частоте 216 МГц, а также предоставляет 2 МБ Flash-памяти и 512 КБ SRAM-памяти.

Разъём micro-USB

Порт micro-USB предназначен для прошивки и питания платформы OpenMV M7. Для подключения к ПК понадобиться кабель micro-USB.

Слот карты microSD

Слот предназначен для установки карты памяти формата microSD. Внешняя память пригодится для записи и хранения тяжёлых медиафайлов.

Светодиодная индикация

Имя светодиода Назначение
LED RGB Пользовательский RGB светодиод с общим анодом. Катоды красного, зеленного и синего цветов выведены на пины микроконтроллера. Используйте определения LED1 для управления красным, LED2 — зелёным и LED3 — синем цветом. При задании значения высокого уровня светодиод загорается, при низком — гаснет.
LED2 и LED3 Два последовательно подключённых пользовательских ИК-светодиода к микроконтроллеру. Используйте определения LED4 для управления состоянием ИК-светодиодов. При задании значения высокого уровня светодиоды загораются, при низком — гаснут.

Регулятор напряжения

Линейный понижающий регулятор напряжение BD33IAWEFJ с выходом 3,3 вольта обеспечивает питание камеры и микроконтроллера. Максимальный выходной ток составляет 500 мА.

Распиновка


Пины питания

VIN: Пин для подключения внешнего источника напряжения в диапазоне от 3,6 до 5 вольт. 3V3: Пин от стабилизатора напряжения с выходом 3,3 вольта и максимальных током 500 мА. Регулятор обеспечивает питание микроконтроллера и другой обвязки платы.

Пины ввода/вывода

В отличии от большинства плат Arduino, родным напряжением OpenMV является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать 3,3 В. Но есть дополнительный бонус, все пины, кроме P6, толерантны к 5 вольтам, так что смело можете подключать свои любимые датчики к этой платформе.

Читайте также: