Химера. Часть 3.
До последнего момента я и сам понятия не имел, как буду финишировать Химеру. Там, на самом деле, не так уж много чего и оставалось. Собственно, ей требовался некий корпус-ящик, который скроет начинку. Как и из чего он будет сделан – были только предположения и картинки в воображении. Это придавало проекту некую интригу. Но все, рано или поздно приходит к развязке. Пять минут там, пол часа сям, под дня на выходных… Потихоньку что-то нарисовалось и, как-то, почти само-собой, сделалось.
Оно размазалось, конечно, на пару-тройку недель, но, давеча, принимая утренний кофе перед уходом на работу, обнаружил готовую Химеру уже весящую на положенном ей месте между стеллажами. Сперва удивился и только потом вспомнил, что, ну – точно! – сам же накануне вечером в воскресенье матерился, пытаясь скрюченными после лопаты руками вогнать в неё последний винт… Но обо всем по порядку.
Итак, кузов… Ну, т.е. некая коробка, в которую все готовое на текущий момент должно уложиться. Типа, вот такой:
Проблема была в том, что печатать мне эти здоровенные панели для крышек не хотелось. Во-первых, на это уйдёт тонна пластика. Во-вторых, у меня есть в загашнике материал, который только и ждёт, чтобы его в эти панели и крышки превратили. Но “превратили”, значит – нарезали на ЧПУ-фрезере. А чтобы это сделать, ЧПУ-фрезер надо сперва выкопать из бардака в гараже. Даже после раскопок, процесс резки на нем требует моего присутствия. Это не 3D-принтер – кнопку нажал и спать пошёл. Это надо там сознательно присутствовать, нажимать кнопки, стоять рядом, курить, пристально смотреть на шпиндель с умным видом и все такое. Т.е., надо выделить под эту процедуру хотя бы пол дня. И этого “пол дня” у меня решительно все никак не случалось.
Чтобы проект с Химерой не превратился в ещё один пункт программы на какой-нибудь “2036 год – год додела” решил найти некий компромисс, где хотя бы половина работы будет возложена на робота за которым не нужен постоянный присмотр…
Складывается так, что задняя стенка корпуса должна быть вся в разъёмах и гнёздах. Т.е. сплошные отверстия и проемы, что подразумевает не слишком большой расход пластика. Поскольку морда лица этого же устройства была изготовлена посредством печати, а по размерам она не слишком отличается от задней стенки, то имело смысл и эту заднюю стенку тоже напечатать. А крышку, дно и боковины – вырезать на фрезере, когда найдётся время. Так, хоть, вечера на неделе не пропадут. Пока там все в заднюю стенку прикрутится и припаяется…
Соответственно, задняя панель была разработана в виде деталей годных для печати:
На сон грядущий в принтер было отправлено задание, над которым он и трудился самостоятельно всю ночь напролёт пока я почивать изволил. Люблю роботов…
Получившиеся наутро детали оставалось только скрутить вместе:
Качество печати продолжает стабильно падать. Для вот такого рода поделок ещё терпимо, но если я намерен вернуться к проекту с механической собачкой в начале лета, как это было запланировано, придётся что-то с этим делать. Я знаю откуда проблемы растут, знаю что и где надо починить и чего поменять в принтере. Его доделка и ремонт стремительно двигается вверх по списку задач на “2021 – год додела“. Химера, вероятно, вообще, станет последним проектом с участием Чёрной Вдовы в том виде, в каком она есть сейчас (незавершённая, изношенная и совершенно расстроенная).
Покрутив сборку так и сяк, поскребя голову, пришел к выводу, что задняя стенка Химеры все же нуждается в маркировке. Не для красоты или эстетизьму, а просто потому, что, когда через год-другой подробности проекта выветрятся из головы, я не хочу рыть собственный же блог и разыскивать в облаках файлы со схемами только для того, чтобы вспомнить из какого там у неё гнезда какое напряжение вытекает.
Вышкуривание, шпаклёвка, грунтовка, покраска, гравировка лазером, заполнение маркировки, смывка – все то, что я в последнее время проделывал в плане высокохудожественной маркировки деталей. Не канает! Очень долго. Очень трудоёмко. Сей проект не из той категории, когда это было бы оправданно. Особенно по времени. Прям, хоть, просто фломастером подписывай…
Но так низко я все же не пал, конечно. Воспользовался методом, хорошо освоенным более 10 лет назад (по нынешним временам, чуть ли не “дедовский способ”). Самоклеящаяся бумага, принтер, ламинатор, скальпель:
Что прокатывало в 2009 году, прокатило и сейчас. Управился меньше чем за час, вместе с рисованием… И поиском самоклеящейся бумаги (с огромным трудом нашел в загашнике всего один лист, уже начавший желтеть за давностью лет).
Сойдёт… Не так солидно, как гравировка с заполнением, но, все же, лучше чем подписи фломастером от руки.
Теперь заднюю панель можно нашпиговать гнёздами и обвешать всяким декоративным фуфлом призванным сделать вид, что так и было задумано с самого начала (на самом деле, чтобы скрыть позорные, кривые, с бодуна вырезанные ножницами проёмы в наклейке вокруг вентилятора и гнезда USB):
Разъёмы на “прямых” и “управляемых” выходах оказались разными. Это было известно заранее и детали печатались уже с учётом этой особенности. Так уж сложилось по загашникам. Было 12 штук одного вида и полдюжины – другого. Хотя, по типу гнезда, разъёмы абсолютно одинаковые (стандартный 2-пиновый DC Power Jack 5.5×2.1 мм). Корпуса разные. Но, в данном случае, это не наносит никакого ущерба, ни для функционала, ни для внешнего вида. Вообще, через год я уже сам забуду почему разъёмы различаются по внешнему виду и буду искренне верить, что так и было задумано с самого начала и в этом кроется какой-то сакральный смысл. Так, что все ОК…
Для морды лица Химеры была задумана декоративная фальш-панель.
Поскольку устройство делается “на лету” без предварительно проработанного Плана, то велика была вероятность, что морду лица придётся доделывать напильником. Дырку какую, возможно, придётся досверлить или ещё как попортить. Поэтому единственный “план” который был при создании лицевой панели – “потом все накрою фальшью, авось прокатит”.
Удивительно, но морду допиливать не пришлось. Она удалась, как нужно, с первой же попытки. К сожалению, это не отменяло необходимости делать для неё фальш-панель… Таков неизбежный итог “проектирования по месту”. Либо теряешь время и силы на допиливание, либо теряешь его на изготовлении того, что не нужно было бы делать, если бы все было продумано заранее. Да, чего уж теперь…
Фальш-панель для морды состоит из плоской накладной пластины и прозрачных вставок в нее:
Печаталось на фотополимерном Фотоне. Своего рода эксперимент на тему: стоит ли в будущем прибегать к его услугам для такого размера панелей. Дело в том, что мысленно я уже примерялся к этой теме в контексте некоторых деталей обшивки для механической собачки. Но нужно было сперва попробовать на чем помельче. Вот и повод подвернулся.
Вывод: категорически не стоит!
Во-первых, оно не получается белым/прозрачным сразу. Но это наименьшая из бед. Опыт показывает, что желтизна из деталей уйдёт через пару недель… Да и баллоны с аэрозольной краской пока ещё не запретили.
Есть “лайфхак” на этот случай.
Вся эта желтизна – попавший при печати в смолу лишний кислород. Он начинает там реагировать с компонентами фотополимера и формировать всякие смешные связи с участием карбона и кремния. Отсюда и желтизна. Со временем, кислород сбежит обратно в атмосферу, связи рассосутся, и все устаканится, как и должно быть… Во всяком случае, так мне это объяснили диванные иксперты мирового уровня и другие авторитетные серые пятна из интернета…
Процессу выдворения кислорода можно существенно поспособствовать нагревом. Соответственно, отпечатанную деталь можно просто несильно прогреть феном.
Я попробовал – да, действительно работает. К сожалению, если деталь случайно перегреть, то фотополимер из которого она печатается, начинает расслаиваться и трескаться. При этом ещё, даже, если деталь и не трескается, то почти всегда деформируется. Так, что, ну его нафиг такую “постобработку”… Со временем оно проходит и само…
Во-вторых, пластину такой толщины и размера, при высыхании ведёт безбожно! Всю выгибает и перекручивает. Не то, чтобы, прям, штопором, но весьма существенно. И вот это уже не уходит ни со временем, ни как вообще. Так и остаётся перекрученной.
В данном случае, фальшпанель удалось таки приклеить на морду Химеры, прижав и разровняв струбцинами:
Теоретически, такое напряжение в материале чревато трещинами в будущем. Или клей не выдержит… Посмотрим… Боюсь, как бы не пришлось эту фальш-панель всю переделывать.
Но пока оно держится:
Фотополимерный принтер для меня все ещё новая игрушка. Ошибки неизбежны:
Так… Пока оно не отвалилось, надо быстренько оставшийся кузов запилить…
Для остальных частей кузова, в гараже уже давно валялся здоровенный шмат акрилового стекла. Его необходимо было порезать так, чтобы получилось четыре панели, формирующие нижнюю и верхнюю крышки, плюс две стенки:
Пару лет назад, рядом с моей работой, была какая-то автослесарня. Там народ делал всякий шизоидный моддинг траков. Из серии “кровь из глаз”… Братья по разуму, в общем… Но не суть… Главное, что в какой-то момент они исторгли из своих недр большой кусок белого плексигласа на выброс. Они на нем, не то герметик какой-то мешали, не то клей, не то шпаклёвку на основе эпоксидки, может, у них просто что-то протекло на складе – пёс их знает. Так или иначе, здоровенный лист хорошего материала за фуфу угробили! В магазине мне лист такого размера обошёлся бы под сотню баксов – не меньше.
В общем, с одной стороны лист был равномерно убабахан присошим… чем бы там оно ни было. Зато обратная сторона – вполне себе норм. Пройти мимо такого сокровища я не смог, само собой. Лист был настолько здоровый, что увозить его пришлось на крыше моего SUV, свёрнутым вдвое – в салон-багажник оно не лезло, даже если все сидения сложить.
Ну, вот, наконец, “лягушка и пригодилась” (жёлтые разводы, это как раз то самое засохшее и есть):
Само-собой, над испорченной половиной панели пришлось изрядно потрудиться шлифмашинкой, шкуркой и полировальной “мочалкой”. Итоговый результат вышел вполне приличным:
Чем бы оно ни было, то, что там присохло, оно не бралось, ни ацетоном, ни ремувером краски, ничем химическим вообще. Перепробовал все средства, что были в моем распоряжении. Помогла только механическая обработка орбиталкой.
Боковые панели нуждались в дополнительном обвесе:
Зелёный вкладыш, это, типа “фазоинверторная трубка”… Толку от неё никакого, разумеется…
Полость за динамиком забита синтепоном. Взял его из разодранной Псом большой игрушки. Может это и не синтепон вовсе. Но, определённо, что-то сходное по свойствам и одобренное лучшими собаководами для производства мягких жевательных игрушек. С наполнителем оно стало звучать значительно мягче… И теплее… Что бы это ни значило.
На самом деле, и то и другое мне настоятельно советовал сделать друг. Я так давно измываюсь над его аудиофилией, что он уже окончательно записал меня в распоследние сволочи. Поэтому решил сделать старику приятное. Попробовал трубки разной длины, как он рекомендовал, различную плотность синтепона в полости и т.п. На самом деле, разницы я не услышал никакой вообще. Но другу сказал, что его советы очень помогли. Он радовался, как ребёнок!
Как устройство, Химера полностью готова. Ей не хватает только одной маленькой детальки – кронштейна для подвеса к стеллажам.
По ходу всей пьесы в голове рисовалось несколько видов крепления, разной степени извращённости. Когда удалось физически взять в руки весь этот ящик и приложить по месту между стеллажами, выяснилось, что ничего мудрить не придётся вовсе. Все оказалось очень просто. К корпусу нужно было добавить четыре вот таких “крючка”, которые крепятся к нему теми же самыми винтами, что удерживают на месте панели кузова:
Этими крючками Химера просто цепляется за полки стеллажа:
Просто повесить, просто снять. Не часто, но могут возникнуть ситуации, когда штекер там будет неудобно сзади втыкать в самой глубине ниши позади Химеры. Тогда можно её будет просто снять, воткнуть чего надо и повесить обратно. Минимум усилий и времени.
Последний марафет перед подвешиванием:
Собственно, вот и все… Ширина корпуса навязана расстоянием между стеллажами. Длина навязана глубиной ниши между стеллажами. Высота – диаметром динамиков. Естественно, что внутри ящика остался вагон пустого места. Но кто знает, что ещё со временем придёт в голову туда запихнуть…
И хотелось бы сказать, что, например, туда же может уйти сервер управляющий контроллерами дома. Но – нет. Для сервера управляющего контроллерами дома у меня припасено нечто особенное и совершенно безумное! Аж самому страшно. Сама идея вынашивается уже несколько лет и, рано или поздно, она таки будет принесена в этот жестокий мир… Так, что, в ящике может оказаться что угодно, но не сервер управляющий контроллерами дома. Пускай там будет пока, допустим, загашник со стратегическим запасом нихрена. С моими проектами никогда не знаешь заранее, что понадобится найти в загашнике.
Итог проекта:
Теперь, наконец, могу избавиться от кучи индивидуальных блоков питания. Проводов, конечно, сильно меньше не станет, но теперь им не нужно бегать под стол к розеткам. Да и самих розеток теперь освободится изрядно.
Непосредственно про светильники по столам и между ними – будет отдельный пост. Они ещё не вполне готовы (а центральный так и вовсе существует пока только в теории). Те, что над столами – работают, да. Но и они сейчас скорее прототипы, нежели законченные изделия.
По управлению Химерой…
На морде четыре кнопки. Каждая управляет своим 12-вольтовым выходом (условно: A, B, C и D). На них будет висеть подсветка над столами. Нужно три: правый “паяльный” стол, левый “слесарный” стол, центральная “декоративная” область между стеллажами. Четвертая кнопка (C), управляющая четвертым выходом – в резерве.
Каждая кнопка имеет три состояния: вкл., выкл. и автомат (в последнем случае светится зелёным, как B и D на фото выше). Короткие нажатия инициируют вкл. и выкл. попеременно. Долгое нажатие – кнопка уводит управляемый ею выход в автоматический режим.
В автомате выходы настроены вести себя по-разному.
Так, например, лампы над столами реагируют только на присутствие. Если в области столов долгое время ничего не шевелится, то свет над ними через минуту выключится. Если что-то пошевелилось – свет включится (или, если свет уже был включён, сбросится таймер и пойдёт отсчёт нового интервала). Не важно, светло в комнате или темно. Свет над рабочими столами нужен даже, когда верхний свет в комнате горит. Но он точно не нужен, когда в комнате никого нет.
А, вот, свет в “декоративной” области между стеллажами нужен чаще всего только для фоновой подсветки в темноте. Поэтому она реагирует и на движение, и на уровень освещённости. Например, если я, скажем, войду в тёмную комнату, то включившаяся фоновая подсветка укажет путь к основному рубильнику. Если в комнате и без того светло, то фоновая подсветка не включается, хоть голым там танцуй перед сенсором движения.
Есть минус в системе. Но я не знаю, стоит ли тратить сейчас время на его устранение.
Дело в том, что сенсор не видит разницы между людьми, животными или женщинами. Лишь бы объект был достаточно теплокровен, чтобы генерировать тот уровень инфракрасного излучения, которое сенсор способен уловить. Как следствие, свет срабатывает и в том случае, когда в кабинет заходит, например, Кот, чтобы поспать в кресле. Уж на Пса то оно срабатывает тем более…
Звери не склонны часами кружить по кабинету без остановки. Поэтому, Пёс, скажем, пришёл ночью, в окно порычал, работу выполнил, ушёл. Свет сам погаснет через минуту. Если он там же и уснул случайно, то свет все равно погаснет, поскольку Пёс, хоть и присутствует, но не двигается. Пока он не двигается, сенсор его “не видит”.
Ни Пса, ни Кота, вся эта цветомузыка не беспокоит совершенно. Нас – тоже. Даже ночью. Потому что кабинет находится в противоположном от спальни углу дома. Зажегся там свет или нет – из спальни не видно…
Если со временем я таки решу, что этот косяк надо устранить, то просто ограничу сенсор “углом зрения”, исключающим все, что ниже уровня стола. Как, например, это было реализовано для шкафа у входа в спальню… Время покажет…
Ясен пень, контроллер прицеплен к общей системе управления домом и может управляться дистанционно с любого смартфона, компьютера, планшета – со всего, где можно запустить браузер. Так, что, в принципе, я могу повырубать всю автоматику контроллера в кабинете, не вылезая из кровати в спальне.
Что касается Химеры в её ипостаси “погодной станции”…
Экран показывает температуру, влажность и атмосферное давление в помещении (последнее, нахрен не нужно, но оно просто есть в модуле BME280 де-факто). Светодиоды по бокам визуализируют эти параметры, чтобы экран не читать. Скользнул по ним взглядом – получил информацию:
Пока “столбик” слева зелёный и по центру – в комнате комфортная температура. При повышении температуры, столбик начнёт краснеть и расти. При понижении – синеть и уменьшаться.
Аналогично и для влажности. От более “сухого пустынного” цвета до “мокрой синевы морской”. Голубенькое по середине – влажность ОК.
Просто для иллюстрации (паяльный фен имитирует глобальное потепление в области сенсора – дую им издалека, иначе он зашкаливает сенсор почти мгновенно):
Видно, как с повышением температуры падает влажность. Что логично. Фен, нагревая, сушит воздух, попадающий на сенсор…
Есть ещё и индикация связи с сервером.
Две вот эти лампочки:
Дело в том, что используемая в контроллере ESP32 страдает раздвоением личности. Так было задумано. Для сервера, “погодная станция” и “контроллер устройств”, какбе – две разные сущности. Они обрабатываются кардинально разными способами. Так вышло, что в этом устройстве сошлись вместе сразу обе две эти сущности. Чтобы не рушить логику работы системы, не создавать исключений и не городить прочих костылей на стороне сервера, проще было научить контроллер прикидываться и тем и другим в индивидуальном порядке. Сервер распознает устройства по уникальным ID. Ну, так, Химера их и имеет два. Одним она пользуется для обмена данными с сервером, как “контроллер устройств”, другим, как “погодная станция”. Сервер искренне верит, что с ним разговаривают два разных физических устройства. Наивный… Люблю роботов…
Сессии связи для каждой из сущностей разные. У каждой свой временной интервал, свой набор параметров и т.п. Отсюда и два индикатора на панели. Верхний (1) для “погодной станции”, нижний (2) для “контроллера устройств”.
В обычной нормальной жизни, индикаторы еле заметно вспыхивают синим – пока длится сессия обмена данными с сервером. Это занимает меньше секунды, поэтому зачастую эти вспыхи не улавливаются мозгом сознания. Только если специально обращать на них внимание:
Само собой там внутри предусмотрены автоматические реконнекты на случай потери связи, повторные отправки/запросы данных в случае, если кто-то кого-то не расслышал и т.п. Все это делает устройство весьма автономным, самостоятельным и не нуждающимся в обслуживании. Упал, сам поднялся. Сервер упал, будет ждать когда поднимется. Роутер отвалился, будет ждать и пробовать подцепиться.
Лампочки для каждой из сущностей умеют показывать разные статусы соединения. Горит зелёным, когда сущность пытается прицепиться к роутеру. Красным, если по какой-то причине это не удалось. Желтый – к роутеру подцепился, но не может достучаться до сервера. Есть ещё противно-розовый. Его я никогда ещё не видел в реальной жизни, но он заложен в программу и проверен на уровне имитации проблемы. Это на случай, когда, и к роутеру получилось прицепиться, и до сервера удалось достучаться, но в ответ сервер прислал что-то, что контроллер не смог распознать (недопустимый статус для кнопки, несвойственная для той или иной сущности команда, не прислал “код подтверждения” и т.п.). Ну, мало ли…
Такое сделано вообще для всех контроллеров, которые я распихиваю по дому. Никого ещё индивидуально приводить в чувство не приходилось. Электричество пропадало, роутер вырубался, сервак падал, скрипты сервака начинали нести ересь после очередной моей вдохновенной “оптимизации кода” – контроллеры это все не смущает. Работают сами в себе, если связи нет или она “неправильная”. Работают в связке с сервером, если связь есть и она “правильная”. Никто ни от кого не зависит напрямую. Падения какого-то одного элемента системы, не влияет на работу и функционал других её элементов. Например, выключатели света будут включать и выключать его вне зависимости от того, есть у них связь с сервером или нет. Все внутренние автоматические режимы, завязанные на локальных сенсорах будут работать, как и работали. Вырубится их дистанционное управление, да. Но управление с физической кнопки на самом контроллере никуда не денется.
С одной оговоркой про контроллеры, типа “погодная станция”. Сами контроллеры не хранят в себе “исторические” данные. Только текущие на данный момент. Их они будут исправно показывать на своих экранах при любом раскладе. Но, если связи нет, то для общей базы данных на сервере, эти показания будут утеряны на том интервале времени, в течение которого связь отсутствовала (текущие показания отправляются на сервер один раз, каждые пять минут)… Контроллеров типа “погодная станция” у меня в доме пока всего два – в гостиной и в кабинете. Нарушения связи случаются исключительно редко. Пробелы в истории показаний не кажутся мне пока хоть сколько-нибудь критичными (да и, вообще, нужными), чтобы имело смысл этой проблемой заморачиваться…
Ну и напоследок… Тест натуральности и естественности звука из колонок.
Есть у меня для этого специальный прибор. Он многократно был проверен на различных звуковоспроизводящих устройствах. Опыт работы с этим прибором показывает, что оный совершенно никак не реагирует на звук из смартфона, ноутбука, компьютерных колонок и другой вот такой шелупони. Ваще не реагирует, оставаясь, обычно, в спящем режиме. Иногда, очень редко, реагирует на звук из системы домашнего кинотеатра. У меня в закладках, даже, лежит специальный ролик, который всегда используется для проверок такого рода.
Я был шоке, когда прибор однозначно и уверенно прореагировал на Химеру. К сожалению, видео первого теста нет. Просто, не сомневался в том, что прибор на Химеру отреагирует так же, как и на всё прочее – проигнорирует. Поэтому запись не вёл. Каким же было моё удивление… Впрочем, сами смотрите. Дубль два:
Трудно сказать, какой из этого всего можно сделать вывод. Но, если оно звучит достаточно натурально и естественно для Пса, то сойдёт и для меня. Шах и мат, аудиофилы! 🙂
Fin.
Комментарии:
С Кота на последнем видео можно писать картину – “Звезда в шоке” 🙂
Кста, а управляющий комп умного дома на чем работает? Не ноде – ред случаем?
“Управляющий комп” – громко сказано. Это малина + энджикс + пхп + мускул. Поскольку “механика” управления контроллерами, в данном случае, проста, как кирпич, то разработка шла не стороны механизмов управления, а со стороны “красоты интерфейса”. А для меня нет ничего быстрее и удобнее, чем нахреновертить UI а-ля инопланетянский HUD в формате html-документа. С учетом того, что я занимаюсь этим “рисованием” с конца 90х прошлого века плюс все нынешние примочки на DOM и CSS, то там ваще у меня на минуты счет идет, так руку уже набил 🙂
Вот тут в конце об этом есть немного (начиная со слов “Вот так выглядит структура БД в центральном сервере”).