Сегодня я задался целью подключить к моей плате 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.