image

Прочитали заголовок? Я думаю, вы все неправильно поняли. Проект заморожен в буквальном смысле — залит водой и охлажден до температуры около -10°C.

Сначала — отказ от ответственности. Все персонажи являются вымышленными и любое совпадение с реально живущими или когда-либо жившими людьми случайно. Фотографии — фотошоп, видео — мультипликация, в процессе написания статьи ни одно животное не пострадало. Как вы думаете, сойдет за отмазку в случае чего? Если сойдет, то я продолжаю дозволенные речи.

Есть у меня старый во всех отношениях друг — мы с ним знакомы лет двадцать, ну и не молодой он. Мы с ним вместе работали в National Semiconductor, потом он ушел на пенсию, а TI купил NSC — хотя это никак не связано. Я так думаю.

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

Практически в тот же месяц, как меня списали с корабля из TI на пенсию по инвалидности, судьба в очередной раз нас свела. В итоге его фирма стала вообще круче яиц вкрутую — он и я. Прежние его работники куда-то испарились — фирма работала не на прибыль, а на получение морального удовлетворения. А денег особых не было — он о них не слишком задумывался, а народу почему-то хотелось кушать. Тут мы и нашли друг друга — мне назначили пенсию по инвалидности, и с голоду я не умирал при любом раскладе. Более того, если пенсионер-инвалид зарабатывает выше определенной суммы — пенсии его лишат. А потом новую пенсию будут рассчитывать уже совсем по другой схеме. Влетишь — век помнить будешь.

«Большой босс» приносил в клюве небольшие, но интересные контракты, и мы дружно развлекались. Офиса, как такового, у нас не было, да он и не нужен был. У друга в доме полуподвал больше сотни квадратов — даже и он не понадобился. Мой дом гораздо скромнее, но для лаборатории и небольшой мастерской место есть.

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

Хоть встреча и произошла с подачи общих знакомых (ага, у буржуев все делается не глядя на личные и родственные связи), размах деятельности этой фирмы мы плохо представляли.
Для начала нас оставили в каком-то ступоре. У фирмы есть контракт с местным хоккейным клубом — и этот клуб желает иметь на своем стадионе дисплей, вмороженный в лед. Толщина льда — сантиметра четыре. Пару сантиметров из них могут хоккеисты прорезать коньками (уже потом выяснилось, что там еще и фигуристы есть, а они и до бетона запросто пропахать могут). Т.е. у вас сантиметр на все про все — вот им и располагайте, ни в чем себе не отказывайте, бетон долбить для вас и тем более что-то делать с охлаждающими трубами внутри бетонной заливки, никто не будет.

Но хорошая новость (от фирмы-заказчика) — у нас (т. е. у них) уже почти все готово. Вот, панели общей площадью 81 квадратный метр — это будет центральный дисплей. Ну и два боковых дисплея поменьше. Все это собрано на WS2813. От вас нужна сущая мелочь — возьмите какую-нибудь ардуину и сделайте нам красиво систему управления.
Уже точно не помню, но дело происходило где-то в марте-апреле. Летом на катке профилактика, лед растапливают на несколько недель, в конце июля воду заливают и замораживают. К тому времени дисплей должен быть уложен на месте и его заморозят. Что-то останавливать или переносить ни в коем случае нельзя — дальше тренировки и игры.
Заказчик сообщил, что они попробовали на маленькой светодиодной панельке — все хорошо работает. Картинка получается. Вы только сделайте ее побольше и еще нам видео нужно. Суперкачество не надо, 30 кадров в секунду нам хватит.

Кто и что этим товарищам наговорил про Ардуино — я не в курсе. Но они категорически настаивали именно на Ардуино. Ну еще Малину согласны добавить были. А больше — ни-ни.
Пошли мы с товарищем до дому — читать документацию, лапшу с ушей стряхивать и времена и скорости считать.

Я тут цифры приводить не буду — дело-то уже давнее, все уже прочно забыто, и где файлы с вычислениями — найти тоже не так просто. Долго ли, коротко — получилось у нас, что нужно поток несжатых данных гнать со скоростью около полгигабита в секунду и на 200-300 метров. Где-то его можно разделить на несколько потоков чуть меньше 50 мегабит в секунду. Можно было упростить задачу, загнав под лед дифференциальные линии передачи данных, потому как по одной линии, причем без земли (земля-то была, но силовая с токами в сотни ампер, а сигнальную проигнорировали) 800Kbps к светодиодам не сильно-то передашь. Тогда бы вся электроника оказывалась снаружи в шкафу, куда можно было попасть в любой момент.

Пошли снова мы к синему морю заказчику. Отказались категорически — панели уже сделаны, а рядом с панелями вешать дифференциальные приемники — типа не кошерно. Ага, а процессор вморозить рядом с панелью — это кошерно.

Получалось, что самое простое — сделать несколько контроллеров, каждый из которых поддерживал 8 линеек светодиодов (от 16 линеек тоже отказались — сигнальные провода к панелям тащить неудобно) и данные на этот контроллер пригнать через 100мбод Ethernet и UDP. Ни для какого более защищенного протокола просто не было времени. На головном компьютере готовились данные, передавались в Raspberry. По сигналу «три зеленых свистка» Raspberry гнала массивы данных через 1000 Мбит/с Ethernet в роутеры, а из них раздавались по 100 Мбит/с на кучу контроллеров. Часть роутеров на одной стороне катка, другая — на другой стороне. Соединять их планировали оптикой — расстояние в районе 200 метров.
На том и договорились.

Картинка ниже относится к намного более поздним событиям, на тот момент это была только идея.

image

И пошли мы снова, солнцем палимы, разбираться, что мы наобещали и как это сделать. Ethernet на контроллерах я никогда не использовал, а друг вообще ни разу не программист. Кстати, никаких готовых библиотек для передачи таких объемов информации в адресуемые светодиоды не нашлось. Еще и с контроллером полная неопределенность. Нужна была достаточно большая ОЗУ, минимальная потребляемая мощность и чтобы его в случае чего не порвало замерзающей водой. И, если помните, у нас ограничение на толщину было — 10мм. В эти же 10 мм входит и толщина корпуса — контроллер решили поместить в алюминиевый корпус и залить эпоксидкой. Вернее, какой-то адской композицией — у заказчика был на подряде товарищ, который с подводно-подледной электроникой был на «ты» и знал, как сделать рабочие устройства в таких условиях.

Насчет ардуины мы заказчика провели так, что он ничего так и не осознал. Готовых ардуин подходящего размера не существует, поэтому договорились, что плату разведем новую. Ну и развели — какие проблемы? Потом еще пришлось сделать, чтобы ее с помощью Arduino IDE и запрограммировать можно было. А чем не Ардуино? У каждого оно свое. Короче, наша дешевая подделка сошла за Ардуино.

Для начала нашел дома в загашнике демо-платку с STM32F407. Оперативка большая, должно хватить. Написал программку, которая с помощью контроллера прямого доступа и какой-то матери гонит данные для адресуемых светодиодов, получилось 16 линий по 1300 с небольшими копейками пикселей. Линий с избытком, но много — не мало. Надо сказать, позднее эта возможность очень даже пригодилась.

image

Про встроенный Ethernet-контроллер пришлось сразу забыть — любое прерывание не вовремя — и картинка разваливалась. Пришлось ставить внешний W5500.

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

Когда пришли платы для первого варианта контроллера, заказчики подкатили и первую панель. Пришлось в комнате под потолком повесить — по длине она почти как комната. Дом она не сильно украшала, но были в жизни и худшие эпизоды — как-то у нас в двухкомнатной малометражке несколько месяцев стоял БУВИП — блок управления выпрямительно-инверторным преобразователем от электровоза ВЛ-80Р. Кто в теме, тот поймет :)

image

image

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

image

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

Намного позднее, в каком-то интервью местной прессе товарищ из фирмы-заказчика говорил — дескать, мы, как Apple, начинали проект в гараже. Не знаю насчет Apple, то тут-то гараж был мой, о чем он скромно умолчал. И почему все это попало в гараж — тоже ни слова.
Но вывод, по-моему, они сделали парадоксальный — вот мы же говорили, что и так будет работать.

image

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

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

image

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

image

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

image

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



Первые панели разводил другой подрядчик и жаловался, какая тяжелая это работа — тысячи светодиодов, огромная плата со всякими вырезами. Компьютер едва-едва ворочается.
Сгубил я его ни за понюшку табака — написал на Python скрипт для Kicad, который за минуты делал 99% работы по разводке регулярных структур. Убил на это пару дней, зато теперь заказчик мог капризничать, как хотел — вот здесь мне уголки закруглите, а вот тут — подвиньте проходные отверстия на 0.2 миллиметра, а то мне не нравится. Раньше любая из этих хотелок вылезла бы в дни работы и посему никаких пожеланий к переделке никогда не возникало.

image

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

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

P.S.
А дальше пойдет жестокий и беспощадный DIY.
Как-то на Али, еще до всемирного кремниевого дефицита, я по ошибке купил STM32F103RCT6 вместо STM32F103C8T6 — заказал самое дешевое, что увидел (цена была — страшно вспомнить, €0.64 за штуку с бесплатной доставкой) — а оказалось, что на цену-то я посмотрел, а на название не обратил внимания. И ног у микросхемы почему-то многовато оказалось. Но из нее тоже получился неплохой контроллер адресуемых светодиодов, правда, в отличие от варианта на STM32F407, тянет всего 8 линий — ОЗУ маловато и SPI медленнее. Но где-то может и этого хватить. Если паять руками, то 64-ногую микросхему проще запаять, чем 100-ногую. Впрочем, это сделано было безо всякой цели, система управления по сравнению со светодиодными панелями копейки стоит.

image

Цель вообще-то была, но к делу не относящаяся: проверял еще одну свою самоделку — лазерный экспозер.

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


  1. volchenkodmitriy
    24.11.2021 09:44
    +7

    Спасибо - очень интересно! Всегда интересно читать про проекты которые успешно уходят в продакшен!!!


  1. 3epg
    24.11.2021 10:44
    +1

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


    1. DustyZebra Автор
      24.11.2021 11:12
      +4

      Не так давно - чуть больше 3 лет назад. Если бы решения были бы - их бы использовали. Готовые дисплеи толстые - нужно каток специально готовить, удовольствие не дешевое. Город - прямо на первой картинке, прямо на дисплее и написано. Но поменьше дисплей ставили еще в одном месте, в другой стране, но в то же время. Что сейчас творится - это я не знаю. Я в свое время неплохо развлекся, еще и денег заплатили.


      1. 3epg
        24.11.2021 12:22
        +1

        А какое было полное разрешение экрана? И как это всё было реализовано программно? Раз везде линукс, предположу, что малина каким нибудь ffmpeg’ом вырезала кадры из видео и кадр уже отправляла на микроконтроллеры? Или нет?


        1. psman
          24.11.2021 12:33

          Cамый простой вариант - это jinx и подобные ПО для работы с экранами и устройствами которые умеют в разные варианты типа dmx, artnet и т.п.

          В самом простом варианте ардуина по usb может принять видеобуфер и отправить его на ленту (гуглить Glediator), с в более сложном варианте плата на esp по wifi может ловить тот же буфер представляясь ArtNet девасом, особо удобно что ног много и на каждую по ленте можно посадить по разным universe


          1. DustyZebra Автор
            24.11.2021 14:59
            +2

            Про wifi на стадионе можно забыть - у каждого телефон в кармане, у половины - wifi включен. А usb далеко не ходит :(


            1. psman
              03.12.2021 08:38

              WiFi в телефонах в режиме клиента, а не точки доступа, но это так, лирическое отступление. Не вижу проблем что бы прокинуть сеть проводную и передавать данные по проводам спокойной. Ардуино тут не самое удобное решение, есть Pi, есть подобные другие платы в на которых можно сделать многоканальный вывод на ленты картинки.


        1. DustyZebra Автор
          24.11.2021 12:39

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


  1. uburame
    24.11.2021 13:59
    +2

    Неужто лёд не растопило это панелью? На катке в Парке Горького как-то пытались вмораживать светодиоды для подсветки через лёд, да перестали - растапливают.


    1. DustyZebra Автор
      24.11.2021 14:36
      +4

      Вы как в воду смотрели :)

      Использовать можно ограниченное время - один раз кто-то на ночь забыл выключить дисплей - утром были лужи. И разборки - кто не выключил :)


      1. IndyCar
        24.11.2021 17:17

        о класс :)

        кстати , из моей практики - хоть 32 ноги хоть 208 ног микросхемы паять несложно, сложнее их не перегреть. И да - плата должна быть обязательно с паяльной маской.


        1. ilyawg
          24.11.2021 20:52
          +1

          Это чем же таким вы их паяете, что есть риск перегреть? Даже страшно подумать


  1. andry67
    24.11.2021 14:38

    А в вашем PCB Laser Exposer "белый" лазер или просто мощный светодиод с оптикой стоит? Вообще классная идея использовать LSU от принтера.


    1. DustyZebra Автор
      24.11.2021 15:59
      +1

      Засветить можно только ультрафиолетом - там стоит 405нм лазер, детали тут https://mysku.ru/blog/diy/78424.html и тут https://mysku.ru/blog/diy/78847.html


      1. Daddy_Cool
        24.11.2021 17:53

        Спасибо за ссылки! Сам с лазером сейчас собираюсь возиться.


        1. DustyZebra Автор
          24.11.2021 18:07
          +1

          Да не за что - это мои статьи, обращайтесь, если что.


        1. iliasam
          24.11.2021 18:12

          На Радиокоте большое обсуждение есть: https://radiokot.ru/forum/viewtopic.php?f=8&t=119089
          Плюс там тоже пытаются внутренности лазерного принтера использовать: https://radiokot.ru/forum/viewtopic.php?f=8&t=143471


  1. VT100
    24.11.2021 21:29
    +9

    Вот так "пенсы" не дают молодой неграмотной шелупони выбиться в "единороги". Так держать!


  1. 8street
    25.11.2021 08:23
    +1

    Ну елы-палы. Надо было убедить заказчика на промышленный ПК (IPC). Ну и проектор поставить сверху, хотя возможно это не так круто бы смотрелось.


  1. Dark_Purple
    25.11.2021 08:52

    Про встроенный Ethernet-контроллер пришлось сразу забыть — любое прерывание не вовремя — и картинка разваливалась. Пришлось ставить внешний W5500.

    Так вот в чем дело, я то думаю почему "синий экран смерти" периодически появляется, а это я не вовремя прерывание клавиатурой и мышкой вызываю и всё разваливается :)


  1. axe_chita
    26.11.2021 03:58

    Лютейший DIY! Класс! И как это знакома эта фраза «У нас все готово, тут делов-то взять и подключить». И гонка на перегонки со временем к дню «Д» и часу «Ч»! Читалось на одном дыхании.


  1. av-86
    26.11.2021 13:48

    На картинке с печатной платой (https://habrastorage.org/r/w1560/webt/ba/c9/nd/bac9ndbvi9qdeomzp99too0jtii.jpeg) рядом с выходами микросхемки по 2 на выход. Не вижу, что за звери. Оптопары сдвоенные?


    1. DustyZebra Автор
      26.11.2021 15:54

      Только одна на выход, на одном разъеме - 2 выхода, обычный 485 драйвер.