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! 🤘