bclose

Despertar mediante Timer o Temporizador

Material requerido

vista lateral del esp32 Un módulo ESP32

Probando el temporizador para despertar el ESP32

 

La primera forma de despertar el módulo que vamos a ver es usar el temporizador o timer que tiene el módulo RTC del ESP32. Este método nos va a resultar útil cuando queramos hacer ciertas tareas de forma periódica. Podríamos, por ejemplo, despertar cada hora, leer la temperatura y subirla a un servidor y entonces volver a dormirlo para ahorrar batería.

Contenido solo disponible para suscriptores. ¡Accede al contenido!

     

Lo que hace este programa es contar el número de veces que ha despertado el ESP32 y mostrárnoslo en el puerto serie, junto con la razón por la que ha despertado. En este caso será siempre por temporizador.

Después de los comentarios, las dos primeras definiciones que encontramos son estas:

#define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP  5        /* Time ESP32 will go to sleep (in seconds) */

La primera es simplemente un factor de conversión, para que podamos indicarle en la segunda de ellas el intervalo de tiempo en segundos que queremos usar para despertar al ESP32. En realidad  no tenemos por qué hacerlo así, podríamos meter directamente el tiempo en microsegundos, pero por regla general, estamos más acostumbrados a pensar en segundos.

Inmediatamente después tenemos una función en la que básicamente tenemos un switch case en el que mostramos en el monitor serie la razón por la que ha despertado el ESP32.

Contenido solo disponible para suscriptores. ¡Accede al contenido!

     

Después tenemos el setup(), donde estará todo el cuerpo del programa. Lo primero que hace es fijar la velocidad del puerto serie a 115200 baudios. Después suma uno a la variable bootCount y muestra en el monitor serie el número de veces que ha despertado y la razón porque lo ha hecho esta vez.

Serial.begin(115200);
  delay(1000); //Take some time to open up the Serial Monitor

  //Increment boot number and print it every reboot
  ++bootCount;
  Serial.println("Boot number: " + String(bootCount));

  //Print the wakeup reason for ESP32
  print_wakeup_reason();

Y una vez hecho todo lo que necesitamos, tenemos que indicarle el método para despertarse, en este caso temporizador y el intervalo que queremos usar, y mandarlo a dormir de nuevo.

Contenido solo disponible para suscriptores. ¡Accede al contenido!

     

Bueno, pues ya podéis subirlo y abrir el monitor serie para comprobar cómo funciona., fijándoos en que la velocidad esté a 115.200 baudios. Como veis, nosotros llevamos un rato con él programa corriendo y lleva ya 434 despertares.

Deep Sleep

 

LikeUsOnFacebook_Icon

No Comments

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login