Ранее я уже описывал один удобный инструмент, значительно помогающей мне в работе. Так вышло, что тот обзор больше походил на тест программы для iPhone, нежели на полноценный анализ самого сервиса. Вкратце напомню, что основная идея того обзора заключалась в том, чтобы показать, как получить доступ по интернету к моему компьютеру на работе, находящемуся в локальной сети учреждения и работающий "наружу" через прокси. С этим logmein справился. Так вот ближе к делу :).
В комментариях Экзи прозвучала мысль, не дающая мне спокойно жить: "осталось придумать удаленный сервис, а-ля "Хочу-Включить-Свой-Комп-С-Айфона", на случай если у него Power Off :)". Действительно, для меня это было проблемкой, т.к. когда мой домашний ПК находиться без присмотра, он в состоянии Off. Периодически мне необходима информация, которую не хочется таскать с собой на внешнем винте (или флехе), и порой необходимость этой информация оценивается как "срочная"... Нужно включение компьютера удаленно :)
Сделать так, чтобы я мог дистанционно включать свой ПК, при этом наличие в автозагрузке программ типа Logmein, автоматически сделает мой компьютер доступным "из вне".
Упорно прогуглив эту тему, казалось что решений - масса, бери - не хочу. Одно из таких "псевдо решений" было WakeOnLan (WOL). Всё весьма просто. Комп включается по команде, приходящий из вне на модем, и если при этом в биосе всё адекватно отстроено (включен Wake On Modem), то компьютер включается. Этот способ был бы хорош, если бы мой провайдер был НЕ ЮТК, так как для подачи команды на модем, нужно знать его внешний БЕЛЫЙ ip. Такой радости у меня естественно нет, поэтому данный метод отпал, даже не пройдя тестирования :).
Еще были схожие методы, если подлючить мобильный телефон к com-порту, и включать компьютер по приходящему звонку в качестве dial-up сигнала (но найти телефон с таким интерфейсом оказалась непосильной задачей). И еще ряд вариантов...
Хорошо что у меня есть Батя, который великолепно разбирается в электронике и за несколько минут предложил простой вариант решения этой проблемы =).
Включать компьютер по входящему звонку на телефон, без подключения его к дополнительным "интерфейсам", а лишь использовать родные разъемы идущие на метринку. Для "включателя" использовать звонковую цепь телефона, т.е. обычные провода от динамика. Таким образом нам подойдет любой звонящий ненужный телефон без дополнительных дата-кабелей.
Что в нем хотелось бы предусмотреть:
1) помимо включения иметь возможность дистанционного Reset'a
2) помимо п.1 иметь возможность дистанционного выключения (а на случай глобального зависания компьютера, - "экстренное выключение") ПК.
3) хоть маломальскую защиту от ошибочного/ложного звонка
4) не срабатывать на смс
Вкратце алгоритм работы устройства выглядит следующим образом:
1. Проверяем, закончился ли предыдущий звонок.
2. Ожидаем нового звонка.
3. По пришествии звонка проверяем, включен или выключен компьютер (РС)
4. Если РС выключен, задаем временные ворота 8-13 секунд и проверяем, попала ли длительность звонка в этот временной интервал. Если не попала - звонок считается ложным, тогда возвращаемся к пункту 1.
5. Длительность звонка попала в заданные временные ворота – звонок интерпретируется как сигнал включения РС. На 1 сек реле К2 замыкает контакты включения РС «PW-SW».
6. Через 2 сек проверяем, включился ли РС. Если да - возвращаемся к пункту 1.
7. Если нет - повторяем замыкание контактов включения РС «PW-SW» уже на 3 сек.
8. Независимо от того включился РС или нет - возвращаемся к пункту 1.
9. Если при выполнении пункта 3 выяснилось, что РС включен - задаем временные ворота 17-23 секунды и проверяем, попала ли длительность звонка в этот временной интервал. Если длительность оказалась меньше 17 сек - звонок считается ложным, тогда возвращаемся к пункту 1. Если длительность звонка больше 30 сек - звонок интерпретируется как сигнал выключения РС (см. пункт 12).
10. Длительность вызова попала в заданные временные ворота – звонок интерпретируется как сигнал сброса РС. На 1 сек реле К1 замыкает контакты сброса РС «RESET». РС перезагружается.
11. Возвращаемся к пункту 1.
12. Длительность звонка превысила 30 сек - звонок интерпретируется как сигнал выключения РС.
13. На 1 сек реле К2 замыкает контакты включения РС «PW-SW».
14. Через 1,5 мин. проверяем, выключился ли РС. Если да - возвращаемся к пункту 1.
15. Если нет – выполняем сброс РС, на 1 сек замыкая контакты реле К1 - сброса РС «RESET». Выдерживаем паузу 3-5 сек.
16. Включаем реле К2 замыкаются контакты включения РС «PW-SW».
17. Проверяем, выключился РС. Если да - возвращаемся к пункту 1.
18. Если нет, продолжая удерживать реле К2 в замкнутом состоянии, возвращаемся к пункту 17. Процесс повторяется до тех пор пока РС не выключится.
Ассемблеровский листинг (см. файл «tlf_13_d_n2.asm») снабжен подробнейшими комментариями, поэтому разобраться в работе программы контроллера, и при необходимости, внести свои изменения не представляет особой сложности.
Прошивка лежит в файле «tlf_13_d_n2.hex». Состояние фьюз битов (Fuse Bits) изображено на рисунке (файл есть в архиве с именем «FuseBits1.jpg»)

Устройство собрано на микроконтроллере AVR типа ATiny13A фирмы ATMEL. Этот микроконтроллер выбран по следующим соображениям: встроенный АЦП, наличие внутреннего тактового генератора, необходимое количество портов ввода-вывода, а именно 6, малые габариты (всего 8 выводов), низкая цена (до 50 руб.) и не является дефицитом, так как в настоящее время выпускается серийно.
В качестве исполнительных устройств используются сигнальные реле типа JRC-21F (JRC-19F, JRC-23F). В принципе подойдет любое реле с напряжением срабатывания 3 - 3,5 В и сопротивлением обмотки не менее 110 Ом.
Кстати все комплектующие приобретались в магазине АнтРЭК ул. Александровская 52 (угол с пер. Тургеневский). Суммарная стоимость всех деталей не превышала 150 руб.
Схема электрическая принципиальная:

Устройство работает следующим образом: сигнал вызова со звонковой цепи мобильного телефона через симметричный (невозможно перепутать сигнал и землю) разъем ХТ2, разделительный конденсатор С6 поступает на НЧ детектор VD4. Постоянная составляющая, выделенная интегрирующей цепью R5C5 (постоянная времени около 2 с), подается на вход АЦП контроллера (выв. 2, порт РВ3, М/С U1). Входную чувствительность можно регулировать программно в пределах 0 – 1,1 В с шагом 0,0043 В. В данном образце чувствительность составляет 0,7 В. Если уровень входного сигнала превышает 1,5 В резистор R7, лианирезующий работу (ВАХ) детектора, можно исключить. Если уровень входного сигнала превышает 4 В (например в качестве источника сигнала используется не мобильный телефон, а другое устройство) то в схему надо включить стабилитрон VZ1 с напряжением стабилизации 3,3 – 3,9 В, а сигнал подавать через резистор 1 – 10 кОм. Цепочка R2C2 служит для начального сброса контроллера, R8VD6 – для индикации прихода сигнала вызова, диод VD3 предохраняет устройство от переполюсовки питания. Диоды VD1, VD2 убирают обратный выброс напряжения самоиндукции при выключении реле, предохраняя тем самым выходы РВ5 и РВ6 М/С U1 от пробоя. Цепь R1C1 позволяет снизить, примерно в 2 раза, ток выходных ключей контроллера, когда реле находится в режиме удержания.
Использование реле, вместо электронных (транзисторных) ключей, обусловлено следующими соображениями: во-первых, контакты реле лучше всего заменяют кнопки “Power” и “Reset” ни каких токов утечки, ни каких напряжений насыщения, во-вторых, не надо заботиться о правильности подключения (соблюдении полярности) к материнской плате, в-третьих, не болит голова по поводу гальванической развязки (хотя, в нашем случае, она особого значения не имеет).
Питание устройства осуществляется от компьютера находящегося в дежурном режиме через разъем ХТ1. Черный провод (GND) соединяется с общим проводом БП РС, фиолетовый (Vcc) – с проводом дежурного питания (5 В), красный (Power good) – с шиной питания +5 В или +3,3 В. Напряжение питания от включенного БП РС, через резистор R4, поступает в виде лог. 1 на вход порта РВ4 сигнализируя контроллеру о том, что компьютер включен.
Это с одной стороны:

А вот с другой:

Устройство собрано на печатной плате размером 66 х 28 мм2 изготовленной по «лазерно- принтерно- утюжной» технологии. Описания и полезные советы касающиеся этой технологии в огромном количестве можно найти в интернете. Пример конструкции пробного варианта приведен ниже: сторона печатных проводников, сторона навесных элементов и устройство в сборе соответственно.


Печатная плата окончательного варианта, полностью соответствующая схеме приведена ниже: сторона печатных проводников и сторона навесных элементов соответственно.


Печатная плата разводилась в программе layout40, которая находится в архиве с исходниками в папке [Sprint Layout]. Из под этой программы удобно производить печать рисунков платы т.к. есть возможность точной коррекции размеров рисунка платы. Файл платы: «плата_3.lay».
Как упоминалось выше, в качестве источника управляющих сигналов используется старый мобильный телефон, у которого исправны как минимум две функции: работа от собственного блока питания, а так же прием и генерация сигнала вызова (звонка). Телефон надо аккуратно разобрать. Динамик звонка, а заодно электромоторчик вибровызова - удалить. К контактам на плате, где подсоединялся динамик звонка, припаять витую пару из двух тонких и мягких проводников длиной не более 1,5 м. Эту витую пару можно выпустить через любое свободное отверстие в корпусе мобильника, например через те, из которых выходил звук от звонкового динамика. К свободному концу витой пары припаивается «мама» разъема Х2.2.

Для программирования контроллера ATiny13A использовался самодельный программатор, аналог STK200/300. Он отлично работает совместно с программой «CodeVisionAVR C Compiler», вариантов и версий которой великое множество в Интернете. В бесплатных версиях, возможности этой программы ограничены, однако что касается части работающей с программатором, то она работает безукоризненно и в полном объеме. Интерфейс программирующей части CodeVisionAVR очень прост и интуитивно понятен, да и описаний работы этой программы в Интернете полно.
Схема моего программатора:

Обычно в качестве буфера DD1 используют м/с 555АП5 или ее аналог. Я же использовал 555ЛП8 которая по своим функциональным и электрическим возможностям не хуже, а длиной меньше (14 ножек вместо 20), что позволяет легко разметить ее в корпусе LPT разъема:


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


Общий вид программатора:

USB - кабель используется только для питания программатора и программируемого AVR контроллеры.
Для расширения возможностей этого программатора была изготовлена кросс – плата на которой установлены панельки DIP8, DIP20, DIP28 и DIP40, что значительно увеличивает номенклатуру программируемых AVR контроллеров. Конструкция кросс – платы со сторон печатных проводников и стороны навесных элементов приведены ниже. Размер платы 56 х 56 мм2.


Если же Вы счастливый обладатель ноутбука или суперсовременного компьютера у которых при всем желании не удается обнаружить LPT разъем, можно посоветовать собрать USB программатор, коих в интернете великое множество. Например здесь можно найти весьма удачный USB программатор работающий и с бесплатной AVRStudio и со знакомой CodeVisionAVR и ChipBlasterAVR v.1.07 Evaluation, и еще с массой других программ.
Если Вы не собираетесь в дальнейшем работать с AVR контроллерами, то кросс-плату делать не обязательно. Вместо разъема к шлейфу программатора можно сразу припаять панельку DIP8 естественно с соблюдением соответствия цоколевки м/с и назначения проводов в шлейфе программатора.
Устройство в сборе:

И внутри системника:

Все необходимые материалы, для сбора подобного устройства дома, лежат в архиве:
1. «Схема_2_1.JPG» - схема электрическая принципиальная устройства
2. «tlf_13_d_n2.asm» - листинг программы контроллера ATiny13A
3. «tlf_13_d_n2.hex» - прошивка контроллера
4. «плата_3.lay» - печатная плата (файл программы «layout40»)
5. [Sprint Layout] – папка с программой «layout40»
6. «LPT_STK200.JPG» - схема электрическая принципиальная программатора
7. «Прог_плата_ЛП8.lay» - печатная плата программатора (файл «layout40»)
8. «Прог_кроссплата D8_D40_1.lay» - кроссплата программатора (файл «layout40»).
9. «FuseBits1.jpg» - программируемые fuse-биты.
Звоним компьютеру :)

Включение
Перезагрузка
Выключение
Как видите, всё чудненько работает ;). Удаленное включение компьютера, перезагрузка и выключение в действии.
Исходиники и картинки в хорошем разрешении тут
П.С.
Забавно, что девайс со схожими функциями стоит 13к рублей http://www.lobelec-sb.ru/uslugi/gsmshutdown Зачем платить много, когда это можно сделать самому в 100!!!! раз дешевле =)
И еще, в качестве совета: лучше всего для подобных устройств подойдут симки Билайна, т.к. у них время ожидания звонка (т.е. сколько времени абоненту могут звонить, пока на коммутаторе не оборвут звонок) составляет ~ 1 минуту 20 секунд. Для сравнения на Теле2 ~ 20 сек, на МТС ~ 40 сек.
Сорри за качество фоток и видео, но у меня нет нормального фотоаппарата (точнее у меня его вообще нет) :)