Занимаюсь администрированием серверов и поддержкой веб-сервисов в качестве фрилансера. С ростом количества «подопечных» на простой мониторинг начало требоваться неприлично много времени. Захотелось сделать для себя полноценную информационную панель. Что из этого получилось читайте под катом.

Да, я в курсе, что существует много разных способов получать оперативные оповещения о тех или иных событиях: смартфон, различные дисплеи, индикаторы и даже смарт-часы. Но…

Много лет назад мне понравилась система оповещения о пробках в Яндексе: обычный дорожный светофор, который разными цветами показывал степень загруженности дорог. Реализация Яндекса вдохновила собрать себе нечто подобное, тоже необычное, и чтоб было полезным.

Со временем идея сформировалась – световой короб с цветными светодиодами внутри – вот что мне нужно!



Хочу!..


Изначально хотелось увидеть в готовом продукте:

  • управление по 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)


  1. Dima_Sharihin
    29.01.2016 14:45

    <irony>А следующим шагом можно запилить mDNS и DNS-SD</irony>


  1. PTM
    29.01.2016 15:15

    а сколько обощлись диодики?
    Советую посадить диодики на что-нибудь аналогичное mc полимерам или на dow corning 7091- и надежно и просто, сохнет сутки, но не отвалится.
    В качестве рассеивателя можно использовать пленку 3м или аналогичную( есть у рекламщиков) или опаловое оргстекло, щелательно с шагренью.
    на такой прикольно snake сделать :)


    1. pyur
      29.01.2016 15:18

      Диоды в таком виде обошлись в без малого 1000 р. Я специально брал модульные, с обвесом и платой. Ещё есть вариант в гибкой ленте. И есть вариант просто диоды в промышленной упаковке, такие капельку дешевле, но нет фильтрующих кондёров и вообще не практично.


      1. PTM
        29.01.2016 15:24

        Я в свое время брал обычные ws2812 и платку разводил сразу с крепежом. получилось немного многовато, но зато без гемороя с установкой.


  1. safari2012
    29.01.2016 15:19

    Насколько надежен оказался ENC28J60? Какой у вас uptime?
    Мой экземпляр что-то слишком часто теряет сеть.
    Google рекомендует использовать w5100, он вроде как надежнее.


    1. pyur
      29.01.2016 15:22

      Я читал про непрактичность ENC28J60. За неделю был один зависон. Пока ещё не могу конкретно судить, статистики своей нет. Но решение уже есть — дёргать ногу ресета время от времени, меня такой вариант вполне устраивает.
      По поводу W5100 — тоже не панацея. У меня три года стоит «щёлкалка релюшками» на W5100. Несколько раз в год и он виснет. Приблизительно раз 5-6, в год.


      1. safari2012
        29.01.2016 15:52

        У меня такая же история. Хотя w5100 оказался на порядок надежнее (ещё его библиотеки памяти жрут существенно меньше), но всё таки скетчи зависали.
        Я отказался в итоге от обоих модулей в пользу ESP.


        1. Dima_Sharihin
          29.01.2016 16:28

          Поднял http-сервер, проброс uart в tcp и мультикаст на W5100 с STM32.
          Не скажу, что все сразу было понятно, но работать с визнетовской библиотекой очень просто.


  1. handicraftsman
    29.01.2016 17:18

    Хорошая идея. Вот бы такие штуки продавались в магазинах и поддерживали WiFi + управление с ПК. Т. к. максимум, что они могут делать — рисовать картинку, которая приходит по HTTP, при взломе таковых ничего хренового не случится.


    1. pyur
      29.01.2016 17:20

      Да хотя бы на кикстартере или инди-гоу-гоу кто-нибудь кампанию запустил, уже было бы очень хорошо.


  1. Gargyl
    29.01.2016 17:20

    А быстро к расположению диодов привыкаешь? Не было путаницы, какой что означает?


    1. pyur
      29.01.2016 17:22

      Ну, группы разных цветов, это сильно облегчает восприятие. Вот если бы все были одноцветные, было бы жёстко. Пришлось бы их подписывать, маркером, или наклейками.


      1. Gargyl
        29.01.2016 17:59

        А внутри одной группы? Там же цвета одинаковые. Не путаются соседние?


        1. pyur
          29.01.2016 18:02

          У меня длинна группы 4, либо 6 диодов. Соответственно 2 или 3 группы на ряд. Нормально воспринимается.


          1. Gargyl
            29.01.2016 18:02

            Ага, спасибо


  1. Nick0N
    29.01.2016 17:48

    Это вы GET'ом «ракету» запускаете?) пусть и у себя в огороде)


  1. tmin10
    29.01.2016 20:58

    Вроде есть стандартные протоколы по управлению светодиодными экранами через TCP/IP или даже через HTTP, возможно есть смысл использовать их. К сожалению сходу не нагуглил такого решения, но это точно было в одной из статей на гиктаймсе/хабре.


    1. pyur
      29.01.2016 20:58

      Это интересно, обязательно поищу. Спасибо. Стандарты это хорошо.


      1. BeeZONE
        30.01.2016 12:51
        +1

        ArtNet — часто используется в концертных инсталляциях.
        Есть еще Open Pixel Control


        1. pyur
          30.01.2016 13:07

          Спасибо.


  1. prizrakx12
    30.01.2016 16:13

    Уважаемый pyur, вы прямо в мою проблему попали! Можно как то с вами лично связаться?


    1. pyur
      30.01.2016 16:14

      Добавил ссылку на сайт в свой профиль, ищите контакты там.


  1. Ckrash
    31.01.2016 13:11

    А как вы реализовали цветомузыку? Она работает в такт музыки?
    Есть идея на два длинных окна сделать, чтобы как в старых магнитофонах.


    1. pyur
      31.01.2016 13:20

      Сейчас реализован самый примитивный вариант — специальная программа «проигрывает» гифки, берутся крайние с левого верхнего угла пикселы — 12 х 8.
      Вполне возможно написать плагин для Foobar2000, Aimp, кому что нравится, для вывода готовых визуализаций на эту панель. Например Milkdrop — там не нужно высокое разрешение.