• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Esp8266+Sensors+Batery

Eugenius

New member
Привет коллеги,
У меня NodeMCU V2 ESP8266 используется для опроса датчиков HTU21, BH1750, BMP085 раз в час и отправки данных GET запросом ко мне в базу данных в интернете.
Сейчас пытаюсь запитать модуль от 4-рех батареек ААА и столкнулся с тем что модуль не засыпает полностью, а продолжает давать питание на датчики.

Для глубокого сна использую команду ESP.deepSleep(3600000000, WAKE_RF_DEFAULT);
Пожалуйста, поделитесь опытом.
Спасибо.

На всякий случай покажу вам весь код скетча:

Код:
#include <ESP8266WiFi.h>
#include <Wire.h>
#include "SparkFunHTU21D.h"
#include <BH1750.h> // Sensor Library
#include <Adafruit_BMP085.h>


// прописываем параметры нашего WiFi
const char* ssid     = "109";
const char* password = "***";

// прописываем домен на который шлем данные
const char* host = "***";

// указываем ID нашего устройства
const char* sensorid   = "2";

// Создаем экземпляр объекта
HTU21D myHumidity;          // HTU21

BH1750 lightMeter;          // lightMeter BH1750, Wide range and High resolution. ( 1 - 65535 lx )

Adafruit_BMP085 bmp;

void setup()
{
    Serial.begin(115200);
  delay(10);

  // We start by connecting to a WiFi network

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  // подключаемся к сети WiFi
  WiFi.begin(ssid, password);

  // если подключение не произошло - пробуем через 0,5 секунд
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected"); 
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

    // you're connected now, so print out the status:
  printWifiStatus();

  myHumidity.begin();
  lightMeter.begin();
  bmp.begin();
 

}

void loop()
{
  Serial.print("connecting to ");
  Serial.println(host);

  // Создаем интернет соединение с нашим сервером
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;

  // Если соединения не происходит, начинаем заново
  if (!client.connect(host, httpPort))
  {
    Serial.println("connection failed");
    return;
  }

  // Опрашиваем датчик
  float humd = myHumidity.readHumidity();
  float temp = myHumidity.readTemperature();
  int lux = lightMeter.readLightLevel();
  float temp2 = bmp.readTemperature();
  float pressure = bmp.readPressure();

 
  // Создаем URI нашего запроса на сервере
  String url = "/sensordatas/adddata";

  url += "?sensorid=";
  url += sensorid;
  url += "&temp=";
  url += temp;
  url += "&hum=";
  url += humd;
  url += "&temp2=";
  url += temp2;
  url += "&pressure=";
  url += pressure;
  url += "&lux=";
  url += lux;

 
  Serial.print("Requesting URL: ");
  Serial.println(url);
 
  // Отправляем этот GET запрос на сервер
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");

  // Фиксируем количество миллисекунд, прошедших с момента старта программы
  unsigned long timeout = millis();
  // Ждем пока количество байт, принятых клиентом от удаленного сервера, с которым установлено соединение не станет равным 0
  while (client.available() == 0)
  {
    // если ожидание длится дольше 5 секунд - начинаем сначала
    if (millis() - timeout > 5000)
    {
      Serial.println(">>> Client Timeout !");
      client.stop();
      return;
    }
  }

  // Считываем все строки полученные в ответе с сервера и выводим их в Serial
  while(client.available())
  {
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
 
  Serial.println();
  Serial.println("closing connection");

  // подключаемся к сети WiFi
  WiFi.disconnect();
 
  ESP.deepSleep(3600000000);
}

void printWifiStatus()
{
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}
 
Сверху Снизу