habrahabr

Станция слежения OpenDNS дата центров

  • воскресенье, 5 октября 2014 г. в 03:10:58
http://habrahabr.ru/company/ua-hosting/blog/239201/

Вопрос:
Что будет если соединить и поместить в корпус из березовой фанеры 12 светодиодных блоков, 12 аналоговых датчиков присоединив это все к платформе Arduino с двумя микропроцессорами TI TLC5940?

Ответ:
Система мониторинга серверной нагрузки относительно предыдущего дня, с ежесекундным обновлением актуальности данных.

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



Готовый гаджет


Я по жизни очень скучный человек, единственное мое хобби это всякого рода поделки. Так случилось, что работать мне довелось менеджером OpenDNS, а работодатель мой- удивительная компания, которая оперировала широко раскиданными по миру дата центрами, обслуживая при этом по 30 миллиардов DNS запросов каждый день. Это огромное количество запросов было даже еще большим, ведь по статистике из 100 рядовых пользователей интернета 1 использует этот сервис.

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



Задачи, которые мне необходимо было решить


• Дизайн. Он должен бы вмещать в себя как современные так ретро элементы.
• Управляемый Arduino. Прошел как раз год с того момента когда в последний раз имел дело с этой платформой и явно пришло время вернутся к поделкам с моим любимым маленьким микроконтроллером.
• Возможность постепенной доработки. Делать все и сразу в планах не было.
• Приобщить своих коллег. На работе меня окружают блестящие инженера, если им дать инструкции как выводить данные на информационную панель через USB, у них это выйдет куда лучше, нежели у меня.

Запчасти


Полотно березовой фанеры – обрезанная так что б могла лечь под лазерный резчик.
Arduino – тот, что был у меня в наличии — Arduino Mega, это была проблема для поставленной задачи. Мне требовалось множество PWM портов, в то время как мой имел только 13.

• TI TLC5940 – Если последовательно соединить два таких чипа, то это могло решить мою проблему с нехваткой PWM портов, увеличив их количество до 32.
• 5мм светодиоды – визуальный эффект системы был с ними куда лучше.
• 0-5 вольтметры – Arduino + TLC5940 способны как раз поддерживать выходное напряжение до 5 Вольт, что делает эти датчиками идеальными.
• Разное – немного клея, пучек проводов сечением в 0.5 мм, хомутки для проводов и собственно макет.

Стенд — карта


Найдя карту в сети, мне пришлось удалить с нее некоторые детали, прежде чем наносить лазером гравировку, маленькие острова размещались через чур близко друг к другу, что могло повлиять на корректность их отображения лазером на стенде. Растровое изображение карты пришлось в CorelDraw сделать векторным, это существенно ускорило процесс создания лазером изображения, к слову, исходное качество карты было на уровне 1200dpi.



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

Вольтметры


Меня сначала смущала шкала на вольтметре, но стоковые датчики выглядели так прекрасно, что все же не решился в них что либо менять и оставил как есть. Их шкала в 0-5 Вольт, казалось, только добавляет антураж ко всей затеи.

Сборка панелей


У меня был опыт соединения деревянных панелей по средствам прорезанных лазером зубцов, это удобное и надежное соединение, а чего только стоит контраст обугленных лазером краев и светлого полотна древесины! Забив в программу лазерного резака необходимые параметры, после чего соединив воедино всю конструкцию, все сидело как влитое, разобрать ее назад оказалось чрезвычайно сложно.

Поскольку мои дальнейшие планы состоят в том, что бы достраивать свой «гаджет», выбранный метод скрепления панелей, тут как нельзя кстати.
Лазерный резак(TechShop) который у меня был распоряжении имел рабочее ложе в 18х24 дюйма. Этого было достаточно, чтоб отобразить карту мира, но вот незадача, Нью-Йорк и Вашингтон оказались через чур близко для того, чтоб разместить на их месте два ряда датчиков. Пришлось увеличивать масштаб.

Так как одна из граней ложа станка была 24 дюйма, решил сделать весь макет размерами 23х23х6 дюймов. Лицевая панель у меня состояла из трех частей, которые для пущей надежности были склеены друг с другом. Сделано это было из расчета на то, что в будущем вместо центральной панели можно будет вставить некое подобие «пульта управления», где должны будут разместиться дополнительные датчики, тумблеры, кнопки и тд. Боковые элементы изделия служили для ее дополнительной жесткости, в дальнейшем для наращивания конструкции их всегда можно будет убрать.

Сборка и подключение


Фотография говорит сама за себя. Может металлические клешни были и лишними тут, соединяющие зубцы крепко удерживали всю конструкцию, но избыток осторожности никогда не помешает. Единственное, что не попало в кадр, это Arduino, модуль разместился на самом дне макета, вместе с двумя соединенными чипами TLC5940. Обратите внимание на отверстие в левом нижнем углу для USB шнура.



Финальная сборка


Горячий клей чудесно закрепил все провода на своих местах, и тут как оказалось мною были спутаны цвета подключений, минус/катод обычно имеет черный цвет подключения. В маленький, но очень тугой коннектор были вставлены светодиоды, тем самым электрическая сеть была собрана. Вы также можете заметить, что плюс/анод обычно обозначается красным цветом. Плата Ardunio была прикреплена к низу макета скрепляющей лентой.



Я и не ожидал, что могу испытать столько счастья! Сидя за своим столом в штаб квартире OpenDNS, после незабываемой недели повторяющихся испытаний и тестов, чтоб окончательно отладить систему и прийти к золотой середине.

Последовательное соединение


Сделать на Arduino последовательное соединение довольно просто. Две маленьких хитрости делают последовательное соединение открытым и работоспособным. Мой выбор пал на формат трех переменных, которые характеризовали объект(светодиод, датчик), что должен сейчас обновляться. Например для обновления Амстердама до 100% подымало силу тока до 100мА, для 50% это уже соответствовало 50мА. Компьютер обрабатывал всю работу связанную с доставкой статистики и масштабированием ее.



В вопросах ПО мне помог, ведущий-инженер и просто друг, Доуж Тобакко, который создал всю систему управления. Написанный на Python его скрипт, очищает статистические данные на конкретной позиции, переводя их в процентные отношения и пересылая их, совершая такую операцию каждые 0.085 секунды. Казалось все идет отлично, но произошло что то неожиданное: после нескольких минут работы, USB порт на MacBook моего друга перестал отвечать и длилось это до тех пор, пока компьютер не перезапустили. Меня это начало волновать, ведь до презентации своего изделия на вечеринке оставалось всего 5 дней, а это могло быть больше чем просто глюк. Очевидно проблема была в системе управления. На следующий день после хорошего сна, меня осенило, что проблема в неправленом комментарии к налаженым последовательным выходам в коде Ardunio. Его буфер переполнялся и по истечению не большого времени происходили эти странности. После исправления в коде, скрипт друга работал отлично!