Если вы прочитали мой предыдущий пост, все подключили и у вас тоже железо, что и у меня – не спешите радоваться, всё только начинается. Теперь нужно всё настроить.
Обновите ваш Raspbian
sudo apt-get update sudo apt-get upgrade
Для начала убедитесь, что ваш EasyCap девайс работает. В этом вам помогут команды lsusb и dmesg | tail:
lsusb dmesg | tail
вывод должен выглядеть примерно так:
Тут видно, что появился новый USB девайс 1b71:3002, что это USBTV007 от fushicai. Дальше нам понадобятся утилиты Video4linux. С помощью v4l2-ctl –list-devices найдите свой EasyCap. В моем случае это просто /dev/video0.
Отлично, запомните (или запишите) результат v4l2-ctl – тот что выглядит как /dev/video0. Теперь используя, например, mplayer можно посмотреть картинку предварительно запустив Иксы:
startx sudo apt-get -y install mplayer mplayer tv:// -tv device=/dev/video0 -hardframedrop
вместо /dev/video0 может быть что-то другое – смотри вывод v4l2-ctl –list-devices.
Тут вас ждёт первая засада: чёрный или зелёный экран.
Проверьте кабели и побалуйтесь с переключателем PAL-NTSC:
Или же вы можете указать PAL или NTSC в командной строчке для mplayer-а
mplayer tv:// -tv device=/dev/video0:norm=NTSC -hardframedrop
Python+OpenCV
Cледующий шаг – это поставить и настроить Python+OpenCV. Python – это скриптовый язык программирования, подробнее о нём можете прочитать например в Wikipedia. Скорее всего Python уже установлен на Raspberry Pi, тем не менее имеет смысл проверить версию, так как я тестировал только с версией 2.7.3.
Далее вам нужно поставить две python библиотеки. Это numpy и OpenCV. Они так же доступны через apt-get.
sudo apt-get install python-numpy sudo apt-get install python-opencv
Numpy – это библиотека для научных вычислений, а OpenCV – это библиотека машинного зрения. Для того, чтобы проверить, что всё установлено и работает как надо, можно написать простенький скрипт на Python-е. Я люблю vim, но вы можете использовать любой другой текстовый редактор, например nano test.py.
Импортируем библиотеки numpy, OpenCV и sys для последующего расширения и работы с системными функциями.
import numpy as np import cv2 import sys
Эта часть инициализирует видеозахват для устройства /dev/video0. Если ваш EasyCap имеет другой номер – используйте его вместо 0. И проверяем, что инициализация прошла успешно.
cap = cv2.VideoCapture(0) if (not cap.isOpened()): exit(0)
Читаем кадр из устройства и проверяем, что чтение прошло успешно.
ret,frame = cap.read() if (not ret): exit(0)
И сохраняем в файл.
cv2.imwrite('/run/test.jpeg',frame)
Запускаем наш Python скрипт, чтобы посмотреть как оно работает:
sudo python test.py
Для того, чтобы посмотреть картинки в консоли, я использую fbi.
sudo apt-get install fbi sudo fbi /run/test.jpeg
_rpi_ws281x
Следующий шаг – это начать работу со светодиодной лентой. На просторах интернета есть разные реализации. Наиболее часто попадающаяся это rpi_ws281x, в частности инструкия на сайте Adafruit ссылается на неё, однако мне так и не удалось её поставить и заставить работать отдельно на Raspberry Pi 2, в то время как на Raspberry Pi B+ всё работает. Спасибо ребятам из pimoroni, за их волшебный unicorn_hat, который решил все проблемы и простому shell скрипту, который устанавливает все необходимое. Просто качаете и запускаете.
Сначала ставим саму библиотеку, как описано здесь:
sudo apt-get install build-essential python-dev git scons swig git clone https://github.com/jgarff/rpi_ws281x.git cd rpi_ws281x/ scons
После того как библиотека скомпилирована и установлена, нужно её немножко подправить и для этого то и понадобится скрипт от ребят из pimoroni.
wget get.pimoroni.com/unicornhat chmod +x unicornhat ./unicornhat sudo pip install unicornhat
Чтобы проверить работоспособность можно запустить один из exmaple-ов.
А в следующей серии вы узнаете как скрестить OpenCV и Adafruit_NeoPixel чтобы управлять светодиодами в зависимости от изображения на экране
Pingback: Ambilight своими руками: Часть 4 – всё вместе | В поисках счастья