Опубликовано 27 ноября 2011, 20:41 под Exxasens - Melancolie

Наконец-то довёл до конца какой-то из своих проектов больше, чем из трёх деталей. Встречайте, «пилот» с розетками, управляемыми компьютером. Теперь можно включать/выключать свет и мониторы с клавиатуры или даже пульта:

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, и сидеть я буду в темноте и без мониторов. А так всё работает на удивление хорошо, даже самому не верится! Сбылась мечта; помню, хотел сделать такое ещё классе в десятом.

Следующий проект по умному дому, надеюсь, будет готов в начале декабря.

Комментарии (3)
anonymous
27 ноября 2011, 21:43
S Q #1
коленка!
themylogin
23 декабря 2011, 22:30
S Q #2
Возвращаясь к напечатанному.

Пилот не проработал и месяца: пара розеток перестала выключаться, реагируя на нажатие клавиши еле слышимым щелчком. Грешил на транзистор, для которого дилетант Володя выбрал неадекватный режим, но нет: сдохло реле. Я просто заебался выдирать старое, приклееное на «супер момент» к корпусу и теперь точно уверен: даже если этим «пилотом» играть в футбол, ничего там внутри не отвалится и ещё всех нас переживёт.
themylogin
16 января 2012, 01:44
S Q #3
SRD-12VDC-SL-C - говно реле, второй раз сдохло. От нагрузки в два монитора горят контакты:
Добавить комментарий
Войдите через  Доступные тэги: <b>, <i>, <s>, <u>, <a href="">, <img src="" /> (загрузить), <pre>, <quote>
Теги
1nsk Alternative E-Business Embedded GNU/GPL-софт HTML/CSS ICQ KDE Linux Linuxnsk Live Lyceum game Microsoft Motivator MySQL New Age P2P Party Photoshop PHP Python Qt4/C++ SEO Sibnet thelogin.ru Timelapse Web 2.0 Webdev Webstream Windows Wireless А я говорил! Авто Админ Алексеев Аниме Атмосфера Безобразие Бесплатный Wi-Fi Блоги Большой бизнес Боты Бред Бухать Бытовуха Велосипед Весна Вечер Взлом Винил Винтаж Вконтакте Вода Воспоминания Гетто Гламур Гопота Горский Графити Грузовик Дача Двор Девушки Девченки!!! Деньги Дизайн Дом Домофоны Драка Драки Еда Железо Животные Заведения общественного отдыха Задроты Затулинка Зима Игрушки Игры Идея Интересно Интернет Исследование История Казань Карикатура Квартира Класс Компьютеры Коромшук Коты КПК Кран Красиво Криминал Крыша Лето Литература Лицей Лицей НГТУ Лохи Магнитофоны Маркса Мат Математика Машинный перевод Мегафон Менты Метро Мечты Мифы Мне стыдно Мобайл Можга МТС Музыка Мультикасса Мультики Мы помним Надписи Наёб Наука НГТУ Недвижимость Непоняятно Новосибирск Носители Ноутбуки Ночь Обидно Обман Образование Общественный транспорт Омск Опечатки Орфография Осень Парк Периферия Пиратство Плохо Погода Поезд Помойка Праздники Презрение Природа Провайдеры Программирование Протест Радиотехника Растения Реклама Религия и вера Ретро Рисунок Руины Рэп Салют Сервер Серверы Сервис Сериалы Скринкаст Скриншоты Смешно СМИ Снег Собаки Совет Софт Спам Спасём Россию Спецтранспорт Стоп-ляп Стройка Студяга Танцы ТВ Типа страх Трамваи Транс Транспорт Уважаю Ужас Умный дом Утро Филдрепорты Философия Форум ФПМИ Хикки Хостинг Цитатник Школа Школа 208 ЭГ Эксперимент Юго-Западный
Twitter 27-11-2011