Slacky
Member
Что хочу - при определенных обстоятельствах загнать esp8266 в режим какого-нибудь сна, но при этом чтобы она просыпалась по прерываниям.
Пока нашел вот такой код в обсуждениях на хитхабе.
Код реально работает, засыпает (потому что loop() перестает крутиться, измерить ток пока не представляется возможным). И просыпается, правда я там HILEVEL поправил на LOLEVEL (у меня по низкому уровню) - все работает.
Можно ли как-то это дело обыграть по прерываниям?
У меня сходу не получилось ...
Пока нашел вот такой код в обсуждениях на хитхабе.
Код:
#include <ESP8266WiFi.h>
extern "C" {
#include "gpio.h"
}
extern "C" {
#include "user_interface.h"
}
const char* ssid = "myNetwork";
const char* password = "myPassword";
WiFiClient client;
void setup() {
Serial.begin(115200);
Serial.print("initializing GPIOs");
gpio_init();
pinMode(0, INPUT); // this pin is connected to the PIR sensor.
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
delay(1000);
}
void loop() {
Serial.println("Ready to go into light sleep...");
delay(1000);
Serial.println("3...");
delay(1000);
Serial.println("2...");
delay(1000);
Serial.println("1...");
sleepNow();
}
void sleepNow() {
Serial.println("going to light sleep...");
wifi_station_disconnect();
wifi_set_opmode(NULL_MODE);
wifi_fpm_set_sleep_type(LIGHT_SLEEP_T); //light sleep mode
gpio_pin_wakeup_enable(GPIO_ID_PIN(0), GPIO_PIN_INTR_HILEVEL); //set the interrupt to look for HIGH pulses on Pin 0 (the PIR).
wifi_fpm_open();
delay(100);
wifi_fpm_set_wakeup_cb(wakeupFromMotion); //wakeup callback
wifi_fpm_do_sleep(0xFFFFFFF);
delay(100);
}
void wakeupFromMotion(void) {
wifi_fpm_close;
wifi_set_opmode(STATION_MODE);
wifi_station_connect();
Serial.println("Woke up from sleep");
}
Можно ли как-то это дело обыграть по прерываниям?
У меня сходу не получилось ...