Авторизация
Регистрация

Напомнить пароль

Автоматизация управления экраном домашнего проектора

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

Disclaimer aka отмазка

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

Суть проблемы

Имеются проектор, моторизированный экран и ресивер. Даже при учете того, что источник изображения всегда включен, процесс начала просмотра все равно включает в себя много операций:
  • включить ресивер
  • включить проектор. Когда-то давно у меня была плазма, она по HDMI-CEC умела включаться сама. Текущий проектор не умеет
  • опустить (развернуть) экран

При завершении просмотра, соответственно, необходимо проделать операции в обратном порядке. В том числе и свернуть экран (не только производители экранов, но и любые другие специалисты настоятельно советуют это делать, чтобы ткань не растягивалась. Кто я такой, чтобы с ними спорить?) :-)

В общем, процесс заметно раздражал даже меня, а жена вообще рычала. К экрану я еще вернусь чуть позже, сейчас же отмечу, что в документации ничего особого о способах управления сказано не было, однако на самом устройстве были многообещающие разъемы Trigger, RS-232 и IR. А раз так — то надо искать способ автоматизации всего этого. И вообще, лень, как известно, двигатель прогресса.

Концепция

(о том, чем я руководствовался при выборе решения, расписал под спойлером, т.к. не всем может быть интересно)
Погуглил, как обычно автоматизируют экраны. К сожалению, львиная доля топиков — про то, как добавить мотор к уже имеющемуся экрану. Но я-то благоразумно купил моторизированный! Нашлись советы и для таких счастливчиков, как я. Так, в ряде мест упоминалось, что на экранах обычно есть разъем Trigger (а у меня такой есть, ура!), такой же разъем бывает на проекторах. Принцип работы элементарный — с Trigger Out (такой должен быть у проектора) подается 12В, устройство с Trigger In (экран проектора) на это реагирует разворачиванием. При выключении проектора вместо +12 Вольт становится 0 и экран сворачивается обратно.
Итого всех расходов — кинуть провод от проектора до экрана, вот только оказалось, что разъема Trigger в моей модели проектора нет…
Зато такой разъем (даже два!) был в моем ресивере. Но только тут была еще одна проблема. Trigger на экране действует правильно, я проверил. Однако экран разматывается до конца, что мне не подходит, это слишком низко для моих стандартных потолков в 2.70. Нужен был способ останавливать экран при разворачивании на требуемую длину. Так что разъем Trigger пока отметаем…
Помимо мультимедийных разъемов имелся только RS-232. В инструкции к проектору нашлась довольно полная информация об управлении по COM. Отлично, значит, с проектором можно справиться, надо разбираться с разъемами на экране.

Экран у меня CACTUS SilverMotoExpert CS-PSSME-220X138-DG. Инструкция по эксплуатации вообще не рассказывает о назначении разъемов. Но я отдаленно припомнил, что когда-то, когда выбирал экран, смотрел модель какого-то другого производителя, где было рассказано про разъемы, а они были визуально похожи. Значит, подумал я, скорее всего это просто китайский OEM, который продается под разными брендами. Те подходят с разной степенью ответственности к переводу документации, но мне подойдет инструкция и от другого экрана, лишь бы она ответила на все мои вопросы.
Нашел визуально похожий экран от другого бренда, Digis, его инструкция куда как более полная. В частности, указана как распиновка, так и команды для взаимодействия.
Дальнейшие поиски показали, что у всех других экранов, которые я смог найти (не только в РФ, но и на Амазоне и прочих) с такими же разъемами, команды для управления индентичные, хотя вот распиновка иногда отличалась. Все это говорило в пользу того, что реальный разработчик электроники один, но, возможно, есть разные ревизии управляющей платы.
Кроме того, в инструкции к одному из экранов нашлась вот такая интересная штука.

Стоит примерно 10000 — 12000 рублей, позволяет управлять экраном с любого проектора. Универсальность обеспечивается подходом — данное устройство с самим проектором никак не взаимодействует. По сути это розетка-мощемер, которая, при обнаружении нагрузки («проектор включился»), по радиоканалу пересылает команду дочерней плате, которая втыкается в разъем IR экрана.
Платить 10К было как-то неспортивно, плюс у производителя заявлена совместимость устройства только с экранами их производства. Визуально-то все похоже на мой, но кто знает, что там по этому IR будет отдаваться… Значит, будем изобретать велосипед.


Итак, мой велосипед мне виделся некой платой-контроллером, которая будет опрашивать статус проектора по RS-232 и, в зависимости от его состояния, сворачивать или разворачивать экран (опять же по RS-232). На обратную связь (вручную свернул экран — выключился проектор) рассчитывать не приходилось, так как экран команды умеет только принимать:


Цена контроллера (в разумных рамках) не столь интересовала, но имеющуюся у меня апельсинку сразу отмел, т.к. она просит БП 10 Вт. Вспомнил об ардуинах. Одна ардуинка (нано) у меня даже валялась (осталась от проекта с AmbiLight), но ее тоже пришлось отмести, т.к. мне нужно было два порта RS-232. Гугление подсказало, что из одного COM-порта на ардуино можно сделать пару через библиотеку Software Serial, но мне не захотелось связываться со сложностями, которые сулило это программное разделение, плюс были подозрения, что получить два порта с разной скоростью передачи (9600 и 2400) не выйдет. Так что весь мой выбор свелся к Arduino Mega Pro, хотя остальные возможности платы мне, вроде как, не были нужны.

Я же обещал рассказывать о граблях? И вот первые из них. На самом деле (это уже после того, как я получил реальный опыт работы с Serial) работа с библиотекой Software Serial практически ничем не отличается от работы с аппаратным портом, разница буквально в пару строк (подключить библиотеку и инициализировать софтовый порт). Ну и так вышло, что вторую проблему (разная скорость интерфейсов) я тоже обошел, о чем расскажу чуть позже. Выходит, для моей задачи Mega Pro была не нужна, можно было обойтись любой ардуинкой. Тем не менее, купил-то я Mega Pro, поэтому и дальнейший рассказ будет о ней.

Ну и еще хочу заметить, что в Mega Pro три Serial-порта. Два для подключения устройств и один для отладки (вывода сообщений на компьютер по USB). Имея опыт работы с COM-портами на ПК, в том числе и с моим проектором (об этом чуть ниже), я был уверен, что задача «тут считал, сюда отправил» достаточно примитивная и три последовательных порта мне не нужны. К счастью, с двумя аппаратными портами ардуинок не нашлось, но теперь я могу сказать, что без дебага получить рабочее решение мало реалистично. Этих грабель я избежал, но лишь по случайности.

Итак, что я закупил для проекта? Внимание: далеко не все из этого нужно, поэтому, если вы хотите воспроизвести мой проект, не стоит всё бездумно покупать, читайте и описания тоже!!! Ссылки давал на те вещи, что покупал лично я, но, как всегда, перед заказом рекомендую проверить цены — возможно, вы найдете более выгодные предложения.

  1. 1. Собственно, Arduino Mega Pro Mini. Как я и писал выше, функциональность этой платы в итоге оказалась излишней и подошел бы более дешевый вариант. Сейчас вообще есть много действительно копеечных контроллеров типа STM*, если в каком-то из них есть последовательный порт, то пошли бы и они. Мне отдельные чипы не подходили. Во-первых, к ним всегда нужна простейшая обвязка, а у меня дома нет резисторов-емкостей-конденсаторов, т.е. надо еще и их покупать, а штучно они выходят довольно дорогими). Во-вторых, все это надо куда-то паять, т.е. нужно проектировать свои платы, плюс иметь шанс все это перегреть при пайке (повторюсь, я не электронщик). В общем, мой выбор — готовые платы производителей, которые будут работать из коробки и исключат кривые руки при сборке. Отличие Mini от обычной версии исключительно в форм-факторе пинов
  2. 2. Две платы RS-232 To TTL converter. Докупались позже (объясню, почему), пригодилась в итоге только одна.
  3. 3. Voltage Sensor. Вообще о таком не думал, но когда искал ардуинку, в рекомендациях алиэкспресса такой модуль всплыл. А что, подумал я, ведь разъем Trigger есть у меня в ресивере! Возьму на всякий случай, вдруг пригодится? И таки пригодился. Думаю, что надо еще раз заметить: вот уж конкретно этот модуль (хотя и все остальные, используемые мной в этом проекте, тоже) совсем примитивный и собрать такое на коленке несложно. Но и обошелся он мне в 20 рублей, а соображения про отсутствие компонентов и сомнения в прямизне рук я описал в пункте 1.
  4. 4. 16-тиканальный мультиплексер CD74HC4067. И вновь напомню свои размышления о рассыпухе. Так-то тут стандартный чип и пара дополнительных элементов всего. Но разводить все это «на коленке» я б замучался. Важно отметить, что хватило бы мультиплексера на 4 канала (но таких в виде платы вроде как не бывает) и, тем более, на 8 каналов. Платы на 8 каналов бывают (74HC4051), но я обходился тем, что в наличии в локальных магазинах, т.к. необходимость мультиплексера всплыла на последних этапах. Так-то рекомендую покупать именно на 8 каналов, они более компактные. Например, вот .
  5. 5. Два гнезда RJ-9 (4P4C). Как-то особо не задумывался, почему выбрал именно такой тип разъема. По работе часто сталкиваюсь с COM в стандарте RJ-11/RJ-45, на экране, опять же, оно (правда, RJ-11 6P6C). Плюс сам разъем механически довольно надежный (джек защелкивается в разъеме, не выдернуть случайно, если ковыряться в ТВ-стойке). В общем, на тот момент мне казалось это логичным. Минус всплыл позже — гнезда довольно высокие, поэтому бутерброд из ардуино и платы с разъемами не влез в корпус. Если бы я собирал второе такое устройство, я бы уже использовал разъемы 3.5 мм 4-pin, они гораздо более компактные.
  6. 6. Собственно, корпус. Корпус я подбирал под габариты ардуинки и она туда так идеально подходила… Более того, все остальное тоже отлично разместилось под размер этого корпуса… В общем, не мог не упомянуть корпус, он мне понравился своим удобством. Опять же, можно говорить «да за что такие деньги?!», но для цен чип-и-дипа корпус довольно бюджетный. На али похожих по габаритам и конструктиву найти не смог (не утверждаю, что их не бывает). Тем не менее, я воспользоваться корпусом не смог из-за пункта 5. Не совершайте моих ошибок — или другие разъемы, или другой корпус (своим решением я поделюсь).
  7. 7. Разъем 3.5 мм. Данный конкретный выбирал из-за его ширины (тогда я еще не знал, что корпус мне не подойдет, так что имел ограничения по ширине). Почему 3.5 мм тогда, а не более компактный 2.5 мм? Потому что Trigger в ресивере (а разъем будет использоваться для него) именно 3.5 мм, так что я могу использовать самый обычный AUX-кабель, которых у меня дома много. На тот момент я просто решил, что подключу Trigger к вольтметру, а далее использовать пока не буду. В настоящий момент Trigger с ресивера я вовсю использую, но об этом расскажу в части про код.
  8. 8. Монтажная плата (текстолит с отверстиями стандартного шага 2.54 мм). Ссылку не приведу, т.к. такая у меня давно валялась дома. Плюс моя плата, когда настал ее звездный час, подвела. Металлизация при пайке начала отваливаться. Вроде бы и паяльником водил не усердно, и температура была не как в жерле вулкана, однако вот. В половине случаев пришлось припаиваться непосредственно к ножкам. На возраст списать не могу (данной конкретной плате было лет 10, но был опыт пайки техники еще родом из СССР, и там ничего никуда не отваливалось).
  9. 9. Набор разноцветных проводов. Провода как провода, но цветов в наборе могло бы быть и больше. Повезло, что у меня дома еще других цветов были (от всяких древних компьютерных корпусов).
  10. 10.Макетная плата. Опционально, но упрощает жизнь. Я сначала пошел по хардкору и перепаивал проводки, но мне это довольно быстро надоело (болью поделюсь), так что приобрел для себя. Если не лень паять по сто раз — можно сэкономить.
  11. 11. Кабель 3.5 мм — 3.5 мм, для подключения к ресиверу. У меня такие валялись, так что не покупал.
  12. 12. Телефонные кабели необходимой длины (от устройства до проектора и до экрана). Был соблазн использовать витую пару (просто потому, что имеется), но она слишком толстая, плюс стандартного мышиного цвета. Для экрана (он белый и на белой стене) взял белый, для проектора — черный. Брал сразу готовые (обжатые и в заводской упаковке) на ближайшем строительном рынке. Смотрите только, чтобы там было 4 провода. Разумеется, если где-то найдете по погонным метрам, то это будет выгоднее. Мне вот к проектору надо было 8 метров. 7.5 не хватало, а 10 перебор, пришлось укорачивать.
  13. 13. Джеки RJ-9 4p4c для подключения к контроллеру. Если последуете моему совету и замените на 4-pin 3.5 мм, то, соответственно, и коннекторы нужны того же стандарта.
  14. 14. Джек RJ-11 6p6с для подключения к экрану. Я тут было обрадовался сначала, когда купил телефонный кабель, потом радость стихла — там с двух концов были коннекторы RJ-11 6p4c (фишка на 6 контактов, но обжато всего лишь 4). Мне одного купленного джека не хватило, т.к. проводов в кабеле всего 4, а распиновку я в итоге использовал другую (расскажу ниже). Но покупал я всего один, так что при отладке пришлось нарукопопить из RJ-45, с помощью дремеля. Потом, на постоянку, переобжал на нормальный 6p6с. В общем, это я к тому, что не скупитесь, возьмите коннекторов чуть больше
  15. 15. Коннектор mini-DIN 3-pin. В таком разъеме присутствует RS-232 в моем проекторе. Соответственно, у вас может быть что-то другое, тогда подбирать то, что требуется. По разъему по ссылке замечу, что, с одной стороны, розничная цена на него в чип-и-дипе соответствует цене (с доставкой) с алиэкспресса. С другой — пластик данного коннектора ведет при малейшем нагреве контактов, а сами контакты с обычной сосновой канифолью лудятся очень неохотно. Так что мне пришлось потом купить еще один такой же коннектор, который я паял уже при помощи кислоты. И даже так штырьки немного повело, но все удалось выгнуть обратно
  16. 16. Гребенка 2.54 мм — использовалась для крепежа модулей на монтажную плату
Предположу, что все необходимое для пайки, ножницы и надфили (для подгонки монтажной платы), MicroUSB-кабель для отладки и блок питания от старого телефона у вас уже имеются.
Ну и еще одно допущение — что вы уже имеете базовые навыки работы с Arduino, в частности, знаете, как залить примитивный скетч типа «мигать лампочкой». Если нет, то это легко гуглится, тут действительно нет ничего сложного

Проектор

Проектор — это первое, над чем я начал работы. Еще до покупки ардуинки я провел тестирование (proof of concept, если хотите). С ноутбука, с помощью нормального USB-to-COM убедился, что могу проектор включать и выключать. «Нормальный» в моем понимании тот, который брендовый и работает автоматически (винда автоматом ставит драйверы Prolific, т.е. это не китайский клон, прикидывающийся PL2303)
В документации к проектору все команды представлены в виде двух типов: как ASCII (символьная) и HEX (шестнадцатеричная) последовательности.


С ASCII на компьютере я не добился взаимности, начал пробовать HEX. На удивление, PuTTY так не умеет (по крайней мере, я не нашел, а на разных форумах утверждается, что нельзя), надо искать другие решения. Вот тут уже был первый звоночек, что бороться с проектором мне придется долго…

Люди с форумов рекомендовали для отправки Hex программу Teraterm. Таких отзывов встречалось большое число, так что, видимо, как-то оно работать должно, но я добиться взаимности не смог. Вторым попробовал близкий мне Powershell, но нужного не получил. Простые технологии самые надежные — смог подружиться с проектором через обычный cmd.exe
Кому интересно, то вот информация о том, как через встроенную утилиту certutil превратить команды в HEX и отправить их в COM. В таком виде оно работало, если вбивать данные в консоль, но часто сбоило, если пытаться управлять проектором с помощью CMD-файлов, содержащих тот же самый текст. Тем не менее, было очевидно, что это какие-то проблемы именно cmd.exe (я как-то не так делаю батники), так что проекту был дан старт и я заказал на алиэкспрессе ардуинку с вольтметром, а пока они идут — покупаю разъемы, кабели и корпус.

Пришла ардуинка, я подключаю ее к проектору и пишу простейший скетч, который должен переслать последовательность для включения проектора (такую же, как я уже умею выполнять с ПК) и… И не работает!
Множественные танцы с бубном, попытки отправки последовательности в HEX (тут есть как минимум два варианта, или массив значений, или построчно передаем каждую из hex-пар символов) вместо ASCII, перепроверка распиновки по сто раз… Ничего не помогает, проектор игнорирует меня.

Напоминаю, что я собирался делиться граблями, и вот крупнейшие из них.
Гугление навело меня на статью, где человек испытывал те же проблемы, и ему посоветовали схему подключения к Arduino через адаптер RS-232 to TTL.
Собственно, я и раньше знал, что COM — COMу рознь. Что, во-первых, на стандартном разъеме DB-9 могут быть разведены не только стандартные Rx/Tx, но и ряд дополнительных (а могут и не быть разведены), а, во-вторых, уровень сигнала может быть как 5В, так и 12В, но сами сигналы при этом одинаковые, что создает нехилую путаницу. Так что термины COM / UART / TTL / RS-232 в быту часто считаются синонимами, но фактически разница может быть.
Однако одно дело знать, другое дело сообразить. Я с такой проблемой ранее никогда не сталкивался, но совет на форуме звучал разумно, поэтому я купил сразу два конвертера (у меня же еще экран есть!).

Итак, адаптеры получены, подключаю один к ардуино и… Опять не работает! Более того, сам адаптер нехило греется. Палец держать можно, но с трудом, и это на открытом воздухе. А что же будет в тесном корпусе?
Гуглю. Нахожу, что это особенность китайских микросхем MAX3232, они, мол, действительно склонны к перегреву, в отличие от оригинальных. На том же форуме (ссылку я не сохранил) указывается, что родные чипы могут работать на напряжении и 3V, но владельцам китайских клонов остается только страдать.
Без особой надежды подключаю питание 3В вместо 5В, но устройство при этом делает вид, что работает (мигает светодиодами RX/TX), и не греется. В общем, чудеса. На всех схемах плату подключают к 5В, но подключать надо к 3В. К счастью, микросхема не сгорела.

Собственно, по тому, как я пишу, понятно, что помогло переключение на 3В, но тогда я этого еще не знал, ведь переключение не решило всех проблем. Количество проблем при подключении к проектору просто зашкаливало. Перечислю их:
  • не то напряжение питания модуля
  • были и проблемы с Rx из-за плохих контактов на отладочной плате
  • когда предыдущие шаги были устранены, все равно проектор не реагировал на посылаемые команды, а в ответ выдавал какой-то мусор. Тут роль сыграл вот этот тред. Были приведены куски кода, которые у человека отрабатывали не всегда корректно. В моем случае этот код не работал вообще. Вероятно, я бы застрял на этом шаге, если бы не додумался заменить команду на ту, которая проектор включает. Команда успешно отработала. Отработал и ряд других команд, что я пробовал.
    Т.е. из примерно пары десятков команд, что я попробовал, только одна (та, что использовал автор топика) не работала у меня. Да, я везунчик 100 lvl. Долбился в стену, хотя рядом была открыта дверь

Итого, после многочисленных экспериментов и гуглежа я смог с ардуины включать и выключать проектор, а также отслеживать его состояние. Заняло это где-то 4 вечера, что я считаю просто дикой тратой времени (реализация включения-выключения под cmd.exe заняла не более 10 минут).
И да, одна из функций с листинга по ссылке выше (recvWithEndMarker) осталась в моем коде, за что автору топика спасибо.

А еще в этом разделе я считаю важным отметить, что мой проектор меняет статус далеко не сразу. Только когда проектор выходит в рабочий режим (т.е. отображает уже не лого производителя, а картинку с видеовхода), он отдает статус «включено». С выключением аналогично. Забегая вперед: это означает, что лаг между включением/выключением проектора и управлением экраном составляет секунд 20-30. В реальной жизни никак не раздражает, но было бы приятнее, если бы экран приходил в движение параллельно с проектором

Экран

Проектором мне удалось поуправлять с компьютера, поэтому все те разы, когда у меня не получалось сделать этого с ардуино, я просто знал, что я делаю что-то не так. С экраном же ситуация другая, я не смог управлять им и с ПК.
С ардуино, несмотря на конвертеры RS 232 в TTL, я тоже потерпел фиаско. Пробовал разные распиновки, но все бесполезно. Предположу, что дело не в интерфейсе, а в командах. Т.е. HEX-последовательности для управления моему экрану нужны другие (напомню, в инструкции об этом вообще ни слова). Логически контакты все же куда-то скоммутированы. Более того, на них видно 5В (смотрел мультиметром, не осциллографом), т.е., вроде бы, похоже на TTL

Если проблему не удается решить, ее надо обойти, подумал я и воткнул в разъем коннектор 6p6c, обжатый под витую пару (чтобы задействовать все контакты, ведь в моем телефонном кабеле их было всего 4).
Тем самым я убедился, что документация от модели-близнеца не врет: 4 оставшихся контакта тоже используются для управления движением экрана, достаточно просто их замыкать. Один общий контакт и три контакта управляющих: вверх / вниз / стоп.
Отлично, новый квест: как замыкать контакты с ардуины. Первое, что приходит в голову — реле. Все бы хорошо, но:
  • реле мне надо три, они стоят заметных денег
  • реле щелкают. Сам экран тоже не бесшумно движется, но зачем добавлять дополнительные источники звука?
  • на тот момент я все еще ожидал, что смогу использовать купленный корпус, а три реле запихнуть туда не было возможности

В качестве альтернатив реле нашел варианты управления через N-транзистор, но так и не понял, как мне это применить в моем случае. На сколько я смог разобраться, управлялся сигнал, который брался с выхода самой Arduino. Мне же надо было закорачивать сигнал с экрана. Соединять общий провод с экрана и минус на ардуино мне тоже показалось плохой идеей (контроллер и экран разнесены, плюс разные розетки — все это попахивало возможным выгоранием арудинки)

И тут я наткнулся на совет использовать мультиплексер. Суть его в том, что по цифровым сигналам с ардуино (в моем случае каналов 16, поэтому пинов задействуется 4) микросхемой мультиплексера происходит коммутация одного из 16 каналов на определенный канал (логически это может быть как вход, так и выход, микросхеме не столь важно). Можно сказать, что это некий аналог галетного переключателя
Повторюсь, 16 каналов мне не требовалось, хватило бы и 4, но брал то, что было в наличии.

С мультиплексером тоже все взлетело не сразу, так как умудрился слегка запутаться в распиновке, но, в итоге, все заработало как надо. Соответственно, вторая плата RS232 to TTL осталась без нужды

Ресивер

С ним все было просто — в настройках самого ресивера задействовал триггер, повесив его на изменение статуса питания (вкл-выкл) самого ресивера
Ну и плата вольтметра подключилась, на удивление, без проблем.
Повторюсь, сначала вообще не планировал использовать ресивер (размышлял следующим образом: «а вдруг я просто радио захочу послушать? А тут сразу и проектор, и экран»), однако в текущей версии триггер я проверяю. Сработала банальная логика «так ли часто тебе надо послушать радио по сравнению с частотой просмотра фильмов»

Скетч

Логика кода довольно простая. Ардуино отслеживает состояние триггера с ресивера. Если на триггере 12 вольт, то значит, что ресивер включен (и наоборот)
По состоянию триггера ардуино делает и статус проектора — посылает ему сигналы вкл или выкл. Состояние проектора мы запоминаем, поэтому сигналы посылаются только в том случае, если статус проектора и ресивера различаются (одно включено, другое нет)

Экран на триггер никак не завязан, исключительно на проектор. Логика работы такая:
-если статус непонятен — то просто его игнорируем. При том же включении / выключении проектора в статусе пробегает много странного, ничего собственно о состоянии проектора не сообщающего. Кроме того, даже верный статус иногда бьется при передаче. Вместо OK0 может доехать K0 или OK. Уже на следующей итерации все будет ОК, поэтому и принял решение отбрасывать неизвестное
-если на предыдущем шаге статус был один, а сейчас другой — проектор сменил свое состояние (из выкл во вкл или наоборот). Соответствующим образом разворачиваем или сворачиваем экран
-при разворачивании экрана отправляем две команды. Сначала — на разворачивание. Потом, через заданный интервал, на остановку. Сделано это для того, чтобы экран разворачивался не полностью. Родная инструкция вообще не предоставляет никаких альтернатив. Инструкция от экрана Digis (приводил выше) говорит, что есть некий подстроечный винт, регулирующий длину развёртывания. Однако в своем проекторе я такой винт не нашел. Поэтому с секундомером выяснил интервал между командами «вниз» и «стоп», что и реализовал в коде. Для сворачивания экрана достаточно отправить одну команду, далее экран по концевикам отключится сам

Итого при включении всё срабатывает так:
1. Включается ресивер (теперь управлять можно только им)
2. Контроллер считывает +12 Вольт на триггере и отсылает команду для включения проектора
3. После окончания загрузки проектора (примерно 20 секунд) начинает разворачиваться экран, что занимает еще 19.5 секунд (в моем случае)

При выключении все аналогично.

Экран не завязан на триггер ресивера принципиально — эту часть можно закомментировать (собственно, какое-то время я так и пользовался), тогда экран по-прежнему будет слушаться только проектора (тут ни строчки менять не надо), а вот проектор перестанет реагировать на ресивер; можно включать последний для прослушивания радио и прочего, не требующего работы проектора

Собственно, сам код:
Сверну под спойлер, чтобы уменьшить и без того немалую длину текста

//define multiplexor pins
#define EN 7                    // D7 pin
#define S0 2                    // D2 pin
#define S1 3                    // D3 pin
#define S2 4                    // D4 pin
#define S3 5                    // D5 pin

// define screen mode directions
#define STOP 0                  // multiplexer C0 pin
#define DOWN 1                  // multiplexer C1 pin
#define UP 2                    // multiplexer C0 pin

// define analog pin for voltage sensor
#define VSensor A0              // A0 pin

// AV-receiver low and high limits for a trigger
const int TriggerLow = 3;       // if voltage is lower than the value, then the trigger is OFF
const int TriggerHigh = 7;      // if voltage is higher than the value, then the trigger is ON

// projector serial connection variables 
const byte numChars = 32;
char receivedChars[numChars];   //an array to store the received data

// projector state variables
boolean newData = false;
String ProjectorPowerState;
String ProjectorPreviousPowerState;

//screen constants
const int PullUpTime = 25000;   // full time from lower to upper position, milliseconds
const int PushDownTime = 19500; // time that requred to push down the screen to a working position; milliseconds


void setup() {
    // set digital pins mode
    pinMode(S0, OUTPUT); 
    pinMode(S1, OUTPUT); 
    pinMode(S2, OUTPUT); 
    pinMode(S3, OUTPUT);   
    pinMode(EN, OUTPUT);

    // initialize the multiplexer
    digitalWrite(S0, LOW);
    digitalWrite(S1, LOW);
    digitalWrite(S2, LOW);
    digitalWrite(S3, LOW);
    digitalWrite(EN, HIGH);

    Serial.begin(9600);   // console output for debug
    Serial1.begin(9600);  // projector serial connection
    ProjectorPreviousPowerState = "Unknown";
}

void loop() {
    int volt = analogRead(VSensor);            // read the input
    int voltage = map(volt,0,1023, 0, 2500);   // input voltage in centivolts. i.e. 3V = 300 cV
    Serial.println((String)"Trigger voltage in centivolts: " + voltage);

    if (Serial1.available()) {
        Serial.println("Projector serial connection is available, we need to check it state");
        recvWithEndMarker();

        // we need to get current projector state variable from the serial output
        if (newData == true) {  // only if we have a new data, we need to check the state
            newData = false;    // reset the new data flag
            ProjectorPowerState = String(receivedChars); // convert array to a sting
            ProjectorPowerState.trim(); // remove \r\n
            Serial.println((String)"Projector current state is '" + ProjectorPowerState + "'");
        }

        // now we are ready to control the projector and screen
        if (ProjectorPowerState == "OK0") {
            Serial.println("The projector is OFF now. We need to check the screen state");
            
            if (ProjectorPreviousPowerState == "OK1") { // we need to pull up the screen
                Serial.println("The projector was powered off, we need to pull up the screen");
                ScreenControl(UP);  // pull up the screen
                delay(PullUpTime);  // we need to wait a few seconds while screen will be pulled up
            }
            else {
                Serial.println((String)"Previous projector power state was '" + ProjectorPreviousPowerState + "', nothing to do");
            }
            ProjectorPreviousPowerState = ProjectorPowerState;

            //if projector is OFF, but the trigger is ON, we need to power on the projector
            if (voltage > (TriggerHigh*100)) {
                Serial.println("Trigger is ON now, so we need to power on the projector too");
                Serial1.print("~0000 1\r"); //power on
            }

        }
        else if (ProjectorPowerState == "OK1") {
            Serial.println("The projector is ON now. We need to check the screen state"); 

            if (ProjectorPreviousPowerState == "OK0") { // we need to push down the screen
                Serial.println("The projector was powered off, we need to push down the screen");
                ScreenControl(DOWN);  // push down the screen
                delay(PushDownTime);  // wait for a proper length
                ScreenControl(STOP);  // and stop
            }
            else {
                Serial.println((String)"Previous projector power state was '" + ProjectorPreviousPowerState + "', nothing to do");
            }
            ProjectorPreviousPowerState = ProjectorPowerState;

            //if projector is ON, but the trigger is OFF
            if (voltage < (TriggerLow*100)) {
                Serial.println("Trigger is off, so we need to power off the projector too");
                Serial1.print("~0000 0\r"); //power off
            }
        }
        else {
            Serial.println("The projector state is Unknown. Nothing to do");
        }
    }
    else {
        Serial.println("Projector serial connection is not available");
    }

    //initial request to projector, if it not send anything
    Serial1.print("~00124 1\r"); // powerstate query. OK0 if powered down, OK1 if powered on
    Serial.println("");
    delay(1000);
}
void recvWithEndMarker() { //thanks to https://forum.arduino.cc/t/problem-sending-serial-commands-to-a-video-projector/481406/4
    static byte ndx = 0;
    char endMarker = '\r';
    char rc;

    while (Serial1.available() > 0 && newData == false) {
        rc = Serial1.read();
        if (rc != endMarker) {
            receivedChars[ndx] = rc;
            ndx++;
            if (ndx >= numChars) {
                ndx = numChars - 1;
            }
        }
        else {
            receivedChars[ndx] = '\0'; // terminate the string
            ndx = 0;
            newData = true;
        }
    }
}
void ScreenControl(int Direction) {
    digitalWrite(EN,LOW); // Activate the multiplexer

    switch (Direction) {
        case 0: // multiplexer channel C0 
            Serial.println("Mode: STOP");
            digitalWrite(S0,LOW);
            digitalWrite(S1,LOW);
            digitalWrite(S2,LOW);
            digitalWrite(S3,LOW);
            break;
        case 1: // multiplexer channel C1 
            Serial.println("Mode: DOWN");
            digitalWrite(S0,HIGH);
            digitalWrite(S1,LOW);
            digitalWrite(S2,LOW);
            digitalWrite(S3,LOW);
            break;   
        case 2: // multiplexer channel C2  
            Serial.println("Mode: UP");
            digitalWrite(S0,LOW);
            digitalWrite(S1,HIGH);
            digitalWrite(S2,LOW);
            digitalWrite(S3,LOW);
            break;         
    }

    delay(100); 
    digitalWrite(EN, HIGH); //reset the multiplexer
}


Контроллер

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

Вид сверху. Легко заметить, что некоторые «ушки» у монтажных плат отломаны. Это связано с руками, конечно же :). Крепежные столбики внутри корпуса находятся довольно близко к стенкам, а я еще много раз платы туда-сюда подгонял, так что часть ушек отломилась. Впрочем, на прочность крепления это особо не влияло


А еще может возникнуть иллюзия, что плата с TTL-конвертером стоит криво. Это не иллюзия вовсе, все дело в том, что вход платы (то, что подключается к ардуино) и выход (то, что шло на выпаянный мной разъем DB-9) смещены относительно друг друга, пришлось впаять плату под небольшой диагональю.

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


Схема
Рисовал в Cirkit Designer

Ссылка на скачивание схемы: https://wdfiles.ru/e593d1

Корпус

После того, как все три компонента были увязаны друг с другом, пришло время собирать все в корпус. Вот тут-то (на финальной стадии проекта!!!) я и обнаружил, что платы в корпус вместе перестали влезать. Или RJ-9, или корпус.
Причем не хватало буквально 5 мм высотой, но корпусов других размеров у производителя не было. Перебор всех других корпусов на сайте магазина показал неприятное — расстояние между монтажными столбиками у других корпусов отличается от моего. Т.е. нельзя просто взять корпус условно в два раза длиннее и просто расположить платы рядом — отверстия не совпадут. Ну и вообще — что ни возьми, либо платы будут болтаться, либо не влезут по одному из измерений

На поиски потратил довольно много времени, а толку ноль. Где-то на этом моменте я психанул и решил сделать корпус сам. С софтом для построения 3D-объектов я тоже особо дела ранее не имел, но разобраться с этим оказалось довольно несложно. И вот я сделал корпус по мотивам оригинального, только под мои размеры.


Ссылка на скачивание: https://wdfiles.ru/fbfc7b

Но я же говорил, что граблей я собрал целый вагон? Вот и сейчас. Получив STL-файлы, я начинаю читать про 3D-печать, и понимаю, что мой корпус хорош в виртуале, но не слишком удобен для печати в реальной жизни. Плюс состоит из трех частей, а, значит, выйдет мне достаточно дорого.
У кого есть свой 3D-принтер, можете попробовать поразвлекаться. Я же решил сделать другой корпус, более технологичный в плане печати на 3D-принтере

Знакомьтесь, альтернативный вариант. Уродец (вернее, ничего выдающегося — просто коробка и всё), зато печатать удобнее.


Ссылка на скачивание: https://wdfiles.ru/44f43a
Предвосхищая вопрос «а зачем под MicroUSB такой большой проем?» отвечу. Из-за особенностей платы MicroUSB сидит довольно глубоко, так что отверстие подсчитано не под него, а под типовой кабель. С подключенным кабелем зазоры минимальные (конечно, зависит от самого кабеля)

Как вы уже могли догадаться по истории создания корпуса, 3D-принтера у меня не имеется, поэтому я начал искать, где же распечатать свое сокровище. Поиски повергли меня в уныние. За деталь размером с пару сигаретных пачек или хотят около 1000 рублей, или цены более-менее приемлемые для меня (около 500 рублей), но минимальный заказ от трех тысяч. Сколько массово уже существуют 3D-принтеры? Лет 5? Вот за это время мне первый раз потребовалось что-то распечатать. Так что депозит в 3000 рублей я буду тратить еще десятка два лет, не вариант.

Хотел уже искать разные модельные форумы, вдруг там кто такие услуги оказывает, однако обмолвился о проблеме коллеге и тот сказал, что принтер имеется, так что распечатает. Еще и бесплатно, хотя я порывался возместить хотя бы затраты на филамент.
Так что корпус мне обошелся в 0 рублей (первоначальный вариант не считаю, пристрою его под какую-нибудь еще задачу), поэтому его реалистичная цена (не 1000 рублей за штуку) мне неизвестна
Спасибо товарищу, получилось вот такое:






Итог

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

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

Что еще можно добавить в получившийся контроллер? Напрашивается, например, сетевой модуль (Eth или WiFi). Тогда можно было бы реализовать веб-сервер для обработки команд и получить управление модулем. Из очевидного — включение-выключение реакции на триггер ресивера
Из менее очевидного — возможность смены настроек на проекторе одной кнопкой. Скажем, кнопки «день» и «ночь», регулирующие яркость картинки, мощность лампы, профиль изображения (Кино / офис и т.д.).
Из еще менее очевидного — добавить-таки второй COM, подключить его к ресиверу (в моем порт имеется) и менять настройки проектора в зависимости от активного входа ресивера. Для приставки одно, для HTPC другое.

В общем, вариантов вагон, но это скорее мысли вслух, чем реальные планы.
Добавить в избранное
+77 +99
свернутьразвернуть
Комментарии (73)
RSS
+
avatar
+2
дома также подготовка к просмотру иногда утомляет,
точно не повторю, но обзор почитал с интересом
+
avatar
0
ладно бы, когда дома Sony vpl-vw590es стоит
тогда можно заморачиваться повышением удобства использования…
+
avatar
+5
  • vanenzo
  • 27 января 2022, 12:19
когда дома стоит Sony vpl-vw590es, за повышение удобства использования, скорее всего, уже подумали за Вас
+
avatar
+7
Дважды пролистал обзор, но почему-то не заметил фото героя обзора (т.е. экрана) и проектора.

От нас что-то скрывают?
Эта чёрная коробочка вообще чем-то управляет?

В тексте слово «проектор» встречается более 60 раз!
И ни одного фото этого самого проектора.
+
avatar
+2
  • vanenzo
  • 27 января 2022, 17:18
Так много вопросов, и так мало ответов…
+
avatar
+6
к такой соньке полагается годовая подписка на технический персонал))
+
avatar
+7
С помощью инженерного виндового калькулятора переводите hex в dec и зажимаете ALT и на боковой клавиатуре набираете dec значение того, что нужно отправить в putty. Можете прямо сейчас поставить курсор в поле ввода и зажать Alt и набрать 65 на боковой клавиатуре, и отпускайте ALT, увидите английскую букву A :) 66 — это буква B
Замыкать можно было обычной транзисторной оптопарой. Была бы и гальваническая развязка бонусом. Интерфейс с ардуиной — как светодиод подключить.
+
avatar
+17
  • Redsn0w
  • 27 января 2022, 07:04
А я универсальный пульт заказал от BroadLink, назначил кнопку на пульте и все. С одной кнопки включается ресивер, проектор и экран разворачивается.
+
avatar
0
У меня аналогично сделано.
+
avatar
0
  • leonbk
  • 27 января 2022, 18:29
Это mini, управляет только через ик?
+
avatar
0
Все правильно. Если нужно управление по RF, то смотрите версию Pro.
+
avatar
0
«С одной кнопки включается ресивер, проектор и экран разворачивается...» давно я броадлинком не интересовался, там что в программировании сценариев появилась возможность привязки типа «если»-«то»..?…
типа «если» нажата кнопка физического пульта «то» вкл. проектор, вкл. экран итд. или вы имеете в виду виртуальный пульт, который запускается из самой программы?
+
avatar
0
Сейчас новые броадринки работают только с новым приложением. А старое, как я понял, вообще перестали поддерживать.
Новое приложение пока что полное г. Работает только через удаленные сервера в локалке не работает. Задержка между нажатием кнопки и передачей сигнала 1-3 секунд.
Вообщем ждём когда допилят приложение.
+
avatar
0
я как то много лет назад думал так же… разуверовался и перешел на зигби схему умного дома, вам желаю дождаться… надежда… она такая!)
+
avatar
+3
  • leonbk
  • 27 января 2022, 08:13
Мегаобзорище, плюсую не щадя пальца и кнопки мыши, тот случай когда реально жаль что нельзя много плюсов поставить)))
Я лично подобные задачи стараюсь все таки решать посредством «прикручивания» ИК пульта и приемников.
+
avatar
+6
За старания, конечно, пять.

Но вот все остальное — абсолютно все — сделано неверно.
Начиная от контроллера и заканчивая схемотехникой.

Реле бывают твердотельные — они не щелкают, а еще есть мосфеты.
Реле щелкали бы еле-слышно на такую мощность и всего два раза — на вкл и выкл, сомневаюсь что вообще обращали бы внимание.

Рассыпуха, которая «дорого» — это 3-5 рублей за штуку.

Контроллер — оверкилл, лучше тогда Xeon воткнуть — хоть мужикам показывать.

CD74HC4067 вообще лишний

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

Ну и, как уже написали выше, агрегатор IR все это решает без плясок.

Однако, если то, что сделали — устраивает — почему-бы и нет, конечно.
+
avatar
+13
Тоже хотел прикопаться, но не буду :)
Тут надо понимать, что с таким уровнем подготовки, странно что оно вообще заработало. Это подвиг.
Остальное не важно становится.
Не нужно к написанному относиться так, как будто сидит инженер-программист такой и думает:
Хм, а не наваять ли мне на esp32 такую штуку для кинотеатра. С веб-интерфейсом настройки и управления, со своим ИК-передатчиком чтобы включать всё что можно. Ну а чо, сейчас нарисую в альтиуме пару плат. Одна попроще с убогим МК для управления мотором и отслеживания положения экрана, вторая с мозгами и обработкой. И сразу на завод, лучше с монтажом, но хрен с ним, сам запаяю. Между камнями по блютусу прокину мостик, а к вайфаю прикручу еще mqtt и возможность интеграции в HA. Чтоб на смартфоне нажал «кинотеатр» и оно всё включилось, зашевелилось и настроилось. UART в дрищ МК конечно через прерывания сделаю, а в esp32 отдельной задачей во freeRTOS для такого дрищ-проекта и ногодрыг cойдет. Кольцевой буфер добавлю и массивчик state-machine для подключаемых девайсов. Веб-интерфейс, обновление из него же. Так… для начала мне надо блютус-бутлоадер наваять для убогого МК…
Так что-ли? :)
+
avatar
+7
Я б такую статью почитал!
+
avatar
+4
Я б такую статью написал, но экран у меня стационарный, проектор и аккустику включаю их пультами, а сигнал с компутера идет. Всё это хозяйство не требует автоматизации как бы сильно мухи в руках ни копошились :)
+
avatar
+1
Я бы то же написал. Но экран у меня то же стационарный. На звуке стоят две колонки Anker SoundCore Motion+ постоянно включенные и сопряжённые по БТ с ТВ боксом, который никогда не выключается и подключен к HDMI разветвителю на проектор и телевизор. Включаю только проектор с пульта.
+
avatar
0
Вот только хотел спросить про какой-нибудь саундбар под экран по бт, а тут уже. ) Как вам эти колонки? Они сами в пару сопрягаются, или ухищрения какие нужны? Хватит на комнату 18 метров для непривередливого к звуку человека?
+
avatar
+1
  • Berlin
  • 29 января 2022, 02:22
У меня anker m+ лучшая портативная колонка. Можно пресеты эквалайзера сохранять в колонку. Парятся как tws. Но вот в стационарном sven 2.1 звук будет лучше хотя дешевле.
+
avatar
0
Спасибо. А можете сказать какой именно sven? А может есть на примете не особо дорогой 5.1 набор?
+
avatar
-1
Так что-ли? :)
Не надо в крайности то уж.
Но для такого сценария хватило бы 2-3 релюшки и ATTINY85 и усе.
Честно.

Без BT, WIFI и MQQT, бесплатно и без смс)

И даже — без RS232.
+
avatar
0
хватило бы 2-3 релюшки и ATTINY85 и усе
можно и без проца ;)
+
avatar
0
Менее окмпактно и более геморрно, но да. Но лень)
+
avatar
+2
Не надо в крайности
Сказал человек, который написал «лучше тогда Xeon воткнуть» :)))
+
avatar
+2
Сказал человек, который написал «лучше тогда Xeon воткнуть» :)))
Контроллер — оверкилл, лучше тогда Xeon воткнуть — хоть мужикам показывать.
Это был сарказм, надо подписывать? Без этого не понятно? ))))
+
avatar
+2
Это был он же :) Не надо :)
+
avatar
0
Договорились )))
+
avatar
+3
  • Alexx_B
  • 27 января 2022, 10:31
Реле бывают твердотельные — они не щелкают, а еще есть мосфеты.
хорошо, что вы прочитали абзац про реле, плохо, что не прочитали внимательно. подсказываю, там было еще про габариты указано
Рассыпуха, которая «дорого» — это 3-5 рублей за штуку.
ну вот пара компонентов для датчика напряжения по 5 рублей, плюс кусок текстолита, где это все распаять (надо же все отладить для начала), плюс это собрать. Или готовое изделие за 20 рублей, с которым можно играться
тот же мультиплексер 74HC4051 на алихе вообще стоит одинаково, что в составе модуля, что отдельного чипа, 30 рублей.
в чип-и-дипе, что характерно, чип будет дороже, чем готовая плата на нем же в соседнем магазине типа «все для ардуино»

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

У проектора стоят концевики, к ним вполне можно подцепиться
вы имели в виду, конечно же, не проектор, а экран. у проектора никаких концевиков нет. Что касается экрана, то я не собираюсь его разбирать по целому вагону причин:
1. он гарантийный
2. я не хочу ничего колхозить и портить товарный и внешний вид
3. он тяжелый, длинный и висит прямо под потолком. развлекаться с ним одному — верный повод лишиться натяжного потолка. корячиться вдвоем с женой тоже странно. на каждую итерацию проверки (ведь если его совсем снять — смотреть фильмы не получится) звать друзей — такое себе развлечение

агрегатор IR все это решает без плясок
конкретно IR не решает, так как экран управляется по 433МГц, но не суть, бывают универсальные модули IR / RF. Но вот ниже человек поделился своим опытом

Весь сценарий занимает около 3 минут до полной загрузки.

Для того чтобы не доставать каждый раз телефон, были куплены отдельные физические пульты для Broadlink, на которые можно повесить любые сценарии/действия.
Вот еще одного пульта мне в жизни не хватало, ага.
+
avatar
0
там было еще про габариты указано
Твердотелки, если не на большую мощность и напряжение — очень компактные. Опять-же я говорил про мосфеты, если уж про компактность.
что мега не нужна, хватило бы и нано
Хватило бы и тиньки, вообще без платы.
вы имели в виду, конечно же, не проектор, а экран
Экран, да.
я не хочу ничего колхозить и портить товарный и внешний вид
Вариантов масса, как я уже написал, куча бесконтактных. У товарища, например, вообще просто — он повесил измеритель мощности вокруг провода питания экрана, экран потребляет по разному при подъеме и при опускании — усе.
бывают универсальные модули IR / RF
Они и имелись ввиду. Есть копеечные конверторы. Есть готовые обучаемые пульты IR/RF. И его одного будет достаточно, чтобы вообще весь этот колхоз не городить.
+
avatar
0
  • kirich
  • 27 января 2022, 10:56
Хватило бы и тиньки
Так постепенно дойдем до — хватило бы и логики.
+
avatar
0
Корпусов было бы куда больше с логикой, и паяния, соответственно.
Есть некий оптимум — простой проц и релюшки — это как раз он и есть.
+
avatar
0
  • kirich
  • 27 января 2022, 11:00
Есть уметь в программирование, то да, проще тиньку, если нет, то проще логику, например я так и не научился программировать, сделал бы на логике.
+
avatar
0
Это да, согласен.
+
avatar
+4
  • kirich
  • 27 января 2022, 11:20
Просто каждый решает задачу так, как ему проще и удобнее, то же самое касается и автора, решения местами странные и можно было сделать по другому, но свою задачу он решил, а для единичного экземпляра это главное. Вот если бы речь шла о производстве, то там решать надо было бы по другому однозначно.
+
avatar
+1
На пути от логики к программированию стоит только синтаксис конкретного языка. А так эти понятия тут равнозначные.
+
avatar
0
  • kirich
  • 27 января 2022, 11:19
А так эти понятия тут равнозначные.
Я это понимаю, но реально вот когда собираю на логике, то все прозрачно и понятно, когда много раз пробовал программно, то даже до мигания светодиодом не доходило так, чтобы это было осмысленно. Понимаю что звучит дико, но да.
Помнится еще в техникуме, много лет назад, на дипломной работе, задавали задачу при помощи некоей формулы, которую надо было сделать на логических микросхемах, причем потом еще и в проекте указать цены микросхем, т.е. сделать некий экономический расчет. Так вот помогал делать одногрупникам, потому как из техникума меня к тому времени отчислили, соответственно свою работу до конца не доделал.
А вот с микроконтроллерами совсем никак, такое бывает.
+
avatar
0
Ну может тогда прямо с ПЛИСов и начать? :))) Хотя для этого задача должна быть специфическая. А в номинации «цена для простого устройства» оно тут точно проиграет.
+
avatar
0
  • u3712
  • 27 января 2022, 12:33
Твердотелки, если не на большую мощность и напряжение — очень компактные. Опять-же я говорил про мосфеты, если уж про компактность.
[]
PC817
+
avatar
+1
Вот еще одного пульта мне в жизни не хватало, ага.
Это настенный пульт, который помимо этих сценариев выполняет ещё пару сценариев не относящихся к фильмам) Идя мимо комнаты иногда проще быстро нажать на относительно большую кнопку, чем доставать смарт) Он никак не отменяет включение того же сценария со смартфона, выполнения сценария с подачи голосом через Google Home, или же управление через Home Assintant.
Просто ещё один независимый способ управления.
+
avatar
+10
  • Ci7
  • 27 января 2022, 08:54
+
avatar
+4
  • u3712
  • 27 января 2022, 12:36
На самом деле не смешно. Засилие программеров удручает.
Человека, который хоть как-то понимает как работает железо (разной сложности), можно пока еще найти только среди «старперов».
+
avatar
+8
  • kirich
  • 27 января 2022, 12:41
Человека, который хоть как-то понимает как работает железо (разной сложности), можно пока еще найти только среди «старперов».
Так то да, но мой небольшой опыт поиска показал, что:
1. программистов ищут гораздо чаще
2. «железячникам» предлагают зарплату меньше чем программистам.

Была недавно мысль куда нибудь устроиться работать, из основных требований — белая и более-менее адекватная зарплата и возможно чтобы можно было работать удаленно, ну или с эпизодическими поездками в основной офис.
+
avatar
0
«железячникам» предлагают зарплату меньше чем программистам
поэтому измерялку UV собираю без привлечения программистов
планирую закончить в апреле-мае

заплатить 18000 грн за готовое не могу ))
+
avatar
+2
  • u3712
  • 27 января 2022, 13:57
Сочувствую.
Когда закрывается проект, программеры переквалифицируются на другое направление, а железячники уходят в утиль. ((
+
avatar
+3
  • kirich
  • 27 января 2022, 14:00
а железячники уходят в утиль. ((
Именно так, либо идти работать электронщиком на какое нибудь предприятие и обслуживать старое оборудование, либо в подвал «ремонт любой техники».
+
avatar
+7
  • Ju99ler
  • 27 января 2022, 14:27
С такими рукавами к токарному не стоит лезть
+
avatar
+2
оптопары нужно было поставить, это ИМХО лучше чем мультиплексоры городить. развязка опять же, раз уж такая боязнь спалить ардуину.
+
avatar
+1
  • Parsek
  • 27 января 2022, 09:54
У Вас разве нет триггерного выхода у проектора как раз для управления моторизированными экранами? На всех моих проекторах они были…
+
avatar
0
  • Alexx_B
  • 27 января 2022, 10:10
я же прямо в статье написал, что нет. только RS-232 и мультимедийные входы/выходы
+
avatar
0
Отличный вышел прототип! Основа есть, теперь можно устройство дорабатывать и развивать.

PS. Проектором еще не обзавелся но планирую, смотрю в сторону NEC и Epson. китайские проекторы чего то стремаюсь брать, у знакомого брал попробовать подобный, так он тусклый и края замылены. Может посоветуете модель для небольшой комнаты 5х7м, и полотна 2.5-3м!??
+
avatar
0
  • Alexx_B
  • 27 января 2022, 10:19
дык от бюджета ж зависит. следующий мой проектор будет лазерным, ультракороткофокусным (чтобы поставить на ТВ-тумбу у экрана) и, скорее всего, от EPSON. Что-то типа Epson EB-755F, но если не упираться в возможность близкого размещения к экрану, то у эпсона есть пучок более интересных моделей
+
avatar
+2
  • uZver
  • 27 января 2022, 11:01
На барахолках много епсонов с мертвыми лампами. Лампу можно купить с али, она в три-четыре раза дешевле оригинальной. В итоге получите полноценный проектор с хорошей яркостью.
А китайские все шлак, как бы не пыжились обзорщики.
+
avatar
0
Epson 5650. Если бюджет так себе.
+
avatar
+1
  • Totka
  • 27 января 2022, 20:27
А DIY не хотите? На дисплее 2.5к или 4к и объективе от фотика + может есть радиатор с тепловыми трубками старый от видеокарты, остальное типа системы линз на Ф+еще 1-2 штуки, лед тоже докупить. Дисплей mipi телефонные продают в китае уже подрезанные с парой слоев сзади без подсветки, нужен китайский недорогой (буквально 15-20 баксов на тао для 2.5к) преобразователь mipi-hdmi, а hdmi в любую андроид приставку. Можно на фанере легко собрать корпус. За 2-3 заказа с китая все можно накупить, с хорошим ледом будет хорошая картинка. Объектив бушный побитый снаружи поискать на местом рынке по примерным параметрам, конструкция проще прямая, а не с зеркалом. Можно и за 100-150 баксов на светодиод брендовый отдать при желании, есть куда улучшаться. Картинка резкая, средней яркости будет.
+
avatar
0
Была точно такая же задача. Для себя решил ее так. Есть Broadlink RM Pro. Он умеет работать в 315/433 МГц и в ИК. У моторизированного экрана пульт как раз на этой частоте. Далее был написан сценарий. Который при сработке включает радиорозетки на экране, акустике и приставке. Далее идёт команда на опускание экрана на заданную высоту, так как экран потолочный. Задать четкую высоту с пульта нельзя, поэтому было подобрано время опуска, и подача команды стоп. В это же время запускается приставка и проектор. Далее срабатывает планировщик на Андроиде и запускает LazyMedia. Весь сценарий занимает около 3 минут до полной загрузки. По окончанию просмотра фильма включается другой сценарий, который выполняет обратные действия, но с учётом остывания проектора, который выключается последним, чтобы успел остыть. Для того чтобы не доставать каждый раз телефон, были куплены отдельные физические пульты для Broadlink, на которые можно повесить любые сценарии/действия.
+
avatar
0
я нечто подобное собираюсь делать, только на базе имеющегося Зигби
+
avatar
0
ZigBee я не рассматривал из-за количества нюансов, необходимых для корректной работы сети. У меня слишком много устройств, и слишком мало свободного времени, чтобы развлекаться с поиском причин отвала устройств от сети) Имею парочку устройств которые заказывались в паре, для одного проекта. Больше не беру. Но потребляют действительно мало)
+
avatar
0
ну я брал шлюз для организации взаимодействия устройств ванной. но как выясняется, есть много чего под это дело заточенного. поэтому буду пробовать как есть.
+
avatar
0
  • dez
  • 28 января 2022, 15:28
тоже автоматизировано через Broadlink RM Pro.
кстати, у экрана обычно есть «крутилки», чтобы настроить желаемую высоту — один раз покрутил и забыл.
+
avatar
0
У моего экрана такой механической настройки нет. Да и не нужна она мне особо) Раз настроил и забыл)
+
avatar
+2
  • Lind
  • 27 января 2022, 10:27
Купил инфрапульт от бродлинк. Как оказалось, мотор проектора на RF — у Бродлинка он тоже есть, поэтому создал рутину в Гугл Хоум — говорю «ок гугл, ланч э синема!», колонка командует через привязанный акк пульту и…
вырубается елка (wifi удлиннитель)
врубается ресивер
врубается проектор
опускается экран
+
avatar
+2
Проектор — это первое, над чем я начал...
Можно озвучить модель проектора?
+
avatar
+4
  • vanenzo
  • 27 января 2022, 11:16
Присоединяюсь, а то ни одного взрослого проектора без триггерного выхода не видел
+
avatar
0
  • Alexx_B
  • 27 января 2022, 17:36
Optoma EW531. Впрочем, не представляю, какую это играет роль. У всех Optoma команды управления одинаковые
+
avatar
0
Optoma EW531
надо было понять, есть ли усб на борту или нет
+
avatar
0
У меня связка из приставки, проектора, экрана и колонок. ИК-приемник-передатчик, прошитый для использование с mqtt брокером, в качестве сервера малинка, радио модуль, умная wifi-розетка, движок писал сам на php. Включаю одной кнопкой с китайского программируемого пульта. Сигнал отправляет на ИК-приемник, сервер его обрабатывает и отправляет уже сигнал на передатчик, который включает приставку и проектор, по wifi отправляется сигнал на умный удлинитель, который включает розетку с колонками и питанием на экран, далее уже отправляется радио сигнал на раскрытие сигнала. Выключается в таком же порядке, только на проектор сигнал отправляется с задержкой, чтобы лампа остыла. Вот такой винегрет. Работает так уже два года.
+
avatar
0
Я экран проектора сейчас использую вместо темной шторы. Он у меня над окном висит.
Сейчас в этой комнате ребенок поселился, поэтому для затенения во время дневного сна нужно опускать экран без включения проектора.
Сначала было реле, теперь вместо реле поселился модуль управления шторами на зигби. Суть та же, зато можно Алису попросить опустить экран. Удобно.
+
avatar
+4
  • Bako
  • 28 января 2022, 09:45
Неистово плюсую про барыг с 3D принтерами с ценами от 1000 руб. Эти жадные люди до сих пор думают, что принтер есть только у них и что «поищи по рынку, может дешевле найдёшь» в 2021 году уже действительно работает. 1000 руб, да блин за 6 т.р. б.у принтер Anet можно купить на авито.
+
avatar
0
Ух, сколько необузданной агрессии)
Вы бы сначала купили этот «блин за 6 т.р», а потом поняли, что это медленный и неточный мусор, довести до ума который никаких денег не стоит. (Потому его за эти 6к и продают).
А дальше немного агрессии в сторону большинства печатников уже от меня)
Даже объявив эту самую 1000р, надеяться на качественный материал, правильный выбор параметров печати (ширину линии, количество периметров, тип ззаполнени, постобработку (волосы, прыщи и прочую нечисть)) не приходится. А ведь часто вообще модели стоит переделать, учитывая специфику изготовления. Нужно довольно много опыта, чтобы понять как правильно рисовать детали, сразу представляя какая сторона будет лежать на столе.
Это приходит точно не после первого нарисованного корпуса.
Но кому это интересно, пустил в печать, отскреб то, что получилось, и обменял на рупь.
В любом ремесле полно проходимцев…

P.s. Сам уже довольно давно на заказ не печатаю, если что.
+
avatar
0
  • Corvair
  • 29 января 2022, 07:00
В школе в каждом кабинете физики на учительском столе был пульт управления оборудованием класса — тёмные шторы на окнах, экран, киноаппарат, розетки на 36В на ученических столах. Целая панель управления со множеством кнопок, переключателей, индикаторов и стрелочных приборов. Например, шторы и экран: галетником или тумблером выбираем объект управления, кнопками вверх/вниз поднимаем/опускаем, на вольтметре видно напряжение, на амперметре потребляемый мотором ток. Шторы и экран работали от моторедуктора автомобильных дворников на 24В, в одном из кабинетов шторы двигались горизонтально. Всё работало от 36В, моторы явно были родные на 24В.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.