Gestión del reloj watchdog (perro guardián) en Arduino

publicado en: Portada | 40

En electrónica y por extensión en informática, el watchdog (perro guardián) es un recurso que permite reiniciar un dispositivo físico o una aplicación cuando deja de funcionar normalmente. En concreto, referido a microcontroladores, se trata de un reloj de cuenta atrás que produce un reset cuando se desborda.

Como es lógico, el dispositivo no sabe cuándo deja de funcionar correctamente, el principio de funcionamiento consiste en impedir que la cuenta atrás termine y por tanto se produzca el reset del sistema. Para hacerlo, en primer lugar se configura el intervalo de tiempo en el que se produce el reinicio, y en segundo lugar se refresca este valor indicando así que el dispositivo funciona correctamente y por el momento no se debe reiniciar.

Para gestionar el perro guardián con Arduino debe utilizarse la librería de wdt.h y sólo tres funciones: wdt_disable() para desactivarlo mientras se configura el tiempo en el que se reseteará, wdt_enable(tiempo) que configura y activa el watchdog al tiempo que se indica como parámetro (tiempo) y wdt_reset() que renueva el intervalo que cuenta el perro guardián.

Las constantes que pueden utilizarse con wdt_enable para establecer el tiempo de cuenta atrás son:

  • WDTO_15MS = 15 milisegundos
  • WDTO_30MS = 30 milisegundos
  • WDTO_60MS = 60 milisegundos
  • WDTO_120MS = 120 milisegundos
  • WDTO_250MS = 250 milisegundos
  • WDTO_500MS = 500 milisegundos
  • WDTO_1S = 1 segundo
  • WDTO_2S = 2 segundos
  • WDTO_4S = 4 segundos
  • WDTO_8S = 8 segundos

Antes de usar el watchdog es importante asegurarse de que el bootloader (gestor de arranque) que tiene el microcontrolador de la placa Arduino que se está usando ha previsto el uso de este recurso. Es conocido un error en las placas del Arduino Mega 2560 que se quedaban colgadas precisamente con programas que usaban el watchdog.

Para saber más sobre qué es un bootloader o gestor de arranque y cómo grabar uno diferente al que venga con tu placa puedes consultar el artículo sobre los métodos para programar microcontroladores de Atmel.

Víctor Ventura

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

Más entradas - Página web

Sígueme:
TwitterLinkedIn

Seguir Víctor Ventura:

Programador multimedia y web + IoT. Mejor con software libre.

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

40 Respuestas

    • Víctor Ventura

      Hola, Jorge.

      No sé de ningún error (actual) en el watchdog de Arduino Uno, así que, salvo que tu placa sea muy antigua, no habría que actualizar el bootloader.
      El (famoso) problema en los Arduino Mega sí que fue más reciente. De todas formas, en las versiones más nuevas del bootloader, también estaba resuelto y en cualquier caso, solamente era necesario actualizar el bootloader para resolverlo; no es demasiado problema.

      Saludos.

    • Diego

      s, en arduino uno tambien esta el error, al momento de que trata de reiniciar el arduino se cuelga el programa. Hay que cambiar el bootloader. Yo lo hice utilizando optiboot como bootloader.

  1. Rodrigo

    Que tal, buen post.
    Consulta, cuando el watchdog reinicia el arduino lo hace de cero? es decir se vuelve a ejecutar el setup()?
    si yo no quisiera que pase esto, es posible configurar el watchdog solo como una interrupcion?

    • Víctor Ventura

      Hola, Rodrigo.

      Sí, Arduino se reinicia de cero; de hecho, hace algo más que empezar por setup()
      Para implementar la funcionalidad que dices no necesitas el watchdog. Lo mejor sería usar alguna de las «interrupciones software» del MCU pero Arduino no prevé hacer eso (fácilmente) así que puedes añadir código en loop() que verifique si ha pasado determinado intervalo y en tal caso (reinicie el contador de tiempo y) ejecute la función correspondiente.

      A ver si eso te ayuda un poco 🙂

  2. carlos

    buenos dias… como se que el wdt funciona correctamente en mi placa de arduino uno me podria dar un ejemplo?

    • Víctor Ventura

      Hola, Carlos.

      ¿Te refieres a algo así?

      Espero que te sirva. Un saludo.

        • Víctor Ventura

          Hola, Carlos.

          Deberías ver en la consola serie, cada dos segundos y medio (más o menos) el texto «Esto se ve en la consola» y NO deberías ver el texto «Esto NO lo muestra en la consola porque se resetea antes». Siempre que en tu placa funcione el watchdog.

          Saludos.

  3. jorge

    buenos días.. como se que que el wdt me funciona bien no veo que haga nada en mi placa (arduino uno)

    • Víctor Ventura

      Hola, Jorge.

      Como habrás leído en el artículo, en algunas versiones de Arduino simplemente no funciona. Si el problema es del firmware seguramente podrás actualizarlo.

      Gracias por visitar polaridad.es

    • Víctor Ventura

      Hola, David.

      No hace falta descargarla, es parte del IDE de Arduino. Solamente tienes que añadir al principio #include <avr/wdt.h>

      ¡Suerte!

  4. Antonio

    Tengo una arduino uno conectado a un lcd 16×2.
    Todo funciona bien, pero en esperas largas sin movimiento de entradas, el lcd acaba mostrando garabatos que desaparece tras un reset. Y todo vuelve a funcionar. Esto sucede en pausas de producción, esta instalado en una maquina.
    Saben porque pasa esto?

  5. Bluedark

    Hola Antonio, a mi me pasa lo mismo solo que yo utilizo un lcd 20×4, pero tengo exactamente el mismo problema y de momento no he sido capaz de averiguar porque ocurre. Por favor si encuentras el problema coméntalo, yo haré lo mismo. Gracias.

  6. Milton

    Hola, favor podrían ayudarme informando de donde puedo bajarme el bootloader de la MEGA 2560. El bootloader con la corrección del watch dog me refiero. Gracias

    • Víctor Ventura

      Hola, Milton.

      En condiciones normales puedes descargarlo con el IDE de Arduino y lo encontrarás dentro de la ruta:
      arduino-1.6.8/hardware/arduino/avr/bootloaders/stk500v2/stk500boot_v2_mega2560.hex

      Lógicamente, si tienes otra versión, los números serán diferentes, pero creo que con eso puedes hacerte una idea.

      Suerte y saludos.

  7. Milton

    Hola Victor, gracias por tu ayuda.
    Efectivamente encontré ese archivo que me indicas. La consulta es, ese archivo me permitiría utilizar la librería de watchdog en la 2560 r3? y la otra consulta es, como cargo ese archivo en el IDE.
    Gracias…

    • Víctor Ventura

      Hola, Milton.

      Hasta donde sé, hace mucho que los problemas del watchdog en Arduino (en general y en Mega 2560 en concreto) están resueltos. Supongo, por tanto, que con ese firmware funcionará correctamente el watchdog.

      Con respecto a la librería, no es exactamente de Arduino sino del entorno para programar los AVR con el compilador que usa Arduino. En definitiva, no tienes que añadir nada al IDE de Arduino, solamente incluir en tu código la librería con algo como #include <avr/wdt.h>

      Espero que te resulte útil.

      Un saludo y gracias por participar en el blog 🙂

  8. Daniel

    Saludos,muy interesante todo. Tengo un problema: estoy implementando un diseño con Arduino que abra o cierre la puerta del garage recibiendo la orden de un control remoto. Pudiera ser que el proceso de apertura o cierre demore más de 8 segundos que es el límite máximo de tiempo del WDT, ¿alguna sugerencia o truco para aumentar el tiempo del WDT? Un cordial saludo. Muchas gracias

    • Víctor Ventura

      Hola, Daniel.

      Si no te hace falta el watchdog de Arduino lo puedes desactivar con wdt_disable (suele estar desactivado al reinicio, en tal caso bastaría con no activarlo usando wdt_enable). De todas formas, no hace falta que una operación tarde menos del tiempo de reinicio marcado por el watchdog, solamente necesitas «refrescarlo» con wdt_reset en un intervalo menor al configurado.

      A lo peor has utilizado en tu programa estructuras de controlo (seguramente while) que bloquean demasiado tiempo el MCU o has implementado esperas muy largas con delay y por eso se reinicia tu placa Arduino. Corrigiendo esas partes del código podrás utilizar sin problemas el watchdog.

      También hay un error (un poco rebuscado, pero te lo digo por si acaso) que se produce cuando no se reconoce correctamente el tipo de MCU que incorpora la placa Arduino. De ser el caso, bastaría con definirlo «a mano» al principio del código, por ejemplo, con #define __AVR_ATmega328P__. Mucho más rebuscado es un viejo error en la librería wdt.h para AVR que, al desactivar el bit WDE, bajaba al mínimo el valor del prescaler; pero supongo que trabajas con una versión del IDE de Arduino actualizada, que ya tendrá resuelto este inconveniente.

      Gracias por participar en polaridad.es

  9. Daniel

    Gracias Víctor,precisamente ese es el problema,que abro y cierro el portón dentro de un while del que se sale sólo cuando se acciona el límite final de recorrido y éste proceso demora más de 8 segundos que es el máximo tiempo del WDT. Estoy pensando poner wdt_reset() al principio del void loop() y dentro del while……

  10. German

    hola Victor buenas noches
    muy interesantes tus aportaciones, sabia poco del watch dog, tengo una consulta estoy trabajando en un proyecto y tal vez puedas ayudarme, quiero reinicias un router con un arduino uno+sim900+modulo rele tendras alguna informacion sobre algun proyecto de este tipo,muchas gracias por tu tiempo

  11. German

    hola Victor buenas noches
    muy interesantes tus aportaciones, sabia poco del watch dog, tengo una consulta estoy trabajando en un proyecto y tal vez puedas ayudarme, quiero reinicias un router con un arduino uno+sim900+modulo rele tendras alguna informacion sobre algun proyecto de este tipo,muchas gracias por tu tiempo

    • Víctor Ventura

      Hola, German.

      Ahora mismo no se me ocurre ningún proyecto relacionado con lo que planteas.

      Supongo que, como tu comentario está en este artículo sobre el watchdog, lo que quieres es detectar si el dispositivo está funcionando y si no es así, reiniciarlo. Abrir o cerrar un relé (si optas por ese componente) es tan sencillo como poner a nivel alto o bajo una salida digital, supongo que al recibir un SMS o una llamada controlada; creo que la parte interesante es detectar que no esté funcionando ¿Cómo lo piensas resolver? (En realidad, el watchdog sería el del router). Ahí a lo mejor sí te podemos ayudar si nos das más información.

      Gracias por participar en polaridad.es

  12. ANGEL

    Hola, estoy usando un arduino WemosD1 y me da poblemas al compilar; no encuentra la libreria .
    5:22: fatal error: avr/wdt.h: No such file or directory
    ¿sabes cuál puede ser el problema? Muchas gracias

    E:\Programs\Arduino\arduino-builder -dump-prefs -logger=machine -hardware E:\Programs\Arduino\hardware -hardware C:\Users\USER1\AppData\Local\Arduino15\packages -tools E:\Programs\Arduino\tools-builder -tools E:\Programs\Arduino\hardware\tools\avr -tools C:\Users\USER1\AppData\Local\Arduino15\packages -built-in-libraries E:\Programs\Arduino\libraries -libraries E:\USER1\ARDUINO\libraries -fqbn=esp8266:esp8266:d1:CpuFrequency=80,UploadSpeed=115200,FlashSize=4M1M -ide-version=10613 -build-path C:\Users\USER1\AppData\Local\Temp\arduino_build_947254 -warnings=default -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2 -prefs=runtime.tools.mkspiffs.path=C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\0.1.2 -prefs=runtime.tools.esptool.path=C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\esptool\0.4.9 -verbose E:\USER1\ARDUINO\webserverWemosD1_v5\webserverWemosD1_V6_rest_whatchdog.ino\webserverWemosD1_V6_rest_whatchdog.ino.ino
    E:\Programs\Arduino\arduino-builder -compile -logger=machine -hardware E:\Programs\Arduino\hardware -hardware C:\Users\USER1\AppData\Local\Arduino15\packages -tools E:\Programs\Arduino\tools-builder -tools E:\Programs\Arduino\hardware\tools\avr -tools C:\Users\USER1\AppData\Local\Arduino15\packages -built-in-libraries E:\Programs\Arduino\libraries -libraries E:\USER1\ARDUINO\libraries -fqbn=esp8266:esp8266:d1:CpuFrequency=80,UploadSpeed=115200,FlashSize=4M1M -ide-version=10613 -build-path C:\Users\USER1\AppData\Local\Temp\arduino_build_947254 -warnings=default -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2 -prefs=runtime.tools.mkspiffs.path=C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\0.1.2 -prefs=runtime.tools.esptool.path=C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\esptool\0.4.9 -verbose E:\USER1\ARDUINO\webserverWemosD1_v5\webserverWemosD1_V6_rest_whatchdog.ino\webserverWemosD1_V6_rest_whatchdog.ino.ino
    Using board ‘d1’ from platform in folder: C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0
    Using core ‘esp8266’ from platform in folder: C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0
    Detecting libraries used…
    «C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++» -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/include» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/lwip/include» «-IC:\Users\USER1\AppData\Local\Temp\arduino_build_947254/core» -c -w -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -ffunction-sections -fdata-sections -w -x c++ -E -CC -DF_CPU=80000000L -DLWIP_OPEN_SRC -DARDUINO=10613 -DARDUINO_ESP8266_WEMOS_D1MINI -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD=»ESP8266_WEMOS_D1MINI» -DESP8266 «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\variants\d1» «C:\Users\USER1\AppData\Local\Temp\arduino_build_947254\sketch\webserverWemosD1_V6_rest_whatchdog.ino.ino.cpp» -o «nul»
    «C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++» -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/include» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/lwip/include» «-IC:\Users\USER1\AppData\Local\Temp\arduino_build_947254/core» -c -w -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -ffunction-sections -fdata-sections -w -x c++ -E -CC -DF_CPU=80000000L -DLWIP_OPEN_SRC -DARDUINO=10613 -DARDUINO_ESP8266_WEMOS_D1MINI -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD=»ESP8266_WEMOS_D1MINI» -DESP8266 «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\variants\d1» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi\src» «C:\Users\USER1\AppData\Local\Temp\arduino_build_947254\sketch\webserverWemosD1_V6_rest_whatchdog.ino.ino.cpp» -o «nul»
    «C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++» -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/include» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/lwip/include» «-IC:\Users\USER1\AppData\Local\Temp\arduino_build_947254/core» -c -w -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -ffunction-sections -fdata-sections -w -x c++ -E -CC -DF_CPU=80000000L -DLWIP_OPEN_SRC -DARDUINO=10613 -DARDUINO_ESP8266_WEMOS_D1MINI -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD=»ESP8266_WEMOS_D1MINI» -DESP8266 «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\variants\d1» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi\src» «-IE:\USER1\ARDUINO\libraries\DHT11» «C:\Users\USER1\AppData\Local\Temp\arduino_build_947254\sketch\webserverWemosD1_V6_rest_whatchdog.ino.ino.cpp» -o «nul»
    «C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++» -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/include» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0/tools/sdk/lwip/include» «-IC:\Users\USER1\AppData\Local\Temp\arduino_build_947254/core» -c -w -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -ffunction-sections -fdata-sections -w -x c++ -E -CC -DF_CPU=80000000L -DLWIP_OPEN_SRC -DARDUINO=10613 -DARDUINO_ESP8266_WEMOS_D1MINI -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD=»ESP8266_WEMOS_D1MINI» -DESP8266 «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\variants\d1» «-IC:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi\src» «-IE:\USER1\ARDUINO\libraries\DHT11» «C:\Users\USER1\AppData\Local\Temp\arduino_build_947254\sketch\webserverWemosD1_V6_rest_whatchdog.ino.ino.cpp» -o «C:\Users\USER1\AppData\Local\Temp\arduino_build_947254\preproc\ctags_target_for_gcc_minus_e.cpp»
    E:\USER1\ARDUINO\webserverWemosD1_v5\webserverWemosD1_V6_rest_whatchdog.ino\webserverWemosD1_V6_rest_whatchdog.ino.ino:5:22: fatal error: avr/wdt.h: No such file or directory

    #include

    ^

    compilation terminated.

    Usando librería ESP8266WiFi con versión 1.0 en la carpeta: C:\Users\USER1\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi
    Utilizando biblioteca DHT11 en carpeta: E:\USER1\ARDUINO\libraries\DHT11 (legacy)
    exit status 1
    Error compilación en tarjeta WeMos D1(Retired).

    • Víctor Ventura

      Hola, Ángel.

      El Wemos D1 está basado en el ESP8266 y la librería que no encuentra al compilar es para la arquitectura AVR. Aunque el error de compilación empieza al no encontrar el documento, tampoco funcionaría porque se trata de algo que se hace a un nivel bajo y que depende de MCU.

      No sé exactamente qué necesitas hacer con el watchdog pero seguramente puedas resolverlo en un ESP8266 como el de los Wemos utilizando la librería ticker.

      Suerte con tu proyecto y gracias por participar en polaridad.es

  13. Alberto Coronado

    Hola que tal, actualmente tengo problemas con un ESP8266 programado desde arduino, y es que lo tengo comunicado con una Raspberry Pi con protocolo Modbus TCP hasta aqui la comunicacion todo bien, cuando el ESP8266 se desconecta y vuelve a conectarse al Raspberry se conecta sin problemas, el problema viene cuando se cae el Raspberry es decir se apaga y corre de nuevo no logro que el ESP8266 se vuelva a conectar, crees que esta libreria funcione con el ESP8266 o tienen alguna idea de como hacer un reset del ESP8266? de antemano gracias.

  14. Jose Manuel

    Muy buenas. Primero las felicitaciones por tus artículos que son de gran ayuda.
    Quisiera pedirte ayuda para resolver un problema que creo puede ser común para muchos usuarios. De hecho he visto en un comentario anterior de Daniel que tiene este mismo problema. ¿Conoces alguna librería en la que se pueda programar el temporizador con un tiempo superior a los 8 segundos?. En mi caso, estoy usando una placa GSM para subir a Internet señales de varios sensores. Por razones de estabilidad de la red de telefonía, o del servidor web, puntualmente el tiempo qué tarda en hacer la conexión supera los 8 segundos y el watchdog me reinicia el programa. Me gustaría poder ponerle un tiempo de 16 segundos. ¿Cómo lo podría hacer?
    Muchas gracias

    • Víctor Ventura

      Hola, Jose Manuel.

      Por desgracia no conozco ninguna librería que haga lo que necesitas.

      La solución más sencilla que se me ocurre es desactivar el watchdog con wdt_disable() mientras realizas la conexión y volverlo a activar con wdt_enable(tiempo) al terminar.

      Saludos y muchas gracias por tu visita y por tus felicitaciones ¡Hasta pronto!

      • Juan Carlos

        Buenas tardes,
        Pudieron resolver esto de alguna forma? Yo estoy usando un Arduino con una placa con SIM808 y en la conexión HTTP suele tomar mas de 8 segundos. Le había puesto el Watchdog tal cual se menciona, osea deshabilitar en la conexión y vovlerlo a activar, luego de 5 días de pruebas se quedó colgado el Arduino; le quité la energía y nuevamente está trasmitiendo, puedo asumir que justo en la conexión se colgó y como está desactivado allí se colgó todo. ¿Alguna sugerencia?
        Muchas gracias,

        Slds!
        Juan Carlos
        Lima, Perú

  15. hansel

    Buenos dias

    Amigos tengo un problemita pequeño error y no se como solucionarlo y acudo a ustedes q son los master en el tema para que por favor me den su ayuda
    Necesito hacer un reset logico en un arduino uno pero que no se repita. estuve leyendo sobre el perro guardian pero el problema con esta libreria es que me sigue haciendo el reset continuamente. Lo que necesito es hacer un reset despues de determinado tiempo de iniciar el arduino.

    Quedo atento

  16. Éduardo

    Hola
    Tengo un problema con mi arduino mega, el arduino no ejecuta el código, para que se ejecuta le tengo que hacer varias pulsaciones al botón reset de alduino. ¿que puedo hacer?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *