Degu.Live

Тема в разделе "Глядите, что я сделал", создана пользователем EvgenJekson, 16 мар 2016.

  1. EvgenJekson

    EvgenJekson Нерд

    Зашел я как то пару месяцев назад в зоомагазин и увидел Дегу. Это вроде как чилийские белочки (хотя смахивают на крыс ))) ). Зверьки шустрые и интересные. В общем теперь я заядлый деговод ))) 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. Более подробно как я там все настраивал есть тут: http://spravkacrm.ru/forums/topic/19-настройка-прямой-видео-трансляции-на-сайте-при-помощи-raspberry-pi-2/
    2 - Настроил веб-сервер на YII2 для отображения самого сайта.
    3 - Настроил WebSocket на phpDaemon - для получения данных о статистике + отправка данных о кликах на элементах управления камерой. WebSocket - это новая возможность осуществления запросов на сервер и получения ответа + рассылка ответов сервера на все клиенты - намного ловчее, чем AJAX.

    В общем на текущий момент можно смотреть за дегусятинами. Можно крутить камерой в каком то диапазоне.

    В ближайшее будущее хочу прилепить туда подсветку в клетку (Управление с страницы) + думаю над тем, как бы организовать подачу вкусняшек (пока мысль остановилась на чем то типа спирали в трубе, спираль будет крутить мотор на нужные углы и тем самым в трубе проталкивать вкусняки). Плюс надо с камерой что то еще придумать. От малинки камера конечно прикольная, но очень маленький угол обзора.
     

    Вложения:

    Последнее редактирование: 16 мар 2016
    Alex19, ostrov и ИгорьК нравится это.
  2. ostrov

    ostrov Гуру

    Типа морских свинок? Или ближе к кошкам по интеллекту?
     
  3. Alex19

    Alex19 Гуру

    Вы можете поменять объектив и увеличить угол обзора.

    Более подробно тут - http://wiki.raspberrytorte.com/index.php?title=Camera_Module_Lens_Modifcation.
    Raspberry pi camera.jpg
     
  4. EvgenJekson

    EvgenJekson Нерд

    Типа морских свинок. Понравились тем, что активные, не вонючие, спят ночью днем бегают. Интеллект не тестировал ))
     
  5. EvgenJekson

    EvgenJekson Нерд

    штука клевая, наверное. а где бы уже готовое решение купить? на амазоне или в россию не поставляют, или пересылка в 4 раза дороже детальки.
     
  6. Alex19

    Alex19 Гуру

    Готовые с обычным объективом 3,6мм с углом 75 градусов, их хватает, вот пример - https://item.taobao.com/item.htm?spm=a230r.1.14.200.bLle08&id=38745875290&ns=1&abbucket=8#detail.

    А вот с широкоугольным надо поискать, впрочем, Вы можете купить просто крепление и отдельно объектив. К примеру такие
    1. Крепление - https://item.taobao.com/item.htm?spm=a230r.1.14.90.HHaMPL&id=17584594365&ns=1&abbucket=12#detail.
    2. Объектив - https://item.taobao.com/item.htm?sp...878&pvid=636c3b2d-515c-479c-b328-88c1a4c72ff2.
    3. 2 самореза.
    Цены в юанях.

    Немного работы и Вы получаете именно то что Вам нужно.

    По амазону ни чего сказать не могу, пользуюсь китайским taobao.com, через посредника в РБ.
     
    Последнее редактирование: 16 мар 2016
  7. EvgenJekson

    EvgenJekson Нерд

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

    EvgenJekson Нерд

    Прилепил еще две светодиодные ленты. Вроде стало лучше видно. Но свет "дрожит". Как бы его стабилизировать?
     
  9. ostrov

    ostrov Гуру

    Если дрожит, значит ШИМ, горят не на полную катушку, вот и муарят с разверткой камеры.

    Посмотрел на Тытрубе, зверьки прикольные. )) Но до кошки далеко, конечно, другая категория.