Использование внутреннего Watchdog таймера в ESP32
Watchdog (WDT) — это встроенный таймер микроконтроллера ESP32, который автоматически перезапускает устройство, если программа зависла или перестала выполняться корректно. Эта функция особенно полезна в проектах, работающих без постоянного контроля, например, в IoT-устройствах и системах автоматизации.
1. Теория
- Назначение WDT: предотвращает «зависание» устройства, автоматически его перезапуская.
- Типы WDT в ESP32:
- Task Watchdog — следит за отдельными задачами в FreeRTOS.
- Main System Watchdog — следит за работой всей системы.
- Принцип работы: программа должна периодически «кормить» (сбрасывать) таймер WDT. Если этого не происходит в течение заданного времени — выполняется аппаратный сброс ESP32.
2. Подключение библиотеки
Для работы с WDT в Arduino IDE можно использовать встроенные функции ESP-IDF через Arduino-обёртку:
#include <esp_task_wdt.h>
3. Пример кода
Пример инициализации и использования Task Watchdog с таймаутом 5 секунд:
#include <esp_task_wdt.h>
void setup() {
Serial.begin(115200);
// Инициализация WDT на 5 секунд
esp_task_wdt_init(5, true); // true — перезапуск при срабатывании
esp_task_wdt_add(NULL); // Добавляем текущую задачу (loop) в наблюдение
}
void loop() {
Serial.println("Работаем нормально");
delay(2000); // Задержка меньше 5 секунд — WDT не сработает
// Сброс WDT
esp_task_wdt_reset();
// Если раскомментировать ниже — произойдет перезапуск через 5 секунд
/*
Serial.println("Симулируем зависание...");
while (true) { } // Бесконечный цикл — WDT перезапустит ESP32
*/
}
4. Настройка времени и задач
- Таймаут: задаётся в секундах в функции
esp_task_wdt_init(). - Добавление задач:
esp_task_wdt_add(handle)— можно отслеживать отдельные задачи в FreeRTOS. - Удаление задач:
esp_task_wdt_delete(handle).
5. Применение
- IoT-датчики и контроллеры, работающие в удалённых местах.
- Проекты с долгими циклами и сложной логикой.
- Системы, которые должны автоматически восстанавливаться после ошибок.
6. Важные замечания
- Старайтесь не «кормить» WDT слишком часто — это может скрыть зависания кода.
- Не используйте большие задержки
delay()без сброса WDT. - В многозадачных проектах учитывайте, что WDT может быть настроен для нескольких потоков одновременно.
Вывод: использование внутреннего Watchdog таймера ESP32 — это простой и надёжный способ повысить стабильность ваших проектов и защитить их от случайных зависаний.
Подключение шагового двигателя
Привет, друзья! Предлагаю вам практический алгоритм, как правильно подключить обмотки шагового дви..
Модуль реле 4-канальный 5В 10А
4-канальный модуль реле для подключения напрямую к дискретному выходу контроллера. Светодиодная инди..
143.14грн.
Разработка печатных плат под заказ — профессиональное проектирование PCB для бизнеса
Разработка печатных плат под заказ — профессиональное проектирование PCB для бизнеса Разработка..
АЦП ADS1115 4-х канальный
АЦП ADS1115 4-х канальный ADS1115 — это 4-х канальный 16-разрядный аналого-цифровой преобразовате..
99.62грн.
Умный дом #2: Wi-Fi управление лампочкой через реле
Умный дом #2: Wi-Fi управление лампочкой через реле Один из самых простых и наглядных проек..





