Наконец-то довёл до конца какой-то из своих проектов больше, чем из трёх деталей. Встречайте, «пилот» с розетками, управляемыми компьютером. Теперь можно включать/выключать свет и мониторы с клавиатуры или даже пульта:
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 › Написание «не» с различными частями речи 21 февраля, 21:30
- streetmack › Monday Evening 20 февраля, 22:35
- themylogin › Применение visibility: hidden 18 февраля, 21:14
- anonymous › 86 докладов по истории 15 февраля, 21:42
- anonymous › Яндекс.Игрушки 12 февраля, 20:44
- anonymous › ТДС-6 СТЕРЕО 12 февраля, 04:06
- themylogin › Итоги 2011 12 февраля, 00:47
- potomushto › cron.monthly 9 февраля, 21:55
- anonymous › Холодильники Coca-Cola 3 февраля, 03:59
- s_mordvinov › Idealism 3 февраля, 03:06
