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

в 7: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

Источник


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


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