Наконец-то довёл до конца какой-то из своих проектов больше, чем из трёх деталей. Встречайте, «пилот» с розетками, управляемыми компьютером. Теперь можно включать/выключать свет и мониторы с клавиатуры или даже пульта:
http://thelogin.ru/data/blog/uploads/geek-pilot/IMG_0684.mp4
Готовых решений в доступной продаже я не нашёл, поэтому пришлось делать самому. В качестве основы в DNS за 600 с чем-то рублей был куплен сетевой фильтр SVEN Fort Pro. Он обладает всем, чем нужно: отдельно отключаемыми розетками (в обычном сетевом фильтре просто закреплены две общих рейки на все контакты), внушительными размерами (внутри должно быть достаточно места для размещения блока питания и электроники), низкой ценой (в очередной «радиотехнике» обычный сетевой фильтр стоил 900 р.) и очень порадовал наличием стрелочного вольтметра! Схема управления классическая: через LPT, с USB решил не заморачиваться. Взял её из вот этой статьи, только всё-таки притянул базы 4N35 и BD235 к земле через 100 и 47 кОм соответственно и поставил не помню какие шунтирующие диоды в обмотку реле. Схема управления каждой розеткой (всего их две — вместе с трансформатором на 12В из какого-то зарядника в тот корпус больше не лезет, да и не нужно) собрана на отдельной печатке 55x20 мм. В принципе, за один вечер получилось вот что:
Две верхние розетки отданы под мониторы и включаются-выключаются одновременно, в правую нижнюю включена настольная лампа. Концы витой пары подключены к пинам 2 и 3 LPT-порта и управляются следующей программой:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/io.h> int main(int argc, char** argv) { if (ioperm(0x378, 1, 1)) { perror("ioperm()"); return 1; } if (argc != 3) { printf("usage: %s (0|1) (on|off|toggle)\n", argv[0]); return 1; } int state = inb(0x378); int port = argv[1][0] - '0'; char* action = argv[2]; if (!strcmp(action, "on")) { state &= ~(1 << port); } if (!strcmp(action, "off")) { state |= 1 << port; } if (!strcmp(action, "toggle")) { state ^= 1 << port; } outb(state, 0x378); return 0; }
При первом использовании столкнулся с неожиданной проблемой, о которой раньше не задумывался. Реле, следуя моей программистской логике, включено как нормально разомкнутое: мол, 0 в порту — выключена розетка, 1 — включена, всё логично. Беда в том, что пока не загружен Linux (или вообще выключен компьютер), в порту будет 0, и сидеть я буду в темноте и без мониторов. А так всё работает на удивление хорошо, даже самому не верится! Сбылась мечта; помню, хотел сделать такое ещё классе в десятом.
Следующий проект по умному дому, надеюсь, будет готов в начале декабря.
Пилот не проработал и месяца: пара розеток перестала выключаться, реагируя на нажатие клавиши еле слышимым щелчком. Грешил на транзистор, для которого дилетант Володя выбрал неадекватный режим, но нет: сдохло реле. Я просто заебался выдирать старое, приклееное на «супер момент» к корпусу и теперь точно уверен: даже если этим «пилотом» играть в футбол, ничего там внутри не отвалится и ещё всех нас переживёт.

Доступные тэги: <b>, <i>, <s>, <u>, <a href="">, <img src="" /> (загрузить), <pre>, <quote>
- anonymous › 86 докладов по истории 16:41
- streetmack › Самое дорогое в жизни Вчера, 18:34
- potomushto › Am I not always be wanting this? (x8) 20 мая, 16:38
- anonymous › Написание «не» с различными частями речи 16 мая, 16:06
- anonymous › A Tragedy in the Air 15 мая, 18:24
- themylogin › Итоги 2011 15 мая, 12:10
- themylogin › На гелике езжу 13 мая, 16:24
- anonymous › Waking up at ten 13 мая, 13:16
- themylogin › Жук 12 мая, 11:55
- themylogin › Давайте шутки из твиттера продолжим развивать здесь 7 мая, 11:03

