Font Size

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

Watchdog
Esquema de ligação no Arduno

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 &lt;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! 🤘

5.00 avg. rating (94% score) - 1 vote