Пользователь
0,0
рейтинг
18 декабря 2013 в 11:54

Самодельный билд-светофор в офис из песочницы

Предыстория


В связи в планируемым переходом на continious integration и прочтением пары статей о светофорах в офисе захотелось и себе заиметь такой теплый ламповый прибор. В результате он получился совсем не теплым и не ламповым, но об этом потом.

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

Идея


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

image

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

Главным “мозгом” был назначен raspberry pi по нескольким причинам. Первая єто его наличие после предыдущих экспериментов с “малинкой”, вторая это простота реализации управления светофором извне, установка разного рода софта, wifi и т. д.

Корпус


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

image

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

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

image

После покраски в чёрный “светофорный” цвет все стало выглядеть еще более замечательно. Также были наклеены маскировочные шнуры для прикрытия крепежа стекол и придания конструкции более завершенного вида.

image

Электроника


В угоду безопасности, уменьшения энергопотребления и еще ряда причин в качестве источника света были выбраны светодиоды. Всего 27 штук, по 9 на цвет. Для них в корпусе соответственно было просверлено 27 отверстий.

image

Для удобства ремонта и установки светодиодов они были размещены на пластиковых матрицах с размещением совпадающим с отверстиями в корпусе.

image

Они с легкостью устанавливаются и снимаются на случай если сгорит один из светодиодов. Для управления логикой используются выводы GPIO на raspberry pi, соответственно в качестве управляющей логики была изготовлена плата с тремя реле управляемыми напряжением 3В и коммутирующими 12В, которые подаются на светодиодные матрицы.

image

На этапе тестирования перед окончательной сборкой сборкой все выглядело примерно вот так.

image

Все “заброшено” в корпус и приделан временный шнур питания на 220В так как под рукой в момент сборки не было шнура достаточной длинны. Внутри также размещено два блока питания. Один 12В для питания светодиодов, второй блок с портом USB для raspberry pi.

image

Программное обеспечение


Для простоты управления извне был установлен lighttpd сервер с mod_fcgi для python. Таким образом управлять режимом можно просто из браузера. Так было удобно побаловаться самому. Позже для Jenkins был написан код который опрашивает его и соответственно меняет статус светофора. Python же был выбран не случайно, с его помощью довольно легко справиться с управлением выводами GPIO на raspberry при помощи набора библиотек wiringpi.com.

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

#!/usr/bin/pythonRoot
# Bring in the libraries
import RPi.GPIO as G
from flup.server.fcgi import WSGIServer
import sys, urlparse, time

# GPIO lights map
light_r = 4
light_y = 17
light_g = 22

# Set up our GPIO pins
G.setmode(G.BCM)
G.setup(light_r, G.OUT)
G.setup(light_y, G.OUT)
G.setup(light_g, G.OUT)

# Offs all lights
def offLights():
    G.output(light_r, False)
    G.output(light_y, False)
    G.output(light_g, False)    

# Function which is called for each http request we receive
def app(environ, start_response):
    # start our http response
    start_response("200 OK", [("Content-Type", "text/html")])
    # look for inputs on the URL
    i = urlparse.parse_qs(environ["QUERY_STRING"])
    yield (' ') # flup expects a string to be returned from this function
    # if there's a url variable named 'q'
    if "mode" in i:
        if i["mode"][0] == "red":
            offLights()
            G.output(light_r, True)
        elif i["mode"][0] == "yellow":
            offLights()
            G.output(light_y, True)
        elif i["mode"][0] == "green":
            offLights()
            G.output(light_g, True)
        elif i["mode"][0] == "off":
            offLights()        

#Run app
WSGIServer(app).run()


Затраты


На все ушла примерно неделя работы двух человек, по часу в день после работы. По деньгам же:
Raspberry Pi model B $50
Пластик ПВХ для корпуса с порезкой $15
Краска чёрная матовая $10
Блоки питания $10
Реле, светодиоды и прочая мелочь $10
Wifi свисток для raspberry $10
Стекла $7
Шпатлевка $5
  Итого: $117

Заключение


Начнем с видео работы в демонстрационном режиме.



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

Всем удачи, и поменьше красных на билд-светофорах!
@yarkos
карма
6,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (30)

  • +10
    Всегда было интересно смотреть, как программисты решаю задачи с электроникой. ПК для мигания тремя светодиодами!
    Хотя в целом весьма симпатично. Надо взять на вооружение Ваш метод изготовления корпуса)
    • 0
      а как бы Вы без пк реализовали получение состояния CI и мигание нужным светодиодом?
    • 0
      Сейчас он уже связывается с Jenkins с помощью python API, как и было задумано. Так что ПК в самый раз)
    • +2
      А как бы это сделали инженеры-механики ^^ Вращающийся трамблёр с кулачками и искрящими контактами… красиво, гаражно, стимпанково )
  • +2
    Не понимаю, нафига для такого использования делать светофоры.
    На дворе 21 век, нет, чтобы сделать электронное табло с голосовым сообщениями (женский голос: «Внимание, билдинг завершен» или «Внимание, продакшн сервер не отвечает» и т.п.), а они интерфейс с 3-мя состояниями юзают.
    • +1
      Светофоры все делают не просто так. Jenkins сам продиктовал такой путь, так как использует три состояния при билде.
    • 0
      Голосовые сообщения вообще зло, они отвлекают и пугают своей внезапностью, особенно если запись недостаточно качественное или оборудование для воспроизведения.
      • +1
        В этом весь кайф… добавить в комнату еще стробоскопы, небольшой душ и нормальную акустику… чтобы и гром и молнии… если что вдруг не так. Сначала притухает свет, потом начинаются молнии с громоподобным голосом, если вдруг что не сошлось. А если сошлось — яркий свет и пение птичек.
  • +1
    Похоже, стёкла с железнодорожного светофора :) Ни разу не видел, чтобы на уличных использовались стёкла в виде линзы Френеля.
    Бывают в природе светодиоды с «тёплым» светом.
    • +5
      В природе бывают даже цветные светодиоды — красные, желтые и зеленые. Только тсссс — это секрет. :)
      • 0
        Только лампочка ЖЛС-12-15+15, только хардкор!
        image
  • 0
    рука-лицо… ну ладно милинка использована, но вместо реле же можно было использовать полевые транзисторы.
    Да и светодиоды… пеньдюрочки мелкие, надо было поставить по 9 штук 1Вт светодиоды — так чтобы светило так светило на всю комнату, чтобы даже днем было видно что светофор работает! В оригинальном, уличном светофоре когда меняют лампы на светодиоды — их там ставят от 500Шт таких. И света больше и равномерней освещает.

    Кстати, можно использовать же светодиоды нужных цветов — красные желтые и зеленые, тогда и сдвига спектра не будет и наиболее эффективно будут использованы.

    Блок питания можно взять встраиваемый, продают готовые встраиваемые блоки 220-12В на 15Вт...100Вт.
    • 0
      Днем вполне нормально видно. Если бы плохо светило замена на 1Вт была бы как первое мероприятие. А насчет света как то сразу не задумались так как имелись цветные стекла.

      Слишком сильный свет тоже плохо так как будет мешать работать, все таки светофор у всех на виду.
      • 0
        Зеленый сделать слабее, красный — прожектор. Чтобы прям жарил.
        • +3
          И указывал лазером на того, чей коммит поломал сборку.
  • +1
    А малинке каково с такой нагрузкой? Я про то, что катушки реле вы напрямую к GPIO подключили, выходит?
    • 0
      Да, напрямую. Малинка довольна, хотя каких то конкретных проверок мы не делали.
      • +4
        Просто катушка — опасная вещь для довольно слабых GPIO. Мало того, что ток она кушает немаленький, так ещё и ЭДС при её выключении возникает, которой тоже можно пожечь ножки. Чтобы Raspberry подольше радовала вас, лучше хотя бы зашунтить катушку диодом, а то и транзисторы на включение реле повесить (подробнее можно посмотреть у тов. DI HALT на easyelectronics, как на второй схеме. Диод особый не нужен, достаточно что-нибудь из серии 1N400x, на радиорынках их всегда много — особенно 1N4007)
        • 0
          Спасибо! Будем доделывать.
        • 0
          Там с обратным выбросом норм. Ведь когда транзистор отключается — бесконечное сопротивление, тогда ЭДС самоиндукции разыгрывается на полную! А порты GPIO на малинке симметричные, переключится на ноль поглотит ток самоиндукции и делов — напряжение на порту не вырастет.

          ага, 1N4007 совсем слабенький диод… цельных 1А тока выдерживает, долговременно…
          • 0
            Про симметричность порта — да, действительно, катушку закоротит на землю. Но я бы перестраховался, всё равно с шунтом больше уверенности. А если питание вырубит при включенной катушке? Push-pull драйвер уйдёт в режим Hi-Z и катушка останется в воздухе.

            Я не говорил, что 1N4007 слабый, я сказал, что он вполне обыкновенный, широко распространённый и недорогой в первую очередь. Да и вообще, у меня постоянный запас этих диодов поддерживается, как general-purpose — то, что нужно.
  • 0
    Вот ещё один habrahabr.ru/post/169097/. :)
    Правда, не самодельный.
    • 0
      Именно он стал последней каплей перед решением делать свой :)
  • 0
    дало синеватый оттенок. Сейчас обдумываем варианты исправления

    Это не бага, а фича. У Jenkins ведь тоже зеленый с «синеватым оттенком»:)
  • 0
    А почему не andon lights? ИМХО они лучше вписываются в рабочее помещение. На три цвета вышло бы около сотни USD. (если с Али — дешевле)
    image
    • 0
      Вариантов было и есть много, но хотелось именно подобие автомобильного светофора.
      • 0
        Ясно. Просто я ближе к TPS и организации процессов, поэтому в этом случае моя первая мысль была именно про andon lights.
    • 0
      Наконец-то узнал, как они называются, спасибо!
      • 0
        Название происходит от японского «фонарик». (поскольку распространилось вместе с TPS)
  • 0
    На кухне его надо ставить! Или возле туалета

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