Простой самодельный ватчдог (сторожевой таймер) для майнера

(in English)

Привет! Продолжаю свою регулярную серию постов на тему железного DIY. На этот раз мы будем собирать аппаратный сторожевой таймер (ватчдог или watchdog) для майнера с GPU (или в принципе для любого компьютера).

Основное акцент в этом устройстве сделан на простоте сборки и установки, а также дешевизне и простоте поиска деталей для сборки. Этот девайс получится собрать даже у тех, кто не знает электроники и/или программирования.


Начнем со сбора деталей:

Детали

Маст хев

Вот и все что понадобится. Если ты, конечно, не против уродливых девайсов.
  • Любая Arduino. Я взял Uno - самую распространенную из всех. Требования к ней: хотя бы 1 цифровой пин и один последовательный порт подсоединенный к USB.


  • Герконовое реле. Выбор такого относительно редкого вида реле основан на простом факте: катушка этого реле потребляет всего 9мA при напряжении 5В, так что ее может напрямую включать нога AVR:


  • Штырьковые разъемы с шагом контактов 2.54 мм (0.100") и ответная часть к ним (ссылка на оба):

Необязательные детали (если не хочется случайно спалить устройство, пролив на него кофе) 

Хочень чтобы девайс выглядел прилично? Тогда советую взять это.
  • Корпус. Я буду использовать пластиковую коробку для еды (та-да!) чтобы показать насколько просто можно найти корпус для своего устройства. Не обязательно ходить по специализированным магазинам - такое продается в любом супермаркете!


  • Какой - нибуль двухконтактный разъем для монтажа на корпус. У меня используется обычный разъем питания который можно найти почти в каждом электронном устройстве (и в Arduino тоже, кстати):

  • Крошечные шурупы (М3) и стойки для того чтобы закрепить Arduino внутри корпуса:

Сборка

  1. Прикрути Arduino к днищу коробки. Вот тут-то и пригодятся стойки с шурупами.

  2. Сделай отверстия в коробке для двухконтактног разъема и для  USB на Arduino. Круглое отверстие очень удобно проделать коническим сверлом:


  3. Прямоугольное отверстие проделать потруднее. Лично я нагреваю для этого на газовой плите шило и проплавляю при помощи его любые формы в пластике. То что получается обычно стоит обработать напильником и/или острым ножом.

  4. Спаиваем небольшую схему из 4 проводов:

  5. Остается сделать только шнур который соединит ватчдог с материнской платой. На одном конце припаиваем двухконтактный разъем (тот что на корпус), на другой - ответную часть к 2 штырькам для кнопки сброса на материнке.

  6. Вот и все! Теперь надо только закрыть коробку и воткнуть шнуры на место:

Софт

Весь необходимый софт (а именно, скетч для Arduino и код на Java) вместе с инструкцией по его сбору и установке в моем репо на Github. Java я выбрал потому что код можно будет запустить и на Windows и на Linux - двух главных платформах для майнинга.

Java приложение собирается Maven'ом - точно такую картинку увидит и пользователь Linux.

Пробуем запустить все вместе


Загрузи скетч на Arduino, подключи ее к нужному компу и запусти тот .jar который ты только что собрал из репозитория. Теперь, если все сделано правильно, можно первый раз лицезреть как Arduino ватчдог и Java работают вместе:

Как это работает: программа на стороне ПК пытается подключиться к каждому последовательному порту по очереди (включая порты, которые появляются во время этого процесса) в течение 30 секунд. Каждому порту она отправит строку "hello" и будет мониторить этот порт, ожидая получить в ответ ту же строку в верхнем регистре. Это "handshake" (рукопожатие) часть протокола. Когда рукопожатие завершено, программа начнет отправлять строку "ping" на этот порт каждые пять секунд.

Программа на Arduino после рукопожатия мониторит вход последовательного порта на наличие строки "ping". Если такая строка не была получена в течение 10 секунд, сторожевой таймер принудительно перезагрузит компьютер.

Таким образом, если запускать программу на ПК вручную, срабатывание принудительного сброса будет «одноразовым», то есть после перезапуска компьютера сторожевой таймер застрянет в ожидании handshake от программы, которая не запущена. Чтобы ватчдог работал всегда, добавьте программу на Java в список автозапуска.

Теперь можно и подключить сторожевой таймера вместо кнопки сброса на материнской плате:



Вот когда он сможет по-настоящему перезагрузить компьютер.

Также есть видео в котором я показываю процесс сборки этого ватчдога:

Comments