-->
Page 1 of 1

DeepSleep, but still 80mA

PostPosted: Tue Nov 01, 2016 3:51 pm
by JerryESPN
Hey there!

My Setup:

ESP-12 E, DHT-22, LD1117V33, 3,7V Li-Po 3000mAh

Sketch:

Code: Select all#include <DHT.h>
#include <ESP8266WiFi.h>

// replace with your channel’s thingspeak API key,
String apiKey = "******************************";
const char* ssid = "**********";
const char* password = "*********************";

const char* server = "api.thingspeak.com";
#define DHTPIN 12 // what pin we’re connected to

DHT dht(DHTPIN, DHT22, 15);
WiFiClient client;

void setup() {

  Serial.begin(115200);
  delay(10);
  dht.begin();

  WiFi.mode(WIFI_STA); // added 300716
  WiFi.begin(ssid, password);

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

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  if (client.connect(server, 80)) { // "184.106.153.149" or api.thingspeak.com
    String postStr = apiKey;
    postStr += "&field3=";
    postStr += String(t);
    postStr += "&field4=";
    postStr += String(h);
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);

    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.print(" degrees Celcius Humidity: ");
    Serial.print(h);
    Serial.println("% send to Thingspeak");
  }
  client.stop();

  Serial.println("Waiting…");

  delay(500);

  WiFi.disconnect();

  // thingspeak needs minimum 15 sec delay between updates

  //wifi_set_sleep_type(LIGHT_SLEEP_T);

  //delay(900000);

  Serial.println("ESP8266 in sleep mode");

  delay(500);
 
  ESP.deepSleep(60 * 15 * 1000000); // 15 Minuten

  delay(1000);

}

void loop() {


}


Problem: Still consumes constantly 80mA and i have NO idea why.

Any help? Thanks!

Jerry

PS: If anyone wonders...this is a kind of "follow up" of this thread. Still trying to supply my ESP/DHT for weeks/month with battery.

Re: DeepSleep, but still 80mA

PostPosted: Tue Nov 01, 2016 5:54 pm
by AcmeUK

Re: DeepSleep, but still 80mA

PostPosted: Wed Nov 02, 2016 3:47 pm
by JerryESPN
Thanks for the link, definitely looks interesting. However, at the moment i need more support with my "construction": Did I implement the DeepSleep in the sketch correctly? What could cause such a high quiescent current? The LD sucks about 10 mA, the DHT draws almost nothing, so approximately 70ma permanently for the ESP. And that should never be the case while in DeepSleep!

Any help is welcome.

Re: DeepSleep, but still 80mA

PostPosted: Thu Nov 03, 2016 7:55 am
by mrburnette
I do not use deep sleep, but I often do just use a NodeMCU as an Arduino to quickly work out some code; so I know the NodeMCU drops to around 40mA when the RF section is turned off. So that code does function properly.
https://www.hackster.io/rayburne/esp8266-turn-off-wifi-reduce-current-big-time-1df8ae

Test, using a NodeMCU board by Lolin:

I have a cheap USB meter that shows the current to 2 decimal places ... so, I cannot easily give an exact reading, but this goes from about 80mA "On" to about 10mA "sleep":
Code: Select allextern "C" {
#include "user_interface.h"
}

void setup() {
  rst_info *rsti;
  Serial.begin(115200);
  rsti = ESP.getResetInfoPtr();
  Serial.println("\r\nStart...");
  Serial.println(String("ResetInfo.reason = ") + rsti->reason);
}

// the loop function runs over and over again forever
void loop() {
  Serial.println("going to sleep now...");
  system_deep_sleep_set_option(0);
  system_deep_sleep(10000000);            // deep sleep for 10 seconds
  delay(1000);
}



Console:
Start...
ResetInfo.reason = 5
going to sleep now...



Ray