Система автономного мониторинга c маленьким бюджетом

в 13:05, , рубрики: diy или сделай сам, ruby, разработка, светофор, метки: , ,

Под катом Вы не найдете очередную историю появления Билд-светофора в офисе. Большую часть статьи я посвящу реализации самой системы вплоть до исполнительного устройства, потому что светофор — это всего лишь три больших лампочки.

Система автономного мониторинга c маленьким бюджетом

А вообще мне просто надоело писать скучные проекты и курсовые в институте, поэтому на летней практике я решил занаятся чем нибудь интересным.

Введение

Я студент третьего курса радиотехнического факультета УрФУ, попутно работаю программистом на Ruby on Rails в одном из самых больших IT отделов Екатеринбурга — в отделе веб-разработки медиахолдинга «Абак-Пресс».
Когда пришло время проходить практику, я решил – буду проходить по месту работы. Перед собой поставил цель: реализовывать на практике систему мониторинга билдов. На работе задумку одобрили и предложили собрать подобное устройство.
Конечно же, в процессе работы я столкнулся с рядом проблем.

Проблема 1: Светофор

Оказалось, что купить за разумные деньги ламповый светофор в нашем городе невозможно. Пришлось задейстовать всех своих знакомых, и с большим трудом нашелся один экземпляр, якобы сильно пострадавший от рук вандалов, от чего, собственно, он и был списан. На деле же у него был поврежден один из козырьков и полностью уничтожено одно из креплений.
Решение было простым – крепить к стене, а не к столбу, к тому же апоксидка со стеклотканью с легкостью восстановили обломленный козырек.

«Мозги» Светофора

Сначала думал сделать что-нибудь простенькое, например, MSP430 + Ethernet. Однако, расчеты показали, что стоимость этого решения сравнима со стоимостью raspberry PI. Конечно, я выбрал raspberry, это предвещало наличие в будущем различных свистелок-перделок в светофоре.
На малину был установлен ArchLinux. Оказалось, что настоящих часов в малине нет, поэтому нужно написать скрипт, который бы при каждом включении ходил и устанавливал верное время на устройстве, в противном случае https соединения работать отказывались в связи с текущей датой — 1 января 1970 года — все сертификаты недействительны.
Далее был скомпилирован ruby последней версии 2.0.0. Процедура заняла больше трех часов.
Было опробовано два гема для общения с gpio: WiringPI и PiPiper. На плате последней версии (rev 2) заработал только PiPiper. Кстати, доступ для gpio есть только у пользователя с root правами, это обязательно надо иметь в виду. 

Как имея 3,3 В на логических выводах raspberry управлять включением ламп светофора ?

Светофор очень хорошо работает от сети 220В — это удобно. Около часа я включал попеременно каждую лампу светофора в розетку и радовался как ребенок. Для справки: светофор светодиодный, но старого образца, то есть свет у него как будто ламповый, поэтому модифицировать его конструкцию и втыкать в него лампочки я не стал. 
Свет от светофора приятный – почти теплый, ламповый и только попадая в фокус линзы светофора есть немного неприятные ощущения слишком резкого света, но эту проблему решили правильным расположением светофора.

Итак, обратимся к главной проблеме вышеизложенного. Решений было найдено два: реле и «не реле».
Так как мне интересно все новое, и совсем не потому, что у одного из моих руководителей практики есть дача, на которой надо управлять дистанционно мощной нагрузкой, что чревато большими токами, был выбран второй вариант.
Прочитав http://easyelectronics.ru/upravlenie-moshhnoj-nagruzk.. я реализовал трехканальное устройство с немного другими оптодрайверами — с хорошими радиаторами оно может держать до 16А. Светофор все же нагрузка не мощная — я обошелся без радиаторов.
На макетной плате я собрал работающий один канал такого устройства:
Система автономного мониторинга c маленьким бюджетом
Правда оказалось, что схема была указана для управления нулем, я же управлял высоким уровнем сигнала, так что входные контакты пришлось поменять местами.

Изготовление управляющей платы

После неудачной попытки поверхностного монтажа было принято решение изготовить печатную плату.
Получившаяся схема: 
Система автономного мониторинга c маленьким бюджетом

Был закуплен текстолит, хлорное железо, изучен ЛУТ (лазерно-утюжный метод печати плат в домашних условиях) и с пятой попытки изображение печатной платы было перенесено с бумаги на текстолит. 
Топология: Система автономного мониторинга c маленьким бюджетом

После этого, сломав пару сверл на 1 мм, я дождался утра и в институте просверлил оставшиеся отверстия на сверлильном станке. Вечером того же дня я развел хлорное железо и начал травить — всего 20 минут и плата была вытравлена.
Система автономного мониторинга c маленьким бюджетом
Система автономного мониторинга c маленьким бюджетом
Раствор, к слову, получился многоразовый.
С помощью ацетона удалил слой тонера, и за два часа были припаяны все компоненты. В последствие плата была покрыта цапонлаком. 
Система автономного мониторинга c маленьким бюджетом
Система автономного мониторинга c маленьким бюджетом

Программа управления

Так как доступ до gpio есть только у пользователя с root правами, rvm был собран по инструкции wiki.archlinux.org/index.php/RVM. Архитиктура системы такая: есть сервер, к которому из веб формы можно обращаться и есть демон, который осуществляет общение через gpio c платой исполнительного устройства. Демон имеет root права. Код проекта можно посмотреть: 
github.com/Aelphy/traffic-light-server
github.com/Aelphy/traffic-light-daemon

Заключение

В последствие планируется добавить колонку и полноценный режим «Новый год».
Сейчас светофор работает в стандартном режиме — показывает статус последнего билда проекта и следит работает ли внутрення сеть.

Используемые цветовые коды : 
— зеленый — тесты прошли;
— красный — тесты упали;
— желтый — идет билд;
— желтый мигающий – проблемы (нет интернета, не отвечает).

На данной платформе можно очень дешево реализовать целый ряд задач по мониторингу и обслуживанию

Система автономного мониторинга c маленьким бюджетом

Автор: Aelphy

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js