Занимаюсь администрированием серверов и поддержкой веб-сервисов в качестве фрилансера. С ростом количества «подопечных» на простой мониторинг начало требоваться неприлично много времени. Захотелось сделать для себя полноценную информационную панель. Что из этого получилось читайте под катом.
Да, я в курсе, что существует много разных способов получать оперативные оповещения о тех или иных событиях: смартфон, различные дисплеи, индикаторы и даже смарт-часы. Но…
Много лет назад мне понравилась система оповещения о пробках в Яндексе: обычный дорожный светофор, который разными цветами показывал степень загруженности дорог. Реализация Яндекса вдохновила собрать себе нечто подобное, тоже необычное, и чтоб было полезным.
Со временем идея сформировалась – световой короб с цветными светодиодами внутри – вот что мне нужно!
Хочу!..
Изначально хотелось увидеть в готовом продукте:
- управление по Ethernet,
- возможность задавать каждому светодиоду свой цвет и яркость,
- включение по датчику движения, для ночного режима.
Первый! Первый! Приём! Приём!
В качестве протокола для связи выбрал обычный HTTP запрос, в котором REQEST собственно и содержит команду, в виде шестнадцатеричных чисел.
Такой способ показался мне максимально универсальным. Команду легко подать из скриптов, приложений, даже из обычного браузера. Хосты могут быть разными, никак не связанными между собой. Команда из примера будет выглядеть так:
http: //192.168.1.241/05FF800000000000
Мухтар! Ко мне!
Список команд небольшой, но включает необходимый набор:
- Включение отдельного светодиода
- Пакетное включение всех светодиодов
- Настройка датчика движения
Контроллер распознает их по длине.
Управление отдельным светодиодом (8 байт)
NN RR GG BB rr gg bb AA
где:
NN – номер светодиода,
RR GG BB – цвет свечения светодиода,
rr gg bb – второй цвет, при использовании анимации,
AA –длительность перехода между основным и вторым цветом (скорость анимации), при нулевом значении постоянно горит основной цвет.
Диаграмма перехода между двумя цветами, при включённой анимации
Управление всеми светодиодами сразу (288 байт (96 * 3) )
RR GG BB RR GG BB RR GG BB … RR GG BB
где:
RR GG BB – цвет свечения светодиода.
Пакетное управление удобно использовать в случаях, когда необходимо вывести анимацию.
Примечание: если количество светодиодов отличается от 96, команда изменит свой размер под соответствующее количество.
Управление поведением датчика движения (1 байт)
CC
где:
CC – команда.
Список управляющих команд:
00 – OFF, свечение выключено, датчик движения отключен,
01 – ON, свечение включено, датчик движения отключен,
02 – AUTO, свечение включается при реагировании датчика движения.
Длительность работы от датчика движения регулируется переменным резистором на самом датчике. При желании, можно реализовать длительность, определяемую контроллером, и регулируемую через команды.
Сделайте мне красиво!
Хотелось чтоб устройство было не только функциональным, но и радовало глаз внешним видом.
Не смотря на мелкий размер, сами светодиоды очень яркие, поэтому сразу пришла мысль рассеивать его через белый пластик. Больше всего для этой цели подошёл молочный акрил. При прохождении через него, свет рассеивается и приобретает приятное глазу свечение.
Если взять простое прозрачное оргстекло и обклеить плёнкой, это выйдет дешевле, но свет при прохождении сквозь него не будет рассеиваться. И хоть самих светодиодов за плёнкой видно не будет, но пятно света будет чётким, что выглядит на мой вкус некрасиво.
Светодиоды крепятся с обратной стороны клеевым пистолетом. Держатся они при таком способе не слишком надёжно, но и дёргать их там никто не станет. Залудить контакты желательно до поклейки.
С рамкой всё просто, углы по вкусу закругляются, по краю приклеивается алюминиевый или пластиковый профиль, чтоб можно было повесить на стену как картину.
Мне никогда не надоест!
Вариантов расположения индикаторов бесконечное множество, у кого на сколько хватит фантазии. В процессе эксплуатации я ещё не раз буду дорабатывать схему и изменять положение и назначение. На то она и универсальность, надоело одно – сделал другое.
Верхние два ряда – часы, показывающие текущее время. Первый ряд – текущий час, второй ряд – минуты, округлённые до 5 минут в меньшую сторону. Зелёным подсвечены опорные значения (0, 3, 6 и 9).
Далее идут индикаторы разных событий на серверах (на примере отключены).
Шестой ряд – индикатор новых сообщений в соцсетях и почте. Разные индикаторы для разных отправителей. При одном сообщении индикатор просто загорается и горит постоянно. При нескольких – пульсирует. Чем больше сообщений, тем чаще пульсирует.
Нижние два ряда использую по необходимости, для разных временных задач.
Хочу ещё!
В процессе создания приходили разные идеи. Не все пригодились мне, но возможно кому-то они покажутся интересными.
При срабатывания датчика можно отправлять событие на удалённый хост (сервер).
Реализовать Watchdog, чтоб контроллер отслеживал количество времени, прошедшего с момента последнего обращения, и при превышении лимита включал красный индикатор, и мигал им чаще при увеличении периода.
Добавить модуль WiFi для беспроводного функционирования.
Добавить модуль Bluetooth, для прямой связи со смартфоном.
Приложение для смартфона, которое будет проверять различные события: смс и пропущенные вызовы от определённых отправителей, события календаря и т.п.
Ваши варианты функционала предлагайте в комментариях.
Из чего же, из чего же, из чего же, сделаны наши...
Для технической части проекта я использовал следующие компоненты:
– управляемые цветные светодиоды RGB LED 5050 WS2812B (100 шт)
– микроконтроллер Arduino Pro Micro 16 MHz, 32 KB ROM, 2.5 KB RAM
– сетевой адаптер на чипе ENC28J60
– датчик движения
– блок питания на 2А
– акриловое оргстекло, белого цвета, размерами 420 х 300 мм, толщиной 3 мм
– алюминиевый швеллер 10x10x10x1.5 мм
Мы строили-строили и наконец построили!
Для меня польза очевидна:
– время, затрачиваемое на мониторинг серверов существенно сократилось,
– отпала необходимость постоянно проверять почту и сообщения,
– ночью радует автоматически включаемое освещение комнаты,
– гости в восторге от цветомузыки.
Стоимость всех компонентов около 2000 р. (25$). Схему сборки и исходники прошивки можно взять на GitHub.
Комментарии (24)
PTM
29.01.2016 15:15а сколько обощлись диодики?
Советую посадить диодики на что-нибудь аналогичное mc полимерам или на dow corning 7091- и надежно и просто, сохнет сутки, но не отвалится.
В качестве рассеивателя можно использовать пленку 3м или аналогичную( есть у рекламщиков) или опаловое оргстекло, щелательно с шагренью.
на такой прикольно snake сделать :)pyur
29.01.2016 15:18Диоды в таком виде обошлись в без малого 1000 р. Я специально брал модульные, с обвесом и платой. Ещё есть вариант в гибкой ленте. И есть вариант просто диоды в промышленной упаковке, такие капельку дешевле, но нет фильтрующих кондёров и вообще не практично.
PTM
29.01.2016 15:24Я в свое время брал обычные ws2812 и платку разводил сразу с крепежом. получилось немного многовато, но зато без гемороя с установкой.
safari2012
29.01.2016 15:19Насколько надежен оказался ENC28J60? Какой у вас uptime?
Мой экземпляр что-то слишком часто теряет сеть.
Google рекомендует использовать w5100, он вроде как надежнее.pyur
29.01.2016 15:22Я читал про непрактичность ENC28J60. За неделю был один зависон. Пока ещё не могу конкретно судить, статистики своей нет. Но решение уже есть — дёргать ногу ресета время от времени, меня такой вариант вполне устраивает.
По поводу W5100 — тоже не панацея. У меня три года стоит «щёлкалка релюшками» на W5100. Несколько раз в год и он виснет. Приблизительно раз 5-6, в год.safari2012
29.01.2016 15:52У меня такая же история. Хотя w5100 оказался на порядок надежнее (ещё его библиотеки памяти жрут существенно меньше), но всё таки скетчи зависали.
Я отказался в итоге от обоих модулей в пользу ESP.Dima_Sharihin
29.01.2016 16:28Поднял http-сервер, проброс uart в tcp и мультикаст на W5100 с STM32.
Не скажу, что все сразу было понятно, но работать с визнетовской библиотекой очень просто.
handicraftsman
29.01.2016 17:18Хорошая идея. Вот бы такие штуки продавались в магазинах и поддерживали WiFi + управление с ПК. Т. к. максимум, что они могут делать — рисовать картинку, которая приходит по HTTP, при взломе таковых ничего хренового не случится.
pyur
29.01.2016 17:20Да хотя бы на кикстартере или инди-гоу-гоу кто-нибудь кампанию запустил, уже было бы очень хорошо.
tmin10
29.01.2016 20:58Вроде есть стандартные протоколы по управлению светодиодными экранами через TCP/IP или даже через HTTP, возможно есть смысл использовать их. К сожалению сходу не нагуглил такого решения, но это точно было в одной из статей на гиктаймсе/хабре.
pyur
29.01.2016 20:58Это интересно, обязательно поищу. Спасибо. Стандарты это хорошо.
BeeZONE
30.01.2016 12:51+1ArtNet — часто используется в концертных инсталляциях.
Есть еще Open Pixel Control
prizrakx12
30.01.2016 16:13Уважаемый pyur, вы прямо в мою проблему попали! Можно как то с вами лично связаться?
Ckrash
31.01.2016 13:11А как вы реализовали цветомузыку? Она работает в такт музыки?
Есть идея на два длинных окна сделать, чтобы как в старых магнитофонах.pyur
31.01.2016 13:20Сейчас реализован самый примитивный вариант — специальная программа «проигрывает» гифки, берутся крайние с левого верхнего угла пикселы — 12 х 8.
Вполне возможно написать плагин для Foobar2000, Aimp, кому что нравится, для вывода готовых визуализаций на эту панель. Например Milkdrop — там не нужно высокое разрешение.
Dima_Sharihin
<irony>А следующим шагом можно запилить mDNS и DNS-SD</irony>