Conhecendo o Watchdog no Arduino
Olá, tudo bem? Hoje vamos estar conhecendo sobre o watchdog no Arduino, o qual se tornou um recurso muito usado. Tal recurso é de fundamental importância para projetos maiores e também comerciais.
Contudo, a sua programação tem um grau a mais de dificuldade, mas nada absurdo e o seu entendimento é fácil. Assim, hoje vamos conhecer a fundo sobre o Watchdog.
Conhecendo o Watchdog
Primeiramente, vamos começar conhecendo sobre o Watchdog, também conhecido como o “cão de guarda”, ele basicamente é um temporizador que fica verificando o funcionamento do processamento do código. Assim, no momento que ele trava, o watchdog (o nosso cão de guarda) entra em ação e realiza o reset o microcontrolador.
Mas como ele sabe que ocorreu algum erro dentro do código? A sua verificação é feita por rearmamento, ou seja, no código é necessário você estar rearmando (iniciando ele novamente) periodicamente em alguns segundos ou milissegundos.
Dessa forma, quando o programa não fizer mais esse rearmamento, assume que ele travou e assim, o watchdog realiza o reset.
Qual a importância do Watchdog?
Então, agora que conhecemos como o nosso cão de guarda trabalha, vamos entender o porque ele se torna de fundamental importância em projetos maiores e também comerciais.
Vamos supor que desenvolvemos uma aplicação onde estamos comunicando um arduino ou ESP32 com um servidor.
Essa aplicação capta dados de sensores e envia a esse servidor e usuário está verificando esses dados em tempo real.
Agora, digamos que o usuário está a quilômetros do sensor e o nosso sistema trava, o que fazer? Andar quilômetros até lá e realizar o reset ou utilizar um watchdog? Percebeu a importância?
Outro exemplo são os roteadores, internamente eles possuem um watchdog por IP onde quando ele não conseguem se comunicar com o IP X, ele automaticamente realiza o reboot do roteador.
Componentes Necessários
Montagem do Circuito
Código do Projeto Comentado
Agora, depois de montado o circuito acima, basta realizar o upload do código abaixo em seu Arduino.
<code>/*
Projeto: Utilizando Watchdog no Arduino
Autor: Danilo Nogueira - AutoCore Robótica
Data: 06/03/2020
Código de Dominio Público.
*/
// ==================================================================================================
// --- Declaração da Biblioteca ---
// Biblioteca utilizada para acessar o watchdog do microcontrolador.
#include <avr/wdt.h>
// ==================================================================================================
// --- Declaração das Variaveis ---
int pinBot = 3;
int pinLED = 13;
// ==================================================================================================
// --- Declaração do void setup() ---
void setup() {
// Ativamos o watchdog e definimos o tempo de 2 seg.
wdt_enable(WDTO_2S);
// Declaramos o modo de operação dos pinos de cada componente
pinMode (pinBot, INPUT_PULLUP);
pinMode (pinLED, OUTPUT);
Serial.begin(9600);
Serial.println("Reset");
// Piscamos o LED para indicar o reset do microcontrolador
digitalWrite (pinLED, HIGH);
delay(500);
digitalWrite (pinLED, LOW);
}
// ==================================================================================================
// --- Declaração do void loop() ---
void loop() {
wdt_reset();
while (digitalRead(pinBot) == LOW) { delay (15); }
}
// ================================================= F I M ==========================================</code>
Gostou do post? Caso tenha ficado algo incompleto para você, comente abaixo 📝
Dicas? Dúvidas? 🤔 Críticas? 😱 Só comentar abaixo! 👇
Forte abraço e compartilha se gostou! 🤘
