Какой рейтинг вас больше интересует?
|
Диетический апельсиновый осьминог и USB камера - автомобильный видеорегистратор2017-06-11 19:23:50 (читать в оригинале)Продолжение статьи Апельсиновый диетический осьминог. Octoprint. В комментариях к статье просили рассказать как привязать USB камеру к серверу печати. Своей USB вебкамеры у меня никогда не было. Не нужная мне игрушка. Однако, с моей и с машины супруги в хозяйстве завалялась пара старых автомобильных видеорегистраторов. Регистратор с машины супруги Lexand погиб из-за раздувшейся батарейки, выгнуло плату и где-то что-то отвалилось (об этом я узнал уже после замены батарейки, регистратор стал виснуть), второй с моей прошлой машины - Highscreen, с машиной продал кабель питания, а кабель был хитрый, только с ним регистратор вставал автоматически на запись. Тоже не сразу понял почему регистратор на запись не встает, поменял батарейку, но бесполезно. Супруге и мне купили новые регистраторы, эти давно валялись дома. Lexand удалось оживить, прогрев воздушным паяльником процессор и обвязку . Многие авто видео регистраторы умеют работать кард ридером и веб камерой. Решил воспользоваться данной возможностью и попробовать прикрутить камеру к апельсинке. Из двух регистраторов только Lexand захотел стать вебкой. Highscreen упорно прикидывался card reader-ом. Единственный USB порт на Orange Pi Zero занят принтером, зато на плате есть 13pin гребенка под плату расширения, на которой есть выходы двух USB. Решил ей и воспользоваться. Вот распайка гребенки. 1x13 Header 1 5V 2 GND 3 USB-DM2 4 USB-DP2 5 USB-DM3 6 USB-DP3 7 LINEOUTR 8 LINEOUTL 9 TV-OUT 10 MIC-BIAS 11 MIC1P 12 MIC1N 13 CIR-RX Первый вывод рядом с разъемом ethernet. Обрезал usb кабель, к кабелю припаял разъемчик маму. Красный плюс, черный минус, белый и зеленый с данными. Их запаял как получится, с первого раза угадал. Вариантов то все равно 2, и регистратор или будет, или не будет работать. Ставить поддержку камеры решил на DietPi и Orange Pi с 512Мб памяти. На этой моей апельсинке радиатор побольше. Начинаем установку. Как обычно через Putty заходим на апельсинку, под пользователем octoprint. Инструкцию взял на официальной страничке октопринта. sudo apt-get update && apt-get upgrade cd ~ sudo apt-get install subversion libjpeg8-dev imagemagick libav-tools libv4l-dev cmake При попытке установить получаем сообщение Package libjpeg8-dev is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: libjpeg62-turbo-dev Пробуем еще раз sudo apt-get install subversion libjpeg62-turbo-dev imagemagick libav-tools libv4l-dev cmake Ждем долго, около 10 минут. git clone https://github.com/jacksonliam/mjpg-streamer.git cd mjpg-streamer/mjpg-streamer-experimental export LD_LIBRARY_PATH=. make За пару минут все скомпилировалось. Для пробы запускаем sudo ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so" Фантастика, запустилось. Заходим по адресу http://IP адрес апельсинки/?action=stream Но изображение какое-то всё глючное, с непонятными артефактами, но оно есть. Хорошее начало! Попробовал поэкспериментировать с ключами. mjpg_streamer выдает подсказку если где-то ошибиться в ключе. Интересуют нас ключи -r и -f В итоге после экспериментов камера нормально запустилась в HD режиме -r HD sudo ./mjpg_streamer -i "./input_uvc.so -r HD -f 5" -o "./output_http.so" Эксперименты с FPS дали приемлемое значение -f 10 sudo ./mjpg_streamer -i "./input_uvc.so -r HD -f 10" -o "./output_http.so" Не смотрите не перевернутую картинку, мне регистратор так было удобнее поставить. Для того чтоб пользователь octoprint имел доступ к видеокамере, его надо включить в группу Video sudo usermod -a -G video octoprint После этого надо выйти из системы и заново войти под пользователем octoprint Проверяем cd mjpg-streamer/mjpg-streamer-experimental ./mjpg_streamer -i "./input_uvc.so -r HD -f 10" -o "./output_http.so" Теперь работает без sudo, отлично. Пол дела сделано. В качестве варианта запуска на официальной страничке октопринта предложено запускать с ключиком -w ./www ./mjpg_streamer -i "./input_uvc.so -r HD -f 10" -o "./output_http.so -w ./www" Проверил, запускается. И ладно. Для того чтоб иметь возможность запускать видео прямо из октопринта, создадим несколько скриптов. Честно скопипастил их из официального мануала cd ~ cd OctoPrint/scripts nano webcam Внутри скрипта пишем (копипастим внутрь) #!/bin/bash # Start / stop streamer daemon case "$1" in start) /home/octoprint/OctoPrint/scripts/webcamDaemon >/dev/null 2>&1 & echo "$0: started" ;; stop) pkill -x webcamDaemon pkill -x mjpg_streamer echo "$0: stopped" ;; *) echo "Usage: $0 {start|stop}" >&2 ;; esac Сохраняем готовый скрипт по CTRL+O Выходим из nano по CTRL+X nano webcamDaemon Внутри скрипта пишем (копипастим внутрь) #!/bin/bash MJPGSTREAMER_HOME=/home/octoprint/mjpg-streamer/mjpg-streamer-experimental MJPGSTREAMER_INPUT_USB="input_uvc.so" MJPGSTREAMER_INPUT_RASPICAM="input_raspicam.so" # init configuration camera="auto" camera_usb_options="-r HD -f 10" camera_raspi_options="-fps 10" if [ -e "/boot/octopi.txt" ]; then source "/boot/octopi.txt" fi # runs MJPG Streamer, using the provided input plugin + configuration function runMjpgStreamer { input=$1 pushd $MJPGSTREAMER_HOME echo Running ./mjpg_streamer -o "output_http.so -w ./www" -i "$input" LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "$input" popd } # starts up the RasPiCam function startRaspi { logger "Starting Raspberry Pi camera" runMjpgStreamer "$MJPGSTREAMER_INPUT_RASPICAM $camera_raspi_options" } # starts up the USB webcam function startUsb { logger "Starting USB webcam" runMjpgStreamer "$MJPGSTREAMER_INPUT_USB $camera_usb_options" } # we need this to prevent the later calls to vcgencmd from blocking # I have no idea why, but that's how it is... vcgencmd version # echo configuration echo camera: $camera echo usb options: $camera_usb_options echo raspi options: $camera_raspi_options # keep mjpg streamer running if some camera is attached while true; do if [ -e "/dev/video0" ] && { [ "$camera" = "auto" ] || [ "$camera" = "usb" ] ; }; then startUsb elif [ "`vcgencmd get_camera`" = "supported=1 detected=1" ] && { [ "$camera" = "auto" ] || [ "$camera" = "raspi" ] ; }; then startRaspi fi sleep 120 done Сохраняем готовый скрипт по CTRL+O Выходим из nano по CTRL+X chmod +x /home/octoprint/OctoPrint/scripts/webcam chmod +x /home/octoprint/OctoPrint/scripts/webcamDaemon Далее cd ~ cd .octoprint nano config.yaml Конфиг практически дефолтный accessControl: salt: y0pnvQf2Xdv3wKIm1Hu7onQJUwibqXNe api: key: 2BE34DF7924C400C95A71825CBE806F5 plugins: announcements: _config_version: 1 channels: _blog: read_until: 1495612800 _important: read_until: 1478614200 _octopi: read_until: 1490979600 _plugins: read_until: 1495238400 _releases: read_until: 1496325600 discovery: upnpUuid: 084b7f82-8a71-4a98-a80f-abb4a2b5170a softwareupdate: _config_version: 5 check_providers: navbartemp: navbartemp printerProfiles: default: _default serial: autoconnect: true baudrate: 250000 port: /dev/ttyUSB0 server: firstRun: false secretKey: P3ZKW0v4hEcIUF6wr8LFnXYFHuz5C30L seenWizards: corewizard: null cura: null softwareupdate: null К концу конфига дописываем копипастом system: actions: - action: streamon command: /home/octoprint/OctoPrint/scripts/daemon start confirm: false name: Start video stream - action: streamoff command: /home/octoprint/OctoPrint/scripts/daemon stop confirm: false name: Stop video stream Сохраняем конфиг по CTRL+O Выходим из nano по CTRL+X Перезапускаем OctoPrint sudo service octoprint restart После перезапуска в верхней части октопринта появится меню system, в котором будет 2 пункта Start video stream Stop video stream Стандартные скрипты рабочие 100%, но написаны под универсальный вариант, в том числе и под камеру распберри пи. Я слегка оптимизировал скрипт, все лишнее убрал, и вместо 2х скриптов сделал всего 1. cd ~ cd OctoPrint/scripts nano streamer Внутри скрипта пишем (копипастим внутрь) #!/bin/bash # Start / stop streamer MJPGSTREAMER_HOME=/home/octoprint/mjpg-streamer/mjpg-streamer-experimental MJPGSTREAMER_INPUT_USB="input_uvc.so" # init configuration camera_usb_options="-r HD -f 10" # runs MJPG Streamer, using the provided input plugin + configuration function runMjpgStreamer { input=$1 pushd $MJPGSTREAMER_HOME echo Running ./mjpg_streamer -o "output_http.so -w ./www" -i "$input" LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "$input" # LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.sow" -i "$input" popd } # starts up the USB webcam function startUsb { logger "Starting USB webcam" runMjpgStreamer "$MJPGSTREAMER_INPUT_USB $camera_usb_options" } case "$1" in start) startUsb >/dev/null 2>&1 & echo "$0: started" ;; stop) pkill -x mjpg_streamer echo "$0: stopped" ;; *) echo "Usage: $0 {start|stop}" >&2 ;; esac Сохраняем конфиг по CTRL+O Выходим из nano по CTRL+X chmod +x /home/octoprint/OctoPrint/scripts/streamer cd ~ cd .octoprint nano config.yaml К концу конфига дописываем копипастом system: actions: - action: streamon command: /home/octoprint/OctoPrint/scripts/streamer start confirm: false name: Start video stream - action: streamoff command: /home/octoprint/OctoPrint/scripts/streamer stop confirm: false name: Stop video stream Сохраняем конфиг по CTRL+O Выходим из nano по CTRL+X Перезапускаем OctoPrint sudo service octoprint restart Все точно так же работает. Теперь заходим на октопринт и в плагинах настраиваем адрес откуда будет браться потоковое видео В Stream URL прописываем http://ip_адрес_апельсина:8080/?action=stream У меня это http://192.168.0.2:8080/?action=stream Для того чтоб проверить работоспособность, предварительно стартуем stream через меню system После этого можно нажать на кнопку test и посмотреть видео Камера у меня перевернута вверх ногами. Для таких деятелей как я в настройке плагина есть галка Flip webcam vertically Не забываем сохранять настройки плагина при выходе. Теперь при входе во вкладку Control можно наблюдать что делает принтер. Для чего я прикрутил регистратор веб камеру ? Было интересно прикрутить и попробовать. В конце концов опыт. Буду ли я ей пользоваться - навряд ли. А вот теперь немного фото того как это выглядит Из заметных минусов: с включенной камерой апельсин стал сильнее греться. На время испытаний к нему притулил вентилятор. Если использовать постоянно - неплохо бы подумать над активным охлаждением. Именно этот видеорегистратор немного глючный, изображение часто отваливается, помогает ресет регистратора. В остальном я неплохо провел день, пока на улице стоит ужасная погода. Подробнее...
|
Категория «SEO»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.