Собрал по "кирпичику" такой код. Работает от аккумулятора, ESP01s, передаёт температуру на Blynk, при понижении напряжения ниже 3 вольт уходит в сон. Потребление в рабочем состоянии 70мА (5-7сек), в спящем режиме 20мкА . Всё рабочее. Но при отключении wifi в сон не уходит и постоянно потребляет 70 мА, что не давно привело к полному разряду аккумулятора. Помогите пожалуйста отправлять ESP в сон при отключении wifi.
C++:
#include <DallasTemperature.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define BLYNK_PRINT Serial
#define ONE_WIRE_BUS 0 //GPIO куда подключен сенсор
#define PIN_POWER_DS 2 //GPIO питания датчика температуры
float temp = NAN; //температура
char auth[] = "***";
char ssid[] = "***";
char pass[] = "***";
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int Vout = 2; // Пин питания датчика
ADC_MODE (ADC_VCC);
float Vbat,V_min = 3.00;// напряжение батарейки и минимальный порог напряжения для разрешения работы
void setup()
{
int tryingToConnect = 3; // количество попыток соединиться с blynk сервером если не удается соединиться
Serial.begin(115200);
Vbat = ESP.getVcc();// читаем напряжение на ноге VCC модуля ESP8266
Vbat = Vbat / 1023;
if (Vbat < V_min ) Serial.println("Низкий заряд батареи, засыпаю на 30 минут ( для теста"),
ESP.deepSleep(3600*1000000);
pinMode (PIN_POWER_DS, OUTPUT);
digitalWrite(PIN_POWER_DS, HIGH);
sensors.requestTemperatures();
delay(1000);
temp = sensors.getTempCByIndex(0);
Blynk.config(auth); //Настройка Blynk
Blynk.connectWiFi(ssid, pass);//Подключаемся к WiFi сети
while(!Blynk.connect() && tryingToConnect != 0) // пока есть попытки подключаемся к серверу
{
tryingToConnect--;
}
delay(1000);
}
void loop()
{
digitalWrite(Vout, LOW);
ESP.deepSleep(60000000 * 15); //глубокий сон 15 минуты для теста
}
BLYNK_CONNECTED()
{
Blynk.virtualWrite(V2, temp); // виртуальный порт
}