Метки: OctoPrint, OrangePi  
2016-01-26  
  
Раздел: Настройка, Принт-сервер  
Автор: eta4ever Просмотров: 8 799  
50 комментариев
Апельсиновый осьминог и обычная вебкамера
Добавлено в закладки: 1
Первоначально материал опубликован на 3DToday, но ввиду его DIY-направленности, считаю целесообразным перепост.
Хочу сказать, что штатная CSI-камера “апельсинки” меня несколько разочаровала. Поэтому в дальнем ящике шкафа был откопан пакетик, в котором содержались кишочки старой китайской вебкамеры. Судя по их состоянию, камера подвергалась переделке в “микроскоп” (переворот объектива и приклеивание его какой-то липкой мерзостью). Восстановив статус кво, я быстренько ее настроил, благо, все работает почти как в “малинке”. Естественно, об этом сразу захотелось написать, но просто настройка камеры – это слишком скромно. А тут мне подсказали хорошую идею для реализации – надо, чтобы камера включалась и выключалась средствами OctoPrint – ну, чтобы не греть зря “малинку-апельсинку”.
Поэтому сегодняшняя пошаговая инструкция будет из двух частей – как “поднять” USB-вебкамеру в Debian и как сделать в OctoPrint два пункта меню для управления ею. Описывать процесс я буду на примере Orange Pi, но инструкция применима и к Raspberry Pi практически без изменений (имя пользователя разве что будет другое).
Настройка USB вебкамеры
Исходная позиция – Orange Pi PC с установленным минимальным Debian (сборка от loboris) и развернутым принт-сервером OctoPrint. Далее производим установку необходимого ПО для работы с камерой, почти по инструкции (раздел Webcam), но с некоторыми изменениями.
cd ~
sudo apt-get install subversion libjpeg62-turbo-dev cmake
Устанавливаем необходимые компоненты для сборки mjpg-streamer.
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
Скачиваем актуальный исходный код для mjpg-streamer.
nano Makefile
Ищем “PLUGINS += input_raspicam.so”, закомментируем эту строку (“#PLUGINS += input_raspicam.so”;). Не надо нам штатной “малиновой камеры”. Ctrl+O, Enter, Ctrl+X.
export LD_LIBRARY_PATH=.
make
Компилируем. Камеру пока не подключаем!
ls /dev/video*
Смотрим, что у нас с устройствами. По идее, вывод должен быть пустым. У меня уже было устройство /dev/video0, поскольку подключены модули ядра для штатной камеры. Но дальше я предполагаю, что их нет. Подключаем камеру, повторяем команду. Если появилось /dev/video0, то все должно быть хорошо, идем дальше. Если не появилось, тогда ой. Возможно, камера не поддерживается, или произошел еще какой-то забавный глюк, пишем об этом в комментариях вместе с моделью камеры и выводом lsusb.
sudo ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so"
Пробуем запустить захват видео с минимальными настройками. Если получаем “Unable to set format: 1196444237 res: 640×480 Init v4L2 failed !! exit fatal i: init_VideoIn failed”, то пробуем sudo ./mjpg_streamer -i “./input_uvc.so -y” -o “./output_http.so”. В итоге получаем много буковок, главный признак того, что поток пошел – у нас нет приглашения командной строки (orangepi@OrangePI:~$), а просто мигающий курсор в последней строке.
Заходим браузером по адресу http://(адрес “апельсинки”):8080/?action=stream. Там должна быть картинка с камеры. Если все работает, можно настроить автозапуск mjpg-streamer, но мы этого делать не будем.
Включаем-выключаем
Для начала, некоторые подготовительные действия. Если запущен mjpg-streamer, прибиваем его (Ctrl+C).
sudo usermod -a -G video orangepi
Чтобы разрешить “обычному” пользователю доступ к устройствам video, надо добавить его в соответствующую группу. После этого закрываем сеанс (exit) и подключаемся к Orange Pi заново.
cd ~/
mjpg-streamer/mjpg-streamer-experimental
Переходим в каталог, где у нас собран mjpg-streamer.
sudo make install
Устанавливаем mjpg-streamer в систему. При этом исполняемый файл окажется в /usr/local/bin, плагины – в /usr/local/lib. После установки можно его грохнуть из домашней папки (cd ~ && rm -rf mjpg-streamer).
cd~ && nano webcam-streamer
Создаем скрипт запуска и остановки mjpg-streamer со следующим содержимым (почерпнул отсюда):
#!/bin/bash
Daemon=mjpg_streamer
DaemonBase=/usr/local
DaemonArgs="-i \"input_uvc.so -y\" -o \"output_http.so\""
case "$1" in
start)
eval LD_LIBRARY_PATH=${DaemonBase}/lib ${DaemonBase}/bin/${Daemon} ${DaemonArgs} >/dev/null 2>&1 &
echo "$0: started"
;;
stop)
pkill -x ${Daemon}
echo "$0: stopped"
;;
*)
echo "Usage: $0 {start|stop}" >&2
;;
esac
Ctrl+O, Enter, Ctrl+X.
chmod +x webcam-streamer && mv webcam-streamer /usr/local/bin/
Делаем скрипт исполняемым и переносим его в нужное место.
nano ~/.octoprint/config.yaml
Теперь прикручиваем запуск скрипта к OctoPrint. Ищем раздел system, у меня он был пустой (с фигурными скобками {}). Если у вас он не пустой, значит, вы там что-то уже настраивали, не так ли? В итоге как-то так:
system:
actions:
- action: streamon
command: /usr/local/bin/webcam-streamer start
confirm: false
name: Start stream
- action: streamoff
command: /usr/local/bin/webcam-streamer stop
confirm: false
name: Stop stream
Ctrl+O, Enter, Ctrl+X.
sudo /etc/init.d/octoprint restart
Перезапускаем OctoPrint. Заходим в веб-интерфейс (http://(адрес “апельсинки”):5000), где у нас в верхней части окна появилось меню System, а в нем – два пункта – Start stream и Stop stream. Но они пока что бесполезны, надо еще прописать в настройках (Settings – Webcam – Stream URL) путь к потоку (http://(адрес”апельсинки”):8080/?action=stream).
А вот теперь все должно работать. Нажимаем System – Start stream, перезагружаем страницу, на вкладке Control должна появиться картинка с камеры. Ну и, соответственно, по Stop stream mjpg-streamer отключается. На этом, пожалуй, все. Вопросы, замечания, предложения приветствуются.
P.S. На Raspberry Pi это все должно работать, но есть одно “но”. Если у вас дистрибутив OctoPi (сборка с предустановленным OctoPrint), то для управления веб-камерой там используется дополнительный демон, который будет упорно эту камеру включать, если она выключена. С ним придется сражаться.
P.P.S. Запущенный mjpg-streamer у меня “кушает” 30-70% одного (из четырех) ядра Orange Pi PC.
Ссылка на форум “обсуждение Orange Pi”
Ссылка на форум “обсуждение OctoPrint на Raspberry Pi“
50 комментариев на «Апельсиновый осьминог и обычная вебкамера»
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
Несколько шагов к качественной 3D печати       Подключение Pi камеры к принт-серверу OctoPrint на Raspberry Pi
Отличная статья. По себе скажу, всё это кажется абракадаброй ровно до того момента пока сам не возьмёшься за применение
Теперь несколько вопросов.
1. Почему меню System должно быть пустым? У меня уже были пункты.
2. Как посмотреть загрузку процессора?
3. Покажите snapshot с этой камеры. Интересно качество картинки.
На подходе такая же моя статья, но я её не стал называть “Демоны Raspberry Pi”, потому что всё оказалось намного проще, чем описано на путанных форумах
Спасибо. Я старался все расписать подробно. Если чуть-чуть понимать, как работает linux (особенно все, что из дебиана растет, те же бубунты), то вообще все просто.
1. Если у вас он не пустой, значит, вы там что-то уже настраивали, не так ли?
В чистом Octoprint меню System пустое.
2. Поставьте htop (sudo apt-get install htop), им удобно смотреть загрузку.
3.Качество картинки с этой камеры отвратное, как и она сама. Сегодня сделаю картинку, попозже. Сейчас все разобрано.
Спасибо за ответы. Меню изначально (до моего вмешательства) было такое
Так, а вы сборку OctoPi используете?
Настроенный образ операционки с OctoPi для Raspberry Pi. Вот тут качал http://mirror.tsone.net.uk/octopi/ А вы не пробовали этот образ устанавливать на Orange Pi?
Вот код этого меню из config.yaml, может пригодится
– action: shutdown
async: true
command: sudo shutdown -h now
confirm: You are about to shutdown the system.
ignore: true
name: Shutdown
– action: reboot
async: true
command: sudo shutdown -r now
confirm: You are about to reboot the system
ignore: true
name: Reboot
– action: restart
async: true
command: sudo service octoprint restart
confirm: You are about to restart OctoPrint
ignore: true
name: Restart OctoPrint
У меня ещё и Cura установлена. А на вашем есть?
Мне кажется у меня htop неправильно показывает загрузку
Картинка обрезалась, непонятно ничего толком. Полностью ее можно как-нибудь глянуть?
Вот необрезанная картинка
Да, фигня какая-то. А просто top что кажет?
Да он убогий какой-то
О, вот спасибо за статью. Правда вебка у меня нашлась другая но по качеству не лучше :). На днях буду заниматься настройкой апельсина. А моделью напечатанного корпуса для апельсина не поделитесь?
Я вот здесь собираю все материалы по апельсинке: https://3deshnik.ru/forum/viewtopic.php?f=5&t=81
Конкретно корпус вот этот: http://www.thingiverse.com/thing:1068457
Печатал ABS’ом Sirius, напилинг минимальный (главным образом, чтобы карточка свободно вставлялась-вынималась).
Не, малиновая сборка не должна на апельсине работать.
Выключение и перезапуск полезны, надо себе добавить.
Куру можно прикрутить, не заморачивался.
Картинка с “камеры”
Не плохо НаноСердце получилось Для этих камер свет нужен хороший и картинка будет норм.
Да, чувствительность у вебок – алес капут.
Nanoheart спаял (заказывал плату+рассыпуху), Teacup в первом приближении собрал,
ушамидвижками пошевелил, буду к “дровам” прилаживать.Так и не появилось у меня /dev/video0
вот этот кусок хлама по lsusb:
Bus 008 Device 003: ID 18ec:3299 Arkmicro Technologies Inc. Webcam Carrefour
Надо наверно выкинуть ее и купить нормальную камеру.
Хм. А можно еще отключить камеру, потом включить и вывод dmesg?
Встречаются жалобы бубунтоводов на такую камеру, если погуглить, да.
Камера заработала после обновления ядра. Даже удалось получить с нее изображение до выполнения sudo make install. После этой команды камера при помощи /usr/local/bin/webcam-streamer start не работает.
Octoprint работает, видит принтер и управляет им но в веб интерфейсе упорно не хочет появляться кнопка System. Если добавляю строки из статьи в config.yaml то octoprint не стартует и “возмущается” на эти строки.
Вечером продолжу копать.
Там есть какое-то западло с config.yaml, у меня не с первого раза взлетело. То ли отступы по фен-шую должны быть, то ли еще чего. Я могу попробовать свой файл выковырнуть, но только ближе к вечеру.
Я только вечером доберусь до своего апельсина, так-что жду.
Участок system: https://yadi.sk/i/17NqsKwMocEKV
Конфиг победил (все пришлось построково копировать), а вот поднятие камеры – нет. Если запускать все с каталога где собран mjpg-streamer (sudo ./mjpg_streamer -i “./input_uvc.so” -o “./output_http.so”)то по адресу http://(адрес «апельсинки»):8080/?action=stream есть изображение с камеры.
Делаю sudo make install, все раскидывается по нужным каталогам с правами.
Создаю webcam-streamer делаю его исполняемым и перемещаю в /usr/local/bin/
Пробую стартовать как из octoprint так и с командной строки при помощи команды /usr/local/bin/webcam-streamer start
И ничего нет ни по адресу ни в октопринт. В top тоже нет намека на mjpg_streamer.
Продолжаю искать проблему…
Так. А от обычного пользователя (без sudo) из каталога, где он собран, стартует?
Стартует от обычного пользователя
Косяк в скрипте запуска. Надо убрать ключ -d, чтобы осталось
DaemonArgs=”-i \”input_uvc.so -y\” -o \”output_http.so\”
Всем привет! все делаю по инструкции, но у меня не заходит в папку по этой комманде…
cd mjpg-streamer/mjpg-streamer-experimental
папка не найдена пишет
Может где-то есть готовая сборка с октопринтем и настроенной камерой?
в линуксе не особо силен((
git clone https://github.com/jacksonliam/mjpg-streamer.git
Нормально проходит?
Сейчас попробовал, папки создаются как в инструкции. Готовой сборки, к сожалению, нет.
Вот что выходит…
orangepi@orangepi:~$ sudo apt-get install subversion libjpeg62-turbo-dev cmake
[sudo] password for orangepi:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libjpeg62-turbo-dev
orangepi@orangepi:~$ git clone https://github.com/jacksonliam/mjpg-streamer.git
fatal: destination path 'mjpg-streamer' already exists and is not an empty directory.
orangepi@orangepi:~$ ^C
orangepi@orangepi:~$ cd mjpg-streamer/mjpg-streamer-experimental
-bash: cd: mjpg-streamer/mjpg-streamer-experimental: No such file or directory
orangepi@orangepi:~$ git clone https://github.com/jacksonliam/mjpg-streamer.git
fatal: destination path 'mjpg-streamer' already exists and is not an empty directory.
orangepi@orangepi:~$
Жаль что нет готовых образов((( мне кажется так намного легче для установки окты и всего для 3д принтера… вроде можно средствами акрониса сделать образ… и сразу выложить на яндекс диск или любое облако
Там не акронисом, там просто raw-образ карты надо сделать, и всего делов. Но у меня сейчас нет настроенного образа с камерой, я с Armbian теперь экспериментирую.
Можно вот так сделать, и результат запостить (вход в каталог mjpg-streamer, вывод содержимого каталога)?
cd mjpg-streamer
ls
Вот что вышло
login as: orangepi
orangepi@192.168.1.76's password:
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.4.39 armv7l)
* Documentation: https://help.ubuntu.com/
Last login: Mon Apr 11 23:39:14 2016 from desktop-ksli4dj
orangepi@orangepi:~$ cd mjpg-streamer
orangepi@orangepi:~/mjpg-streamer$ ls
get?download=36:mjpg-streamer-rpi mjpg_streamer output_file.so
input_file.so mjpg-streamer output_http.so
input_uvc.so mjpg-streamer.log output_udp.so
Makefile mjpg-streamer.sh
orangepi@orangepi:~/mjpg-streamer$
Ну, ок. Находясь в этом каталоге продолжаем по инструкции – редактируем Makefile (nano Makefile…) и далее.
При вводе команды “nano Makefile”
открывается редактирование файла и там пусто… я добавил строку
#PLUGINS += input_raspicam.so
и далее делал все по инструкции..
видимо откудато нужно качать этот исходный код… а откуда хрен знает и как потом его скопировать в папку..
эхх далек я от извращенного линукса((
orangepi@orangepi:~/mjpg-streamer$ nano Makefile
orangepi@orangepi:~/mjpg-streamer$ export LD_LIBRARY_PATH=.
orangepi@orangepi:~/mjpg-streamer$ make
make: *** No targets. Stop.
orangepi@orangepi:~/mjpg-streamer$ ls /dev/video*
ls: cannot access /dev/video*: No such file or directory
Блин. Какой-то фундаментальный косяк, я его никак понять не могу. У вас какая сборка линукса вообще, откуда скачанная?
Lubutno 14 вроде.. но при вводе команды
cat /etc/issue.net
пишет:
Ubuntu 14.04.4 LTS
Я уже не помню откуда качал… с 4пда вроде..
Ладно не мучайтесь, хрен с этой камерой… буду ждать вдруг кто выложит готовую сборку.. Спасибо за помощь!
А, понятно. Я теперь мучаться не буду, инструкция проверена только для сборки Debian minimal от loboris. Ну, на Armbian тоже должна работать, а вот что касается “посторонней” убунты (хоть она из дебиана и вышла) – ничего гарантировать не могу. Линуксы для китайских плат – это жесть и капец, там все может быть по-разному.
у меня как раз китайская ардуина с дебильным контроллером CH341g
Debian minimal от loboris у меня не видела ардуину даже с установкой драйверов((
делал так же по инструкции с 3дешника..
Для этого нужно обновление модулей ядра сделать, у меня в статье об этом было.
Но вообще, считаю, что не стоит возиться – надо ставить Armbian, там меньше дурацких косяков.
Про Armbian я на тридэшник не репостил, вот http://3dtoday.ru/blogs/eta4ever/orange-octopus-junior-and-penguin-stuff/
Для OPi PC и OPi One дистрибутив один и тот же.
О! спасибо, попробую
Armbian установил =) теперь проблема с запуском октопринта
все делаю по вашей инструкции Апельсиновый осьминог
и при вводе команды
~/OctoPrint/venv/bin/octoprint
выходит ошибка: You should not run OctoPrint as root!
все нашел проблему)) я под пользователем root зашел))
Чет у меня после редактирования файла окта не запускается
если удалить все с раздела system то окта сразу включается.. прям проклятье какое то с этой вебкой((
accessControl:
salt: fRCSKfEeMeOxYUkEWRyIWUoK4LspbrCx
api:
key: 81D746015B244ADE99F9486AAFB6471A
appearance: {}
feature: {}
gcodeViewer: {}
plugins:
discovery:
upnpUuid: 16c27fcc-d3fe-49f8-b5da-1654fc0bff77
softwareupdate:
_config_version: 4
checks:
octoprint:
checkout_folder: null
printerParameters: {}
printerProfiles:
defaultProfile:
axes:
e:
inverted: false
speed: 300
x:
inverted: false
speed: 1600
y:
inverted: false
speed: 1600
z:
inverted: false
speed: 200
color: green
extruder:
count: 1
nozzleDiameter: 0.4
offsets:
- - 0.0
- 0.0
heatedBed: true
id: _default
model: ZAV MAX-R
name: Default
volume:
depth: 200.0
formFactor: rectangular
height: 232.5
origin: lowerleft
width: 200.0
serial:
autoconnect: true
baudrate: 250000
port: /dev/ttyUSB0
timeout: {}
server:
commands: {}
firstRun: false
secretKey: b1wWShHGtyVdbjkyTBzt8D8yAS7DYf1V
system:
actions:
- action: streamon
command: /usr/local/bin/webcam-streamer start
confirm: false
name: Start stream
- action: streamoff
command: /usr/local/bin/webcam-streamer stop
confirm: false
name: Stop stream
temperature: {}
webcam:
watermark: false
Эх… а у меня печалька…
В итоге… удалось завести свою дреееевнюю камеру с низким разрешением… но вместо картинки получаю “шум”
Подключил другую камеру… картинка нормальная…
короче нужна камера
Значит, у меня еще не настолько барахляная камера была, с которой я начинал экспериментировать (на заглавной картинке статьи). Она хоть показывала
Сейчас нечто более цивильное, но столь же “дорогостоящее” использую, оно и по качеству, и по fps куда больше радует.
Если было изображение… значит камера была явно хорошая…
На работе попробовал разные камеры (5 шт.) отказалась работать только моя… древняя… все остальные работают… и даже очень прилично…