USB WatchDog ARU-P2 uLua: инструкция и программирование
Подключение USB WatchDog ARU-P2 uLua, работа с wdtmon3, Reset/Power, CDC-драйвер, uLua IDE, периферия и код сторожевого таймера.
USB WatchDog ARU-P2 uLua — программируемый сторожевой таймер для ПК, терминалов,
промышленных компьютеров и автономных систем. По умолчанию он работает как
сторожевой таймер с Reset/Power, а при необходимости его логику можно изменить
в uLua без разработки прошивки на C.
WatchDog подключается по USB к контролируемому ПК. Программа-монитор на ПК
периодически отправляет устройству контрольный сигнал. Если программа-монитор
или ОС перестаёт его отправлять, ARU-P2 сначала нажимает Reset, а если это не
помогло — выполняет
выключение и включение через Power.
Безопасная установка
Сначала подключите устройство только по USB и убедитесь, что ПК его видит.
Выключите ПК перед подключением Reset/Power.
Не допускайте касания платы металлических поверхностей: бескорпусное
устройство можно повредить коротким замыканием.
Подключите каналы ARU-P2 параллельно кнопкам системного блока:
Осн.1/Доп.1 обычно используются для Reset, Осн.2/Доп.2 — для Power.
Включите ПК и проверьте тестовые нажатия из программы-монитора.
Подключение PBD10
Если используется исполнение PBD10, убедитесь, что разъём на материнской плате —
именно USB. На платах бывают похожие 10-контактные разъёмы IEEE1394 или COM:
подключение к ним может повредить устройство.
Ориентируйтесь по ключу разъёма: точка на плате PBD10 должна совпадать со
стороной, где в ответном разъёме отсутствует один металлический контакт.
ARU-P2 uLua может работать с программой, которая используется для USB WatchDog
Pro2 и Lite. В прошивке по умолчанию поддержаны базовые команды: контроль
зависания, информация об устройстве, температура, пауза, тестовые Reset/Power и
отключение светодиода.
wdtmon3 работает с прошивкой по умолчанию, но не меняет настройки ARU-P2 uLua.
Если нужно изменить алгоритм, назначение выводов или реакцию на события, это делается в коде
устройства через uLua.
Когда программировать
Программирование нужно, если стандартная схема Reset/Power недостаточна:
требуется другой тайминг;
нужно проверять вход, температуру или собственный протокол;
нужен нестандартный ответ на команды от ПК;
устройство должно работать как часть большего стенда или терминала.
Сценарий
Что меняется в программе
Reset не помогает с первого раза
число попыток, длительность импульса и переход к Power
Перегрев важнее сигнала от ПК
порог температуры и приоритет аварийного выключения
Есть внешний сигнал «оборудование исправно»
чтение входа и собственный таймер ожидания
Нужен журнал причин перезапуска
передача времени, температуры и события программе на ПК по CDC
прочитать сохранённый байткод, декомпилировать его и показать восстановленный код в редакторе
Защитить сохранённый код
запретить чтение сохранённого кода
Перезапустить
выполнить reset устройства
Декомпилированный код позволяет посмотреть логику установленного устройства, но
не восстанавливает исходный файл дословно: комментарии, форматирование и
первоначальные имена переменных и функций в байткоде не хранятся. Если код
защищён, обычное чтение через API или IDE недоступно.
Что делает прошивка по умолчанию
Программа ждёт команды по CDC. ~U сбрасывает таймер и отвечает
~A; ~I возвращает строку версии. Если таймер истёк,
устройство сначала импульсом нажимает Reset, а при следующем срабатывании
выполняет Power-off / паузу / Power-on. Красный светодиод показывает приближение
срабатывания, зелёный мигает при успешном контрольном сигнале.
Доступные выводы
Функция
Алиас uLua
Что подключено
Канал Reset
hw.p6
оптоизолированный выход
Канал Power
hw.p2
оптоизолированный выход, также ШИМ/UART TX
Дополнительный вход/датчик
hw.p9
GPIO, измерение частоты и коэффициента заполнения, DHT
Красный светодиод
rled
индикация состояния
Зелёный светодиод
gled
индикация контрольного сигнала
hw.p9 — одна физическая линия. В программе выберите для неё один режим:
дискретный вход, измерение сигнала или DHT. Одновременно подключать к ней
внешний контакт и DHT нельзя.
Короткая шпаргалка uLua
hw.gpio_init(hw.p6, hw.out)
hw.gpio_set(hw.p6, 1)
hw.gpio_init(hw.p9, hw.dht22)
local t = hw.dht_temp(hw.p9)
local h = hw.dht_hum(hw.p9)
hw.rled(true)
hw.delay_ms(100)
hw.rled(false)
Поддерживаются local-переменные int32, арифметика и битовые операции,
if, while, repeat, for, функции, строки и периферийные библиотеки. Не
поддерживаются таблицы, GC, замыкания и динамический require.
Полезный приём
При запуске программы на переднем плане терминал IDE занят её выполнением.
Добавляйте паузы в длительные циклы и нажмите «Стоп», чтобы остановить программу
и вернуть управление.
ПК не видит устройство
Проверьте USB-кабель и порт.
Подключите устройство напрямую, без хаба.
В Windows 8/10/11, Linux и macOS драйвер обычно не нужен.
Если Windows 11 показывает ошибку 10 для CDC, попробуйте удалить устройство в
диспетчере и подключить заново; при необходимости используйте HID/готовую
программу для проверки.
Reset или Power не срабатывает
Проверьте, что ПК выключен перед перестановкой проводов.
Подключайте каналы параллельно кнопкам системного блока, а не к случайным
пинам на плате.
Если используете PBD10, ещё раз проверьте, что разъём именно USB.
Запустите тестовое нажатие из wdtmon3.
После записи кода устройство ведёт себя неправильно
Подключитесь к uLua IDE и нажмите «Стоп».
Очистите сохранённый код или запишите рабочую версию.
Если быстрый запуск не работает, сначала очистите флеш-память с кодом.