Возможно ли такое сделать на Arduino?

JE
Offline
Зарегистрирован: 25.01.2013

Есть комп, для него надо сделать аппаратный включатель/перезагрузчик.

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

Можно выставить соответствующую опцию в BIOS-е, но это не надежно, т.к. бывает настройки BIOS-а сбрасываются (а я очень далеко от этого компа), бывает батарейка на материнке садится.

Хотелось бы такое устройство, которое могло бы выполнять две функции:

1) При появлении напряжения в питающей сети запускается таймер, например на 10 секунд, далее устройство детектирует наличие напряжения на какой-либо линии (это напряжение от блока питания – 5В или 12В) (это нужно для того, чтобы не включать комп, если вдруг он сам включился), и, если напряжения нет, то устройство «нажимает» кнопку включения компа (замыкает соответствующие контакты на материнке)

2) Устройство получает от компа сигнал, о том, что комп начал выполнение процедуры перезагрузки. Устройство запускает таймер, по истечении которого отключает питание компа (наверное физически прерывает линию питания блока питания компа). Затем, по истечении, например, 10 секунд устройство выполняет пункт 1. (эта функция нужна, т.к. бывает некоторые компы виснут на этапе завершения запущенных программ и перезагрузка не проходит до конца)

Подскажите пожалуйста, возможно ли такое реализовать на Arduino??

Если возможно, то в какие трудозатраты это выльется и сколько будет стоить оборудование??

maksim
Offline
Зарегистрирован: 12.02.2012

Можно.
Arduino + провода + время. 
Дуину запитать от дежурного источника. Так как дуина запитана от того же источника питания что и материнка "нажимать" кнопку влючения/выключения можно напрямюу цифровым выводом, открою вам секрет - не нужно физически прерывать линию, достаточно просто удерживать нажатой кнопку включения более 3 секунд и произойдет принудительное отключение питания. Дальше вопрос стоит в том, будет ли материнка определять дуину, когда она питается от внешнего источника, если будет, то все хорошо, если нет, то это лечится. Ну и останется написать программульку, которая стартует при запуске винды и отправляет в СОМ-порт команду.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

JE пишет:

1) При появлении напряжения в питающей сети запускается таймер, например на 10 секунд, далее устройство детектирует наличие напряжения на какой-либо линии (это напряжение от блока питания – 5В или 12В) (это нужно для того, чтобы не включать комп, если вдруг он сам включился), и, если напряжения нет, то устройство «нажимает» кнопку включения компа (замыкает соответствующие контакты на материнке)

Замкните сразу с блока питания зеленый на землю - и блок будет всегда включаться при наличии 220 вольт...

JE пишет:

2) Устройство получает от компа сигнал, о том, что комп начал выполнение процедуры перезагрузки. Устройство запускает таймер, по истечении которого отключает питание компа (наверное физически прерывает линию питания блока питания компа). Затем, по истечении, например, 10 секунд устройство выполняет пункт 1. (эта функция нужна, т.к. бывает некоторые компы виснут на этапе завершения запущенных программ и перезагрузка не проходит до конца)

Это - можно, только в случае "застревания при загрузке" - не поможет: представьте, что с той стороны ждет заставка "press any key..." и сколько машину не перегружай - она не исчезнет. По опыту удаленной эксплуатации компьютеров - необходимость дернуть питанием при живом компьютере возникает чрезвычайно редко. А если он завис - тут Ваш алгоритм уже не запустится.

Надо делать иначе: компьютер выставляет некий сигнал с заранее заданной периодичностью, если очередной сигнал не пришел - то считаем, что компьютер завис и дергаем ему питание на 30 секунд. После N попыток - считаем, что сдохла железка и прекращаем попытки реанимировать.