bclose

Despertar mediante Timer o Temporizador

despertando nuestro esp32

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

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

(3) Comments

  • Avatar for Ivan Uriarte
    • Charly

    Huy, no habia entendido tu problema, disculpame.

    EN efecto el asunto esta incompleto porque deberia decir que vayas al menu de
    \\Archivo\ejemplos\ESP32\Deep Sleep\TimerWakeUp

  • Avatar for Ivan Uriarte
    • Ofabbro

    Hola, soy nuevo en la plataforma y tengo algunas dificultades en la navegación para encontrar algunas referencias, por ejemplo

    «Lo podéis encontrar en Archivo → ESP32 → Deep Sleep → TimerWakeUp.»

    Me podrán ayudar ?

    Gracias

  • Avatar for Ivan Uriarte
    • José Fernando Picó Antolí

    La variable bootCount, entiendo que es especial del RTC y por eso mantiene su valor ( EL RTC sigue despierto )

    RTC_DATA_ATTR int bootCount = 0;

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