Настройка модуля камеры домой ru

Обновлено: 21.11.2024

Это руководство по настройке веб-камеры в Arch Linux.

Скорее всего, ваша веб-камера будет работать из коробки. Разрешения на доступ к видеоустройствам (например, /dev/video0 ) обрабатываются udev, настройка не требуется.

Содержание

Загрузка

Большинство современных веб-камер совместимы с UVC (USB Video Class) и поддерживаются универсальным модулем драйвера ядра uvcvideo. Чтобы убедиться, что ваша веб-камера распознана, запустите dmesg сразу после подключения веб-камеры. Вы должны увидеть что-то вроде этого:

Некоторые веб-камеры до UVC также поддерживаются модулем драйвера ядра gspca. Неполный список устройств, поддерживаемых этой платформой, см. в списке плат gspca.

В противном случае, если ваша веб-камера не поддерживается драйверами ядра, необходим внешний драйвер. Первый шаг — определить имя веб-камеры, используя, например, lsusb. Затем вы можете проверить устройства с веб-камерой на наличие информации и ресурсов о веб-камерах. Как только вы найдете драйвер, совместимый с веб-камерой, вы должны добавить соответствующий модуль ядра в файл /etc/modules-load.d/webcam.conf, чтобы он загружался в ядро ​​во время начальной загрузки на этапе инициализации.

Примечание. API-интерфейс ядра Linux для пользовательского пространства, используемый для управления веб-камерами, называется Video4Linux2, сокращенно v4l2. Все приложения, поддерживающие v4l2, будут работать с драйверами ядра.

Конфигурация

Если вы хотите настроить яркость, цвет и другие параметры веб-камеры (например, в случае, когда стандартные цвета слишком синеватые/красноватые/зеленоватые), вы можете использовать Qt V4L2 Test Bench. Чтобы запустить его, установите v4l-utils и запустите qv4l2, и он представит вам список настраиваемых параметров. Изменение этих настроек повлияет на все приложения.

Командная строка

v4l-utils также устанавливает эквивалентный инструмент командной строки v4l2-ctl . Чтобы вывести список всех видеоустройств:

Чтобы получить список настраиваемых параметров видеоустройства:

Сохраняющиеся изменения конфигурации

Конфигурация, выполненная через V4L2, не сохраняется после отключения и повторного подключения веб-камеры. Можно использовать v4l2-ctl с правилами Udev, чтобы устанавливать некоторую конфигурацию каждый раз при подключении конкретной камеры.

Например, чтобы задать параметр масштабирования по умолчанию для конкретной веб-камеры Logitech при каждом ее подключении, добавьте правило udev, подобное этому:

Приведенное выше правило действительно для веб-камеры Logitech C920 HD Pro с идентификатором оборудования 046d:0892.

Идентификатор поставщика устройства и идентификатор продукта можно найти с помощью lsusb . Они уникальны для каждого продукта и не изменяются, пока продукт не получит новую версию оборудования.

Отключить внутреннюю веб-камеру ноутбука

Иногда нам может понадобиться отключить внутреннюю веб-камеру ноутбука, чтобы показывалась только та, которая подключена через USB. Это можно сделать с помощью правила udev. Сначала нам понадобится идентификатор производителя устройства и идентификатор продукта из lsusb

Затем мы добавляем новое правило udev для удаления устройства сразу после его обнаружения:

Приложения

xawtv

Это базовая программа просмотра устройств Video4Linux2, и хотя она предназначена для использования с картами ТВ-тюнера, она хорошо работает с веб-камерами. Он будет отображать то, что ваша веб-камера видит в окне.

VLC также можно использовать для просмотра и записи вашей веб-камеры. В меню «Медиа» VLC откройте «Захват устройства». ' и введите файлы видео и аудио устройства. Или из командной строки выполните:

Это заставит VLC отражать вашу веб-камеру.

  • Чтобы сделать кадр, просто выберите Снимок в меню Видео.
  • Чтобы записать поток, добавьте аргумент --sout в командную строку, например,

(Очевидно, что это немного избыточно в отношении скорости передачи данных, но это нормально для целей тестирования). Обратите внимание, что по умолчанию это не будет отображать видео, чтобы увидеть, что вы записываете, вам нужно добавить отображение в качестве пункта назначения в аргумент (обратите внимание, что это замедлит работу):

Если VLC не обнаруживает веб-камеры, убедитесь, что установлен пакет zvbi.

MPlayer

Чтобы использовать MPlayer для создания снимков с веб-камеры, выполните эту команду в терминале:

Здесь вам нужно нажать s, чтобы сделать снимок. Снимок будет сохранен в текущей папке как shotXXXX.jpg. Если вы хотите записывать видео непрерывно:

Нажмите Ctrl+c, чтобы закончить запись.

Чтобы воспроизвести видео с помощью MPlayer, используя MJPEG в качестве формата пикселя вместо стандартного формата YUYV, вы можете выполнить следующее:

Чтобы использовать mpv для создания снимков с веб-камеры, запустите эту команду из терминала:

Здесь вам нужно нажать s, чтобы сделать снимок. Снимок будет сохранен в вашей текущей папке как mpv-shotNNNN.jpg .

Чтобы использовать MJPEG в качестве формата пикселя вместо формата по умолчанию, которым в большинстве случаев является YUYV, вы можете вместо этого запустить следующее:

В некоторых случаях это может привести к значительному улучшению качества и производительности (например, 5 кадров в секунду -> 30 кадров в секунду).

Чтобы настроить параметры веб-камеры, включая разрешение, см. документацию mpv.

FFmpeg

Устранение неполадок

Поддержка V4L1

В версии 2.6.27 ядра Linux прекращена поддержка устаревшего API Video4Linux (1). Декодирование формата пикселей было перемещено в пространство пользователя, поскольку Video4Linux версии 2 не поддерживает декодирование пространства ядра. Библиотека libv4l предоставляет пользовательские приложения со службами декодирования пикселей и будет использоваться большинством программ. Также доступны другие уровни совместимости.

Если ваше устройство создано, но изображение выглядит странно (например, почти полностью зеленым), возможно, вам это нужно.

Если приложение поддерживает V4L2, но не поддерживает формат пикселей, используйте следующую команду:

Если приложение поддерживает только старую версию V4L, используйте эту команду:

Совет. Вы также можете поместить следующую строку в /etc/profile или xprofile, чтобы вам не приходилось все время вводить эту длинную команду: export LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so или экспортируйте LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so

Для 32-разрядных приложений с несколькими библиотеками установите пакет lib32-v4l-utils и замените /usr/lib/libv4l/ на /usr/lib32/libv4l/ в приведенных выше командах.

xawtv с картой nvidia

Если вы используете графическую карту nvidia и получаете сообщение об ошибке, например

вместо этого вы должны запустить его как $ xawtv -nodga

Microsoft Lifecam Studio/Cinema

При определенных конфигурациях студия/кинотеатр Microsoft lifecam может запрашивать слишком большую пропускную способность USB и не работать, см. Часто задаваемые вопросы по Uvcvideo. В этом случае измените буферизацию, загрузив драйвер uvcvideo с параметром quirks=0x80. Добавьте его в /etc/modprobe.d/uvcvideo.conf:

Примечание. Если в журналах видны задержки или камера работает периодически, этот обходной путь должен применяться повсеместно. Возможны и большие значения, например quirks=0x100.

Скайп

При тестировании веб-камеры обратите внимание на следующее:

  • Эхобот не поддерживает видеочат. Не используйте его для тестирования веб-камеры.
  • Skype может распознавать разные видеоустройства/камеры (/dev/video*). Они будут перечислены как что-то вроде «встроенная камера» в раскрывающемся меню в настройках камеры. Попробуйте каждую камеру и подождите несколько секунд, потому что для переключения на другую камеру требуется время.

Проверьте пропускную способность, используемую веб-камерами USB

При подключении нескольких веб-камер к одной шине USB они могут перегружать полосу пропускания шины USB и работать неправильно. Вы можете диагностировать это с помощью инструмента usbtop из пакета usbtop AUR.

Инвертировать видеопоток

Если ваш видеопоток инвертирован, вы можете создать новую виртуальную видеокамеру, которая инвертирует инвертированное видео. Вам необходимо установить v4l-utils, а также v4l2loopback-dkms. Создайте виртуальную видеокамеру:

Проверьте имя только что созданной камеры:

Затем вы можете запустить ffmpeg для чтения с вашей реальной веб-камеры (здесь /dev/video0 ), инвертировать ее и передать на виртуальную камеру:

Здесь vflip инвертирует видеопоток по вертикали. Используйте hflip, чтобы инвертировать его по горизонтали.

Обратите внимание, что аргумент формата yuv420p может понадобиться, чтобы избежать ошибки, иначе видеопотока может не быть, и будет показан черный экран [1]. Другими словами:

После этого вы сможете использовать в своих приложениях "фиктивную" камеру вместо "встроенной".

Плохое качество изображения

Если вы считаете, что изображения слишком яркие, слишком темные, слишком экспонированные или какие-либо другие, вы можете установить v4l2ucp AUR, чтобы настроить вывод изображения.

Мы уже работали с модулем ESP32. Это мощный, но недорогой микроконтроллер от Espressif и A-Thinker с расширенными функциями, такими как Bluetooth, WiFi и многоцелевые порты GPIO.

Сегодня мы рассмотрим еще одного члена семейства модулей ESP32 — плату ESP32-CAM.

Этот удивительный маленький модуль сочетает в себе много возможностей и функций в небольшом корпусе. Прочтите и узнайте, как вы можете использовать его.

Введение

ESP32-CAM — это полнофункциональный микроконтроллер, который также имеет встроенную видеокамеру и разъем для карты памяти microSD. Он недорогой и простой в использовании. Он идеально подходит для устройств Интернета вещей, которым требуется камера с расширенными функциями, такими как отслеживание и распознавание изображений.

Пример программного обеспечения, распространяемый Espressif, включает в себя эскиз, позволяющий создать веб-камеру со сложной панелью управления. После того, как вы научитесь программировать устройство, вы обнаружите, что им очень легко пользоваться.

Неплохо для платы стоимостью около десяти долларов, включая камеру!

Изучение ESP32-CAM

Модуль ESP32-CAM имеет меньше контактов ввода-вывода, чем предыдущий модуль ESP-32, который мы рассматривали.Многие из контактов GPIO используются внутри камеры и порта для карты microSD.

Еще одна вещь, отсутствующая в модуле ESP32-CAM, — это USB-порт. Чтобы запрограммировать это устройство, вам необходимо использовать адаптер FTDI. Это будет описано далее в этой статье.

Вот распиновка модуля ESP32-CAM:

Об этом модуле следует отметить, что компоненты расположены на обеих сторонах печатной платы. На «верху» платы находится разъем для модуля камеры, а также гнездо для карты microSD (иногда называемой «TF»).

Вы также заметите квадратный белый светодиод в верхней части модуля, который может действовать как «вспышка» для освещения объекта, который вы пытаетесь рассмотреть с помощью камеры.

На нижней стороне печатной платы находится модуль ESP32-S. Он также имеет разъем для внешней антенны, а также внутреннюю антенну, выгравированную на печатной плате. Вскоре я объясню, как использовать внешнюю антенну.

Еще один ключевой компонент, расположенный под платой, — это переключатель сброса.

Поскольку в нижней части модуля находится так много компонентов, вам может быть проще не использовать макетную плату без пайки при экспериментах с модулем ESP32-CAM. Рекомендуется использовать перемычки с гнездовыми разъемами Dupont.

Технические характеристики ESP32-CAM

ESP32-CAM основан на модуле ESP32-S, поэтому имеет те же характеристики. Он имеет следующие особенности:

  • 802.11b/g/n Wi-Fi
  • Bluetooth 4.2 с BLE
  • Интерфейсы UART, SPI, I2C и PWM
  • Тактовая частота до 160 МГц.
  • Вычислительная мощность до 600 DMIPS
  • 520 КБ SRAM плюс 4 МБ PSRAM
  • Поддерживает загрузку изображений через WiFi
  • Несколько спящих режимов
  • Возможно обновление прошивки по беспроводной сети (FOTA)
  • 9 портов GPIO
  • Встроенная светодиодная вспышка.

Характеристики камеры

ESP32-CAM включает в себя модуль камеры OV2640. Устройство также поддерживает камеры OV7670. OV2640 имеет следующие характеристики:

Работа с ESP32-Cam

Использование ESP32-CAM аналогично использованию модулей ESP32, которые мы рассмотрели ранее, с одним существенным отличием. Плата ESP32-CAM не имеет USB-порта, поэтому вы не можете просто подключить ее к компьютеру и начать загрузку программ.

Вместо этого вам потребуется добавить внешний адаптер FTDI. Это тот же адаптер, который вы использовали бы для программирования Arduino Pro Mini, поэтому, если вы работали с Pro Mini, вероятно, у вас уже есть один из них.

Подключение адаптера FTDI

Вот схема подключения адаптера FTDI к модулю ESP32-CAM:

Важно отметить, что адаптер FTDI должен быть настроен на выходное напряжение VCC 3,3 В, а не 5 В, поскольку мы питаем ESP32-CAM с помощью контакта питания 3,3 В. Вы также можете оставить адаптер FTDI на 5 В и использовать вместо него контакт питания на 5 В.

Я считаю, что 3,3-вольтовая установка более надежна, поэтому я рекомендую ее.

Также необходимо отметить, что между контактом 0 GPIO и землей есть соединение. Это подключение требуется только при программировании ESP32-CAM. Когда вы закончите программировать модуль, вы можете выключить его и удалить это соединение.

Поскольку вам потребуется доступ к кнопке сброса, при работе с ESP32-CAM вы можете использовать перемычки Dupont «мама-мама» вместо макетной платы без пайки.

Программирование с помощью Arduino IDE

Чтобы использовать ESP32-CAM или любой другой ESP32 с Arduino IDE, вам потребуется использовать Менеджер плат для добавления плат ESP32. Это можно сделать, добавив ссылку на файл JSON в текстовое поле Настройки «Additional Boards URL» Arduino IDE.

Подробную информацию о том, как это сделать, можно найти в статье Начало работы с ESP32.

После того как вы это сделаете, вы найдете список плат ESP32 в диспетчере плат Arduino IDE. Выберите плату A-Thinker ESP32-CAM из этого списка.

Загрузка образца скетча

После того, как вы выберете плату A-Thinker ESP32-CAM, в вашу среду разработки Arduino IDE будет загружено несколько примеров скетчей.

В качестве примера мы будем использовать скетч CameraWebServer. Вы можете загрузить его следующим образом:

  • Откройте IDE Arduino
  • Нажмите элемент меню Файл в верхней строке меню.
  • Прокрутите вниз и нажмите Примеры . Откроется подменю.
  • Прокрутите подменю вниз и найдите Примеры для A-Thinker ESP32-CAM.
  • Под этим вы увидите запись для ESP32 . Нажмите на него, и откроется другое подменю.
  • Выберите Камера в этом подменю.
  • Выберите CameraWebServer

Эскиз CameraWebServer очень сложен и состоит из четырех файлов, поэтому я не буду вдаваться в подробности здесь.

Эскиз превращает ESPO32-CAM в полнофункциональную онлайн-камеру с функциями распознавания лиц и множеством элементов управления. Это очень впечатляющая демонстрация возможностей ESP32-CAM!

Прежде чем вы сможете использовать скетч, вам необходимо изменить его для вашей сети и выбрать правильный модуль ESP32.

  • Под строками с надписью «Выберите модель камеры» вам нужно выбрать правильную запись для вашей доски. Я использовал (и самый популярный) вариант CAMERA_MODEL_AI_THINKER
  • .
  • Ниже вы увидите строку для вашего SSID. Введите здесь SSID вашей сети.
  • В строке под SSID введите свой пароль доступа к сети.

Обратите внимание, что ESP32-CAM работает только с сетями Wi-Fi с частотой 2,4 ГГц.

Сохраните эскиз после его изменения.

Тестирование ESP32-CAM

Загрузите скетч в IDE и нажмите кнопку «Загрузить», чтобы скомпилировать и загрузить его в ESP32-CAM через разъем FTDI. Убедитесь, что у вас установлена ​​перемычка между GPIO 0 и землей.

Компиляция скетча может занять некоторое время, это нормально. По завершении вы можете отсоединить USB-кабель, удалить перемычку, а затем повторно подключить USB-кабель, чтобы снова включить питание платы.

Откройте последовательный монитор и убедитесь, что для него установлена ​​скорость передачи данных 115 200 бит/с. Затем нажмите переключатель сброса на модуле ESP32-CAM.

Скопируйте этот адрес и вставьте его в адресную строку веб-браузера. Веб-браузер должен находиться в той же сети, к которой подключена ESP32-CAM.

Теперь вы должны увидеть веб-страницу камеры с рядом элементов управления.

Нажмите кнопку «Начать трансляцию», чтобы начать трансляцию видео. Вы можете изменить размер и частоту кадров видео, используя раскрывающийся список в верхней части экрана.

Поэкспериментируйте со многими функциями веб-сервера камеры и постарайтесь помнить, что все это происходит из модуля за 10 долларов!

Решение проблем с питанием ESP32-CAM

Если у вас есть проблемы с работой ESP32-CAM, первое, что вам нужно проверить, это источник питания. Это также относится и к другим модулям ESP32.

Хотя ESP32 может работать с очень низким током в режиме ожидания, он также потребляет большие всплески тока при работе своего радио, и это может повлиять на производительность как Wi-Fi, так и Bluetooth.

Один из способов определить, есть ли у вас проблема с электропитанием, – это наблюдать за последовательным монитором при запуске ESP32-CAM. Если вы видите сообщение о том, что обнаружено «состояние пониженного напряжения», вероятно, ESP32-CAM пытается потреблять больше тока, чем вы можете обеспечить для него.

Есть несколько способов обойти эту проблему.

Использование активного USB-концентратора

Модуль FTDI, который обеспечивает питание и связь для ESP32-CAM, получает питание от подключенного к нему USB-кабеля. Источником питания здесь является ваш компьютер.

Большинство компьютерных портов USB2 имеют достаточную мощность для удовлетворения требований ESP32-CAM, но некоторые этого не делают.

Другим фактором может быть длина и качество USB-кабеля. В этих кабелях используется очень тонкий провод, и иногда падение напряжения бывает довольно значительным. Часто проблему с понижением напряжения можно решить, просто заменив кабель.

Еще один способ, который сработал у меня в мастерской, — это использование USB-концентратора с питанием. Это позволяет разместить концентратор ближе к ESP32-CAM и использовать более короткий USB-кабель для подключения адаптера FTDI.

Достаточно концентратора USB2, USB3 не обязательно. Концентратор позволяет коммуникационным сигналам проходить к адаптеру FTDI, питая его от собственного источника питания.

Здесь важно использовать концентратор POWERED, так как использование пассивного концентратора USB просто противоречит цели и, вероятно, усугубит ситуацию!

Использование 5-вольтового источника питания

Еще один способ решить проблему пониженного напряжения – подключить ESP32-CAM к контакту питания 5 В вместо 3,3 В.

Если вы используете адаптер FTDI и у вас возникли проблемы с запуском ESP32-CAM, попробуйте переключить питание на 5 В и использовать 5-вольтовый контакт питания.

Как ни странно, я обнаружил, что ESP32-CAM лучше РАБОТАЕТ при напряжении 5 вольт, но его легче ПРОГРАММИРОВАТЬ, используя 3,3 вольта! Однако это может быть уникально для моей установки, поэтому я призываю вас поэкспериментировать.

На изображении выше показан ESP32-CAM на макетной плате без пайки с 5-вольтовым блоком питания. ESP32-CAM уже был запрограммирован с использованием соединительных кабелей типа «мама-мама» и напряжения 3,3 В.

Блок питания макетной платы питается от стандартной 9-вольтовой батареи, что позволяет использовать портативную установку.

Одна из проблем с установкой модуля на макетную плату заключается в том, что это затрудняет легкий доступ к переключателю сброса, однако вы можете получить доступ к переключателю спереди с помощью зубочистки или другого изолированного предмета.

Использование внешней антенны

Еще одна проблема, с которой вы можете столкнуться при использовании ESP32-CAM, – уровень сигнала Wi-Fi.

На печатной плате ESP32-CAM выгравирована антенна. В спецификации от A-Thinker заявлено усиление бортовой антенны на 2,1 дБи.

Если вы находитесь в непосредственной близости от маршрутизатора или точки доступа Wi-Fi, этого должно быть достаточно, однако, если вы отодвинете модуль дальше от источника сигнала, вы можете столкнуться с пропаданием или потерей сигнала.

Решением этого является добавление внешней антенны.

Выбор внешней антенны

Существует множество различных внешних антенн, которые подходят для использования с ESP32-CAM. Требования к внешней антенне следующие:

  • Он должен работать в диапазоне 2,4 ГГц.
  • Он должен иметь разъем U.FL или IPEX MHF или MHF1.

В противном случае вы можете использовать либо гибкую наклейку, либо дипольную антенну.

Однако использование антенны — это не просто подключение ее к розетке. Вам нужно будет внести изменения в плату ESP32-CAM, и для этого потребуется немного пайки. Так что разогрейте паяльник и следуйте этим инструкциям.

Модификация ESP32-CAM для внешней антенны

Плата ESP32 имеет небольшой разъем для антенны в нижней части модуля, очень близко к встроенной антенне.

На приведенной выше диаграмме показано положение этого резистора при использовании внутренней антенны.

С резистором для поверхностного монтажа может быть сложно работать, особенно если вы не привыкли работать с компонентами SMD. Но так как это резистор 0 Ом, вы можете просто использовать вместо него небольшой кусок провода, на самом деле это то, что я сделал, и это сработало нормально.

Обратите внимание, что вы не можете проложить туда провод и оставить исходный резистор, вы можете использовать только одну антенну за раз.

После модификации платы можно установить внешнюю антенну.

Эскиз тестирования антенны

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

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