Watchdog на arduino для майнига . Делаем watchdog своими руками на ардуино UNO
Предлагаю вариант устройства автоматически перезагружающее компьютер при зависании.
В основе лежит известная плата Arduino с минимальным количеством внешних электронных компонентов. Транзистор подключаем к плате согласно рисунку ниже. Коллектор транзистора подключаем вместо кнопки «Reset» компьютера на материнскую плату, на тот контакт который НЕ соединен с GND.
Вот и вся схема :
Функционирует устройство следующим образом: на компьютере запускается скрипт, который периодически шлет в порт компьютера данные. Ардуино подключается к USB и слушает этот порт. Если в течении 30 секунд данных нет Ардуино открывает транзистор, который соединяет Reset c землей, тем самым имитируя нажатия кнопки сброса.
После сброса ардуино делает паузу в 2 минуты дожидаясь загрузки всех программ и вновь начинает слушать порт.
Скрипт и майнеры должны быть добавлены в автозагрузку, а биос настроен на автоматическое включение компьютера.
Изготвление устройства требует минимальных навыков работы с паяльником и програмирования ардуино.
Так же можно использовать любой Н канальный транзистор с похожими характеристиками . Но смотрите что бы совпадала цоколевка . Например я использовал 9013 , там перевернутое подключение
Компонентты для сборки я покупал на Алиэкспресс :
Провода для макетной сборки https://ali.pub/22k78b
Ардуино УНО (точно подходит ) https://ali.pub/22k7dd
Arduino uno с кабелем https://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);
}
}
Скрипт отправляющий в порт данные:
Code:
(Get-Date).ToString(‘dd.MM.yyyy HH:mm’) | Out-File c:UsersminerDesktopreboot.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 политикой безопасности отключено выполнение скриптов по двойному клику и из автозагрузки делаем финт ушами и запускаем шелл из батника следущего содержания:
Code:
start PowerShell.exe -ExecutionPolicy ByPass -File «c:путь к вашему файлуваш файл.ps1»
Файл сохраняем с расширением *.bat и ставим его в автозагрузку.
Радуемся , теперь у нас все автоматизированно . Устройство испытано на своем ПК и польностью работает .
Источник
Подписывайтесь на Bitnovosti в telegram!
Делитесь вашим мнением об этой новости в комментариях под статьёй.