После модернизации и добавления экрана в экосистему умного дома Apple, пришла очередь и самого проектора.
На данном этапе было реализовано только включение1) и выключение его по голосовой команде Siri и из приложения «Дом». Поэтому, собственно, в названии статьи и фигурирует аббревиатура «BMC», т.к. в выключенном состоянии проектор в сети ни как не присутствует и нужно что-то внешнее, что будет его будить.
Плюс, организовано опускание и поднятие экрана в зависимости от состояния проектора – проектор включается, экран опускается и наоборот.
На следующем этапе планируется подключение к приложению «Пульт Apple TV» для полноценного управления проектором с iPhone. Но, для этого требуется рабочий пульт от проектора2)…
Естественно, для прошивки ESP-01 нужен UART-USB программатор с питанием 3.3 в!
Для работы энергомонитора, необходимо собрать прошивку с поддержкой драйвера «INA226»5):
#ifndef USE_INA226 #define USE_INA226 #endif
Вся, необходимая для работы и прошивки, обвязка уже присутствует на платах модуля и программатора, необходимо только правильно соединить:
ESP-01 | UART |
---|---|
3V3 | 3V3 |
EN | |
GND | GND |
IO0 | |
RX | TXD |
TX | RXD |
Суть модернизации, как и в случае с экраном, заключается в эмуляции Wi-Fi модулем нажатия физической кнопки на проекторе. Как говорится, просто и со вкусом!
Обратная же связь основывается на работе лампы проектора – когда лампа загорается, значит проектор включен и, соответственно, наоборот. Бонусом, можно видеть напряжение, ток и потребление светодиода7).
Это простая реализация задачи, как говорится, «в лоб» и с минимальными изменениями в конструкции самого проектора.
Для начала, на модуле INA226 нужно заменить чип резистор R100 на R010, т.к. заводской номинал не будет показывать ток больше ~800 мА., а в нашем случае заранее известно, что ток будет больше! Делается это паяльником за несколько минут, но да, феном «профессиональнее»8).
Кстати, чип резисторы типоразмера 2512 бывают разной толщины и, соответственно, мощности9)!
Далее нужно очистить дорожки между колодцами и резистором от лака, чтобы потом усилить их припоем. Это делается для надежности, т.к., не взирая на то, что они у INA226 заметно толще, чем у INA219, заводской резистор не предполагает использование этого монитора с такими токами!
Ну и в конце необходимо припаять его в разрыв цепи положительной полярности, причем вывод «IN+» должен быть соединен с положительным выводом со стороны блока питания, а «IN-» – с анодом светодиода10)! Также нужно хорошо пропаять очищенные ранее дорожки.
Теперь нужно собрать на кусочке макетной платы оптрон с обвязкой и «хаб-концентратор», для удобства сведения питающих линий с разных модулей.
Если перевернуть первую фотку на 180° получается:
Осталось подпаяться одним проводом к кнопке питания проектора со стороны контроллера на соответствующей плате.
ESP-01S | INA226 | JC817 | AMS1117 | Xnano X1 |
---|---|---|---|---|
3V3, EN | VCC | VOUT+ | ||
GND | GND | GND13) | GND- | GND |
RX | RX14) | |||
B115) | Bt1 | |||
TX | SDA | |||
IO0 | SCL | |||
IN+, VBS | +30 (PSU) | |||
IN- | Anode (LED) | |||
VIN+ | +12 (PSU) |
В итоге все будет выглядеть как-то так.
На фото нет, но на AMS1117 крайне желательно приклеить радиатор, т.к. на 12 вольтах он очень сильно греется, хотя за значения, указанные в технической спецификации, не выходит.
Ниже описан вариант реализации задачи с использованием «виртуального» переключателя, назначенного на неиспользуемый GPIO. Однако, эту же задачу можно реализовать более красиво с использованием команды «Subscribe», примерно, как тут.
Backlog Template {"NAME":"Xnano X1","GPIO":[608,640,576,224,0,0,0,0,225,0,0,0,0,0],"FLAG":0,"BASE":18}; Module 0
Backlog DeviceName Projector; FriendlyName1 Проектор
Backlog Topic projector_%06X; FullTopic projector/%topic%/%prefix%/
Backlog MqttHost 192.168.XXX.XXX; MqttPort 1883; MqttUser RGEHrther; MqttPassword TRH45yg34; SetOption3 1
Backlog Sensor54 11 0.01; Sensor54 12 3; Sensor54 13 40.96; Sensor54 2
Без этих настроек, модуль INA226, или не будет виден в системе, или будет отображаться, как INA219!
Backlog PulseTime1 2; WebButton1 Кнопка; WebButton2 Питание; PowerOnState 0
Backlog Timezone +10:00; TelePeriod 0; SetOption128 0
Rule1 ON Power1#Boot DO Var1 1 ENDON ON Mqtt#Connected DO Backlog Power1#State; Power2#State ENDON
Rule2 ON INA226-1#Current>1 DO ADD1 1 ENDON ON INA226-1#Current<1 DO ADD1 2 ENDON
Это правило должно срабатывать единожды, т.е. нужно установить «Rule2 5»!
Rule3 ON Power2#State=1 DO ADD1 50 ENDON ON Power2#State=0 DO ADD1 60 ENDON ON Var1#State==51 DO Backlog Power1 1; Var1 1 ENDON ON Var1#State==61 DO Backlog Power1 1; Delay 30; Power1 1; Var1 1 ENDON ON Var1#State==2 DO Backlog Publish projector/screen_CF4CBF/cmnd/POWER4 1; Power2 1; Var1 1 ENDON ON Var1#State==3 DO Backlog Publish projector/screen_CF4CBF/cmnd/POWER4 0; Power2 0; Var1 1 ENDON
Backlog Rule2 5; Rule1 1; Rule2 1; Rule3 1
Пример конфигурации Homebridge приведен тут.
Обсуждение