3 posts in this topic

Зашел я как то пару месяцев назад в зоомагазин и увидел Дегу. Это вроде как чилийские белочки (хотя смахивают на крыс ))) ). Зверьки шустрые и интересные. В общем теперь я заядлый деговод ))) 3 самки + 1 самец. На текущий момент уже 5 мелких спиногрызов. Днем бегают. Ночью спят. Забавные.
 
Это предыстория.
 
Собственно почему тут пишу:
 
Давно давно хотел организовать автоматизацию просмотра/кормления/играния с мелкими животными. Но тогда (давно) не было ардуино. А сейчас есть )))
 
На текущий момент:
1 - Есть raspberry pi 2 с родной камерой. Камера прилеплена к двум сервам. К интернету подключена через WiFi-свисток.
2 - Сервами с прилепленной на них камерой шевелит ардуина через Multiservo Shield.
3 - на клетку навесил лазер + фоторезистор. Лазерный луч проходит через барабан, в котором бегают белки. На основании прерывания луча получаю данные о кручении барабана.
 
В итоге получилась такая вот связка:
 
** Ардуина **
Ардуина мониторит команды, приходящие из Serial. Если пришла команда поворота камеры по X - крутим одной сервой на нужный угол. Если пришла команда поворота камеры по Y - крутим другой сервой. Как только обработали команду поворота той или иной сервой - кидаем обратно в Serial отбойку, что поворот успешно осуществлен.
 
Ардуина мониторит фоторезистор. Как только фиксирую, что барабан прокрутился - кидаю в Serial информацию о этом.
 
** Raspberry pi 2 **
Подключена по USB к ардуине. Компиляцию скетчей выполняю тут же. Малинка слушает USB-порт, на который навешана ардуина. Raspberry делает сразу несколько вещей:
1 - Постоянно мониторит базу данных удаленного сайта (http://degu.live) на предмет записей, говорящих о том, что надо повернуть камеру. Ну то есть когда на сайте кто то нажимает на кнопку поворота камеры - в базу данных пишется строка, что нужно выполнить соответствующую команду. И этой строке присваивается признак, что она еще не выполнена. Малинка как раз мониторит подобные записи на удаленном сайте. Как только находится еще не выполненная команда - она эту команду кидает в виде сообщения в порт с USB на ардуино, а в базу данных для команды указывает статус = выполнено.
2 - Если из порта с USB приходят сообщения от ардуины - то происходит анализ того, что пришло: Если это пришли отбойки о том, что камера повернулась по X или Y - в этих отбойках есть указание текущего градуса поворота. Эти данные raspberry пишет в базу данных на удаленном сайте и эти данные выводятся на странице в статистике. Если из ардуины пришла отбойка о том, что барабан прокрутился один раз - малинка пишет в удаленную базу данных этот факт. На основании этих записей сайт уже будет строить данные о текущей скорости/расстояниях вращения барабана.
3 - Raspberry pi 2 получает данные с своей встроенной камеры (которая висит на сервах), кодирует их кодеком h264 при помощи ffmpeg и отправляет на удаленный сайт в виде rtmp-потока
 
** Удаленный сайт Degu.Live **
Это уже отображает изображение с камеры  + дает возможность управлять положением камеры + отображение статистики.
 
1 - На сервере настроил возможность прямой трансляции из RTMP-потока. Если в кратце, то это у nginx расширение nginx-rtmp-module. Более подробно как я там все настраивал есть тут: /forums/topic/19-настройка-прямой-видео-трансляции-на-сайте-при-помощи-raspberry-pi-2/
2 - Настроил веб-сервер на YII2 для отображения самого сайта.
3 - Настроил WebSocket на phpDaemon - для получения данных о статистике + отправка данных о кликах на элементах управления камерой. WebSocket - это новая возможность осуществления запросов на сервер и получения ответа + рассылка ответов сервера на все клиенты - намного ловчее, чем AJAX.
 
В общем на текущий момент можно смотреть за дегусятинами. Можно крутить камерой в каком то диапазоне.
 
В ближайшее будущее хочу прилепить туда подсветку в клетку (Управление с страницы) + думаю над тем, как бы организовать подачу вкусняшек (пока мысль остановилась на чем то типа спирали в трубе, спираль будет крутить мотор на нужные углы и тем самым в трубе проталкивать вкусняки). Плюс надо с камерой что то еще придумать. От малинки камера конечно прикольная, но очень маленький угол обзора.
IMG_0613.thumb.jpg.05cc8d333fe145293d2c756e9546b0a80a_2016-03-1615-40-50.live.th

Share this post


Link to post
Share on other sites

Добавил управление двумя кусками светодиодных лент. Подключил их через полевые транзисторы к блоку питания на 12V 1.5A. Светит ярко. Даже слишком. Особенно, когда две. Думаю буду резать еще на куски и включать посегментно.
И не пойму почему, но свет заметно "дрожит". Причем когда скетч компилится - они на полсекунды загораются ярко без дрожания. Судя по всему что то именно с ардуиной?
Подключал: на Gate - выход с пина без резисторов. на SOurce - минус с блока питания, на Dest - выход на минус ленты. К плюсу ленты - плюс от блока питания. И земля у блока питания и земля у ардуины объеденены. Может в этом дело?

Share this post


Link to post
Share on other sites

Прилепил еще две светодиодные ленты. Стало лучше видно питомцев. Но свет всеже "дрожит". Надо как то избавляться...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now