Кремень КД Реклама
Кремень КМ Реклама

Апельсиновый осьминог и штатная камера

eta4ever
Идет загрузка
Загрузка
20.01.2016
30688
46
RepRap

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

36
Апельсиновый осьминог и штатная камера
Это - вторая часть эпопеи о водружении на китайское поделие (Orange Pi) нужного и полезного принт-сервера. Предыдущий материал представляет собой пошаговое руководство собственно по настройке Debian и установке OctoPrint, а теперь начинаем прикручивать к 'апельсинке' всякие дополнительные полезности.

Я зачем-то заказал 'апельсинку' вместе со штатной камерой. Так пока и не понял, хорошо это, или плохо. В любом случае, расскажу о том, как я с бубном прикрутил ее к OctoPrint и попробую сделать из этого какие-то выводы. К сожалению, у меня тупо нет USB-вебкамеры, чтобы устроить очное сравнение. Когда добуду, тогда все сомнения будут развеяны.

Итак, камера. Представляет собой миниатюрный модуль стандарта CSI с коротким хвостиком. Подключается к соответствующему разъему Orange Pi и не работает. Почему? Оказывается, на Orange Pi PC (самая простая модификация) что-то вокруг этого разъема не доделано, и поэтому камера будет работать только при подключении через прилагаемую плату (в несколько раз больше самого модуля камеры). Это первые грабли, по которым я поплясал. Хорошо, а как заставить камеру работать? В забугорных интернетах обнаруживается ровно 1 (одно) вменяемое руководство по 'подъему' штатной камеры. Проделав все нужные манипуляции, я понял, что камера 'как-то' показывает. Но для работы с ней там используют motion, а в документации к OctoPrint везде описывается mjpg-streamer.
Апельсиновый осьминог и штатная камера
Я потратил уйму времени, но так и не смог запустить mjpg-streamer с этой камерой. Более того, я не нашел ни одного упоминания о том, что кому-то это удалось. Тупик? Нет, мысли еще не закончились. Собственно, а какая OctoPrint'у разница, что генерирует видеопоток? Что мешает подсунуть ему результат деятельности motion? Забегая вперед, скажу: это работает. Поэтому можно описать процесс 'подъема' камеры под Debian на Orange Pi PC подробнее.

Предполагается, что на 'апельсинке' установлена прошивка от loboris, как это описано в первой части.

sudo nano /etc/modules

В редакторе дописываем две строчки в конце

gc2035

vfe_v4l2

Ctrl+O, Enter, Ctrl+X. Этим мы добавляем в автозагрузку нужные модули ядра.

sudo apt-get install motion

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

sudo nano /etc/motion/motion.conf

В конфигурационном файле нужно исправить...

stream_localhost on на stream_localhost off, чтобы можно было подключаться к серверу motion не только с локальной машины.

output_pictures on на output_pictures off, чтобы motion не записывал картинки с камеры.

target_dir /home/orangepi/motion - на всякий случай мы все-таки создадим папку для записи - нет уверенности, что сервер будет без нее корректно работать.

Ctrl+O, Enter, Ctrl +X.

mkir ~/motion && chmod 777 ~/motion

Создание выходной папки для motion

sudo nano /etc/default/motion

Там правим строчку на 'start_motion_daemon=yes'.

Все, настроили. Перезагружаем апельсинку (sudo reboot). Теперь если зайти браузером по адресу http://(адрес апельсинки):8081, то там должна быть гаденькая картинка с камеры, обновляемая хорошо если два раза в секунду.

Теперь приделываем это дело к OctoPrint. Заходим в настройки, Webcam, и там в Stream URL просто вписываем http://(адрес апельсинки):8081. Все, трансляция камеры в OctoPrint настроена.

sudo /etc/init.d/octoprint restart



Не уверен, что нужно, но на всякий случай перезапускаем OctoPrint. Теперь на вкладке Control должна появиться картинка.
Апельсиновый осьминог и штатная камера
Немного поразмышляю. Во-первых, в motion.conf есть настройки разрешения и количества кадров в секунду. Но, насколько я понимаю, с этой камерой они ни на что не влияют. Поэтому мы имеем 800х600 и 2 fps. Во-вторых, камеру неудобно располагать, т.к. она соединяется с апельсинкой коротким (10 сантиметров) шлейфом. За стоимость этого модуля (почти $9, если с доставкой) можно купить USB вебкамеру, которая вряд ли будет хуже, но зато в корпусе, с длинным кабелем и прищепкой. Пока что мне приходит в голову только одно преимущество штатной камеры Orange Pi - это то, что она не задействует USB, а значит, не будет мешаться другим устройствам.

Еще один момент - это особенность работы motion. Он в любом случае анализирует кадры на предмет движения, даже если запись отключена. Это дополнительная нагрузка на процессор, и эту функцию нельзя так просто (картинка с Боромиром) взять, и отрубить. Один вариант - создать пустой (черный) файл маски для детектора движения, чтобы использовалась 'нулевая' область кадра. Второй - отключать детектор движения через http API motion, но для этого нужно обращаться к веб-серверу motion через порт 8080. Например, с помощью следующей команды:

lwp-request http://localhost:8080/0/detection/pause > /dev/null

Здесь для формирования http-запроса применяется утилита lwp-request из пакета libwww-perl. Идею с маской я не пробовал, а отключение детектора с помощью http-запроса реально немного снижает загрузку процессора. Но до предела мощности контроллера 'апельсинки' еще очень далеко, так что на данном этапе можно просто не заморачиваться.

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

36
Комментарии к статье