Pull to refresh

Как с помощь Raspberry PI вырастить фасоль, и снять TimeLapse видео

Reading time4 min
Views28K
Приветствую вас господа!


Как-то раз, ребенку в школе задали вырастить фасоль, чтобы посмотреть во что она прорастает и как из боба вырастает растение.
У меня сразу возникла идея сделать TimeLapse видео, как оно там все растет.
Но КАК это сделать, имеющийся фотоаппарат не позволяет собой управлять гад.
Наличие любопытной кошки — усугубляло ситуацию…
В шкафу тем временем пылился без дела подарок друзей — Raspberry PI…
в посте нет Rocket science, просто описание задачи, пути её решения и итоговый результат.


Собственно описание задачи


  1. надо снять как растет фасоль
  2. все опыты делать на окне — растениям нужно солнце
  3. кошка зверь любопытный и есть шанс что она все развалит
  4. сколько это продлится — не очень понятно
  5. это явно одноразовая задача


фото не подходит, в загашнике нашлась вебкамера Logitech C200, для защиты от кошки решил соорудить полку на окне (чтоб вредина не достала), единственное свободное окно нашлось на кухне, как следствие — рядом которым можно делать всё нужное.
стационарный комп еще и гудит прилично, спасть с таким в одной комнате не очень приятно.

вспомним Филеаса Фогга, и одну из его цитат
Используй то, что под рукою, и не ищи себе другое. (16 серия, «В Новом Орлеане»)


и тут я вспоминаю что у меня есть raspberry pi ;)
и его можно использовать вместо большого компа!
и это полноценный Linux комп!

вот наш герой на посту


что у PI очень удобно, то чтобы он перестал быть медиаплеером (raspbnc) и стал просто Linux (raspbian)
достаточно просто сменить SD карточку (благо этого добра хватает, а 2 гига ему за глаза)

т.е. по инструкции с сайта ставим на карточку распбиан, подключаем к телевизору, конфигурим (без графики)
отключаем от телевизора, все остальные действия делаем по ssh,

так как время которое это все будет работать — не известно, будем считать что все плохо, и писать на внешнюю флешку

на полочке нет интернета!, подходящей wifi карточки тоже нет,
ну ладно, пусть стоит автономно, будем иногда выдергивать флешку и смотреть что получилось.
т.е. надо все заранее сконфигурировать и сделать эту штуку максимально автономной

далее ищем пакет который умеет снимать скриншоты с вебкама
находим fswebcam, ставим его из репозитория, проверяем, работает!

дальше пишем скрипт, который пускается из крона 1 раз в минуту!
скрипт который дергаем из крона do.sh
#!/bin/sh
path='/mnt'

killall blink1.sh >/dev/null

sudo sh -c 'echo 1 >/sys/class/leds/led0/brightness'

if [ -c /dev/video0 ]
then
   fswebcam -q -c /home/pi/plant/config.cfg --flip v $path/plant/`date +%Y%m%d-%H%M%S.jpg`
fi

sudo sh -c 'echo 0 >/sys/class/leds/led0/brightness'

/home/pi/plant/blink1.sh &
sync


скрипт который мигает лампочкой blink1.sh
#!/bin/sh
sudo sh -c 'echo none >/sys/class/leds/led0/trigger'

n=1
while test $n -le 30 
do
    sudo sh -c 'echo 1 >/sys/class/leds/led0/brightness'
    sleep 0.5
    sudo sh -c 'echo 0 >/sys/class/leds/led0/brightness'
    sleep 0.5

    n=$(($n + 1))
done 

n=1
while test $n -le 15 
do
    sudo sh -c 'echo 1 >/sys/class/leds/led0/brightness'
    sleep 0.25
    sudo sh -c 'echo 0 >/sys/class/leds/led0/brightness'
    sleep 0.25
    sudo sh -c 'echo 1 >/sys/class/leds/led0/brightness'
    sleep 0.25
    sudo sh -c 'echo 0 >/sys/class/leds/led0/brightness'
    sleep 0.25
    n=$(($n + 1))
done



собственно основной скрипт переключает лампочку в режим управления юзером (по умолчанию она мигает при обращении к флешке, мы же используем ее как индикатор)
далее он делает фото нашего растения
а дальше вызывает скрипт который мигает лампочкой

скрипт — чистая мигалка, для удобства пользователя
30 сек с частотой 1 раз в секунду
15 сек с частотой 2 раза в секунду
а потом гаснет
этот скрипт гарантированно работает < 60 секунд, он перезапускается из основного скрипта раз в минуту.

по индикатору видно в каком состоянии сейчас PI (и когда наконец можно вытянут временно флешку)

осталось мелочь,
полочка была сделана из отходов игры Каркассон (остались картонные листы с дырками)
которые были с помощью скотча собраны в достаточно для нашей задачи крепкую полочку
и на ней был сооружено место где будет стоять предмет, и где крепить камеру!

из ниток были сделаны веревки необходимой длины, и это все повешено на окно!

выглядит это всё



вот «предметный стол» крупнее



это все было оставлено на несколько дней, ночью включал лампочку…

финальная обработка



по окончании процесса получили папку с кучей фото,
отобрали нужный диапазон

а делее применяем магию ffmpeg (теперь известного как avconv)

avconv -f image2 -r 30 -i src/f%04d.jpg -c:v libx264 -r 30 out2.mp4


этот волшебный скрипт берет из папки src файлы с именами f0001.jpg и дальше, и делает .mp4 файл с частотой 30 кадров в секунду.
файлы из вида YYYYMMDD-HHMM.jpg в fNNNNN.jpg переименовываем простейшим скриптом, тут эт не очень интересно.

ну и в итоге вот что получилось




трудности и выводы



о чем не думалось в начале,

по странной причине вебкамера на PI не захотела снимать кадры 640x480, только 320x200, может питания мало?
без мигалкой светодиодом было не понятно работает ли оно!
очень рекомендую делать индикатор работы
растение в итоге вылезло из кадра, надо изучать вопрос заранее и делать соответствующее оборудование
солнце — ну ОЧЕНЬ яркое, камеру клинит ;)

по хорошему надо было бы, взять нормальную камеру
правильное постоянное освещение
поставить правильно росток
правильно смонтировать (добавить музыку)

но и то что получилось очень познавательно!
рост идет и ночью!

Raspberry PI очень удобная штука для домашних игрушек!

p.s. про ошибки пожалуйста для начала в личку!
p.p.s. задавайте вопросы!
Tags:
Hubs:
+10
Comments11

Articles

Change theme settings