NodeMCU / ESP8266 - Light Sleep Wakeup a través de SIM808 RI (Interrupción de caída)

1

Tengo una NodeMCU v1.0 y una placa de circuito SIM808. Para ahorrar energía, coloco el NodeMCU en Lightsleep a través de:

wifi_fpm_set_sleep_type(LIGHT_SLEEP_T); // set sleep type, the above posters wifi_set_sleep_type() didnt seem to work for me although it did let me compile and upload with no errors 

gpio_pin_wakeup_enable(CONFIG_GSM_RING_PIN, GPIO_PIN_INTR_LOLEVEL); // GPIO_ID_PIN(2) corresponds to GPIO2 on ESP8266-01 , GPIO_PIN_INTR_LOLEVEL for a logic low, can also do other interrupts, see gpio.h above

wifi_fpm_open(); // Enables force sleep
wifi_fpm_do_sleep(0xFFFFFFF); // Sleep for longest possible time

Con ese código, NodeMCU se reactiva cuando el RI pasa de ALTO a BAJO a ALTO otra vez, lo que estaría bien para SMS, pero para las llamadas significa que el Nodo se activa cuando la llamada ya se fue. Así que la idea era usar GPIO_PIN_INTR_ANYEDGE / GPIO_PIN_INTR_NEGEDGE como condición de interrupción. Pero los Nodos parecen no apoyar eso.

¿Alguna idea de cómo resolver eso?

    
pregunta Schr0nk

1 respuesta

1

Invierta la señal RI del SIM808 para que tenga un flanco ascendente en el pin del ESP8266 cuando RI baja. Puedes usar un par de resistencias y un NMOSFET.

simular este circuito : esquema creado usando CircuitLab

Cuando RI está alto, el pin WAKEUP estará en el suelo, si RI se pone alto, WAKEUP se levantará a VCC a través de R2. Aquí hay un simulación , puede hacer clic en la izquierda" L / H "para cambiar el nivel de entrada.

    
respondido por el Bence Kaulics

Lea otras preguntas en las etiquetas