
Предлагаю вариант устройства автоматически перезагружающее компьютер при зависании.
В основе лежит известная плата Arduino с минимальным количеством внешних электронных компонентов. Транзистор подключаем к плате согласно рисунку ниже. Коллектор транзистора подключаем вместо кнопки «Reset» компьютера на материнскую плату, на тот контакт который НЕ соединен с GND.
Вот и вся схема :
Функционирует устройство следующим образом: на компьютере запускается скрипт, который периодически шлет в порт компьютера данные. Ардуино подключается к USB и слушает этот порт. Если в течении 30 секунд данных нет Ардуино открывает транзистор, который соединяет Reset c землей, тем самым имитируя нажатия кнопки сброса.
После сброса ардуино делает паузу в 2 минуты дожидаясь загрузки всех программ и вновь начинает слушать порт.
Скрипт и майнеры должны быть добавлены в автозагрузку, а биос настроен на автоматическое включение компьютера.

Изготвление устройства требует минимальных навыков работы с паяльником и програмирования ардуино.
Так же можно использовать любой Н канальный транзистор с похожими характеристиками . Но смотрите что бы совпадала цоколевка . Например я использовал 9013 , там перевернутое подключение



Компонентты для сборки я покупал на Алиэкспресс :
Провода для макетной сборки http://ali.pub/22k78b
Ардуино УНО (точно подходит ) http://ali.pub/22k7dd
Arduino uno с кабелем http://ali.pub/22k7go
Скетч Ардуино
Code:
int LedPin = 13;
int ResetPin = 12;
int val = 0;
int count = 0;
void setup()
{
Serial.begin(9600);
pinMode(LedPin,OUTPUT);
//пауза на запуск 2 мин
delay (120000);
}
void loop()
{
count++ ;
if (Serial.available() > 0)
{
val = Serial.read();
if (val == ‘H’)
{
digitalWrite(LedPin,LOW);
digitalWrite(ResetPin,LOW);
count = 0;
}
else
{ count++ ;
}
}
delay (1000);
if (count > 10)
{
digitalWrite(LedPin,HIGH);
digitalWrite(ResetPin,HIGH);
}
}
Скрипт отправляющий в порт данные:
(Get-Date).ToString(‘dd.MM.yyyy HH:mm’) | Out-File c:\Users\miner\Desktop\reboot.txt -append
while($TRUE){
Start-Sleep -s 3
$port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
$port.open()
$port.WriteLine(«H»)
$port.Close()
}
Сразу после запуска скрипт записывает в файл reboot.txt текущую дату и время. По этому файлу можно судить о количество и времени перезагрузок. Путь к файлу и номер порта необходимо отредактриовать в соответствии с вашими данными системы. Код пишется в обычном блокноте и сохраняется с расширением *ps1.
Т.к. в Windows политикой безопасности отключено выполнение скриптов по двойному клику и из автозагрузки делаем финт ушами и запускаем шелл из батника следущего содержания:
start PowerShell.exe -ExecutionPolicy ByPass -File «c:\путь к вашему файлу\ваш файл.ps1»
Файл сохраняем с расширением *.bat и ставим его в автозагрузку.
Радуемся , теперь у нас все автоматизированно . Устройство испытано на своем ПК и польностью работает .


Подписывайтесь на Bitnovosti в telegram!
Делитесь вашим мнением об этой новости в комментариях под статьёй.









а не лучше бы вообще не соединять гальванически ардуину и матплату? мало ли. Использовать к примеру оптопары…
Данный девайс работает на старых платах а на новых не работает
потому что современные алвты не снимают 5вольт с ЮСБ портаи девайс остается в ресетном состоянии и недает больше компу загрузиться. надо скеч дописать так чтоб ресет был 2 секунды а не постоянно держал транзистор открытым.
Только GND Arduino и GND мат. платы нужно тоже соединить.
https://i.imgur.com/pTi4NDE.png
Еще бы добавить проверку сети после неудачной проверки порта. Роутеры тоже зависают.