Подключаю USB камеру к Raspberry Pi 3 Model BСегодня я задался целью подключить к моей плате Raspberry Pi 3 Model B Web-камеру домашнего уровня, да бюджетного и посмотреть как поведет себя операционная система Raspbian и сама плата. Если я смогу хотя бы вывести изображение (видеоряд), то уже с применением других утилит, к примеру motion, fswebcam, mjpg-streamer сделать что-то стоящее, практичное. Вот ранее я на блоге http://www.ekzorchik.ru делал костыль связки: данной USB камеры и нетбука EEE PC 901 по наблюдению за своим газовым котлом. То решение было собрано на спех, а с учетом что сейчас у меня есть плата Raspberry Pi 3 Model B все должно измениться. Но прежде чем сделать по уму нужно начать с малого и протестировать на отдельных кусках. Ну что же поехали.

  • Либо подключаюсь к плате через VNC
  • Либо подключаю ее физически к монитору, клавиатуре, мыши и проделываю все ниже указанное.

И так сперва подключу usb камеру к плате и поиграюсь:

Текущая система:

pi@raspberrypi:~ $ uname -a && lsb_release -a

Linux raspberrypi 4.4.48-v7+ #964 SMP Mon Feb 13 16:57:51 GMT 2017 armv7l GNU/Linux

No LSB modules are available.

Distributor ID: Raspbian

Description: Raspbian GNU/Linux 8.0 (jessie)

Release: 8.0

Codename: jessie

Когда подключил свою USB камеру к плате Raspberry Pi 3 Model B захотелось отобразить на консоль все диагностические сообщения на это подключение, т. е. как увидела система (Raspbian) данную usb камеру:

pi@raspberrypi:~ $ dmesg -T

[Wed Feb 15 09:12:06 2017] usb 1-1.5: new high-speed USB device number 6 using dwc_otg

[Wed Feb 15 09:12:06 2017] usb 1-1.5: New USB device found, idVendor=046d, idProduct=0804

[Wed Feb 15 09:12:06 2017] usb 1-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=2

[Wed Feb 15 09:12:06 2017] usb 1-1.5: SerialNumber: 125C4680

[Wed Feb 15 09:12:06 2017] media: Linux media interface: v0.10

[Wed Feb 15 09:12:06 2017] Linux video capture interface: v2.00

[Wed Feb 15 09:12:07 2017] usb 1-1.5: Warning! Unlikely big volume range (=6144), cval->res is probably wrong.

[Wed Feb 15 09:12:07 2017] usb 1-1.5: [5] FU [Mic Capture Volume] ch = 1, val = 1536/7680/1

[Wed Feb 15 09:12:07 2017] uvcvideo: Found UVC 1.00 device <unnamed> (046d:0804)

[Wed Feb 15 09:12:07 2017] usbcore: registered new interface driver snd-usb-audio

[Wed Feb 15 09:12:07 2017] input: UVC Camera (046d:0804) as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input4

[Wed Feb 15 09:12:07 2017] usbcore: registered new interface driver uvcvideo

[Wed Feb 15 09:12:07 2017] USB Video Class driver (1.1.1)

pi@raspberrypi:~ $ ls /dev/video0 -lh

crw-rw----+ 1 root video 81, 0 Feb 15 09:12 /dev/video0

pi@raspberrypi:~ $ lsusb | grep Webcam

Bus 001 Device 006: ID 046d:0804 Logitech, Inc. Webcam C250

Для определения параметров с какими может работать данная USB камеру в системе потребуется поставить пакет v4l-utils:

pi@raspberrypi:~ $ sudo apt-get install v4l-utils -y

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

pi@raspberrypi:~ $ v4l2-ctl --list-devices

UVC Camera (046d:0804) (usb-3f980000.usb-1.5):

/dev/video0

Теперь чтобы отобразить параметры текущей USB камеры (Webcam C250):

pi@raspberrypi:~ $ v4l2-ctl --all --device=/dev/video0

Driver Info (not using libv4l2):

Driver name : uvcvideo

Card type : UVC Camera (046d:0804)

Bus info : usb-3f980000.usb-1.5

Driver version: 4.4.38

Capabilities : 0x84200001

Video Capture

Streaming

Extended Pix Format

Device Capabilities

Device Caps : 0x04200001

Video Capture

Streaming

Extended Pix Format

Priority: 2

Video input : 0 (Camera 1: ok)

Format Video Capture:

Width/Height : 640/480

Pixel Format : 'YUYV'

Field : None

Bytes per Line: 1280

Size Image : 614400

Colorspace : SRGB

Flags :

Crop Capability Video Capture:

Bounds : Left 0, Top 0, Width 640, Height 480

Default : Left 0, Top 0, Width 640, Height 480

Pixel Aspect: 1/1

Selection: crop_default, Left 0, Top 0, Width 640, Height 480

Selection: crop_bounds, Left 0, Top 0, Width 640, Height 480

Streaming Parameters Video Capture:

Capabilities : timeperframe

Frames per second: 30.000 (30/1)

Read buffers : 0

и т. д.

Из вывода подчеркнул такую информацию, что камера поддерживает streaming (Потоковое видео), размер картинки 640 на 480, система посредством драйвера uvcvideo может с ней взаимодействовать.

Для простой демонстрации видеозахвата использую утилиту luvcview:

pi@raspberrypi:~ $ apt-cache search luvcview

luvcview - USB Video Class grabber

pi@raspberrypi:~ $ sudo apt-get install luvcview -y
pi@raspberrypi:~ $ luvcview -s 640x480 -i 30 -f YUYV

В момент тестирования видео изображения плата начинается гретьсяluvcview 0.2.6
SDL information:

Video driver: x11

A window manager is available

Device information:

Device path: /dev/video0

Stream settings:

Frame format: YUYV

Frame size: 640x480

Frame rate: 30 fps

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

Смотрю текущую температуру:

pi@raspberrypi:~ $ vcgencmd measure_temp

temp=54.2’C

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

pi@raspberrypi:~ $ vcgencmd measure_temp

temp=60.1’C

Либо получить температуру можно еще и так:

pi@raspberrypi:~ $ cpu=$(</sys/class/thermal/thermal_zone0/temp)

pi@raspberrypi:~ $ echo "$((cpu/1000)) c"

50 c

pi@raspberrypi:~ $ nano cputemp.sh

#!/bin/bash

cpu=$(</sys/class/thermal/thermal_zone0/temp)

echo "$(date) @ $(hostname)"

echo "--------------------------------------"

echo "GPU => $(/usr/bin/vcgencmd measure_temp)"

echo "CPU => $((cpu/1000))C"

pi@raspberrypi:~ $ chmod +x cputemp.sh

pi@raspberrypi:~ $ ./cputemp.sh

Wed Feb 15 14:17:38 MSK 2017 @ raspberrypi

--------------------------------------

GPU => temp=48.9'C

CPU => 48C

, что приложить к ним (процессорам на представленном скриншоте выше) палец невозможно. Замечу, что радиаторы смонтированы.

ВотРадиаторможно, что так ведется себя плата только в момент тестирования, а не в боевом исполнении, что ж нужно по тестировать.

Итого плата успешно заработала с моей USB камерой, но вот если посредством какого бы то ни было приложения производить детектирование видео потока можно столкнуться что без должного охлаждения/обдува Ваша плата может выйти из строя/выключится. В виду того факта что нагревается от обильных вычислений. Так что по аккуратнее нужно быть. А пока собственно всё, чуть позже я вернуть к этой теме, с уважением Олло Александра aka ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru