Апельсиновый осьминог и штатная камера
Я зачем-то заказал 'апельсинку' вместе со штатной камерой. Так пока и не понял, хорошо это, или плохо. В любом случае, расскажу о том, как я с бубном прикрутил ее к 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-запроса реально немного снижает загрузку процессора. Но до предела мощности контроллера 'апельсинки' еще очень далеко, так что на данном этапе можно просто не заморачиваться.
Еще больше интересных статей
Изменения в следующей версии 3D-принтер PonyBot
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
•Порт...
Скорость, температура и перевод RAMPS 1.5 на 24В
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Собери свой Re-D-Bot
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
В представленной вашему вниманию статье, изложена по...
Комментарии и вопросы
Скорее всего тут всё-таки влаж...
Что проверяется (изменяется по...
А что это за тест? Что проверя...
Открыл Creality Printer...
Добрый вечер, может у кого ест...
Сегодня получил заказанный на...
Добрый день, подскажите, пожал...