Liebe Community,
ich habe schon die Suche genutzt aber irgendwie komme ich nicht weiter.
Ich nutze ein ESP8266 NodeMCU von LoLin in Verbindung mit einem BME280 Sensor.
Die Daten werden alle 15 Minuten vom BME geholt und dann nachdem eine WLAN Verbindung aufgebaut wurde via HTTP Request an ein PHP Script gesendet und weggespeichert. Das funktioniert soweit ganz prima.
Um Strom zu sparen, war der Plan den ESP in den DeepSleep Modus zu versetzen. Ich war auch der Meinung das funktioniert, denn er wacht ja schließlich alle 15 Min auf und versendet die Daten.
Komischerweise ist aber nach 3-4 Tagen ein 9V Block leer. Ich habe das oben beschriebene System 6 mal gebaut und bei allen das gleiche. Ich vermute ich habe im Programmcode irgendeinen Fehler.
RST ist mit D0 verbunden.
Der Strom aus dem 9V Block liegt an VIN und G an, wird auf der anderen Seite von 3V und G an den BME280 weitergegeben. Dieser ist dann noch über D1 und D2 verbunden.
Soviel zum Grundsetting.
Ich habe mal gemessen, am 3V Pin liegt permanent auch die Spannung an. Sollte das im DeepSleep auch so sein?
Ich poste mal den Code aus der Arduino IDE. Es wäre Klasse wenn vielleicht jemand von euch den Fehler finden würde. Wie gesagt, mit der Suche komme ich nicht weiter, da der Code ja generell funktioniert und es zu keinem Fehler kommt. Ich habe lediglich die Vermutung das DeepSleep nicht klappt, sonst wäre ja die Batterie nicht so schnell leer. ODER?
// Librarys laden
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <Adafruit_BME280.h>
#include <Adafruit_Sensor.h>Adafruit_BME280 bme; // I2C
// WLAN Konfiguration
const char* ssid = “wlan_ssid”;
const char* password = “wlan_passwd”;// Host für Datensammler
const char* host = “domain.tld”;
const char* client_desc = “1”;String header;
void setup() {
Serial.begin(115200);
delay(10);// Ins WiFi Netzwerk verbinden
Serial.println();
Serial.println();
Serial.print("Verbinden zu Netzerk: ");
Serial.println(ssid);WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}Serial.println("");
Serial.println(“WiFi Verbunden”);
Serial.println("IP Adresse: ");
Serial.println(WiFi.localIP());// Einstellungen für Sensor
//status = bme.begin();
if (!bme.begin(0x76)) {
Serial.println(“BME280 nicht gefunden, check wiring!”);
while (1);
}
}//int value = 0;
void loop() {
delay(5000);
// ++value;Serial.print("Verbinden zu: ");
Serial.println(host);// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) { //works!
Serial.println(“Verbindung fehlgeschlagen”);
return;
}// Url für Datensammler zusammenstellen
String url = “/wetterstation/reqData.php”;
url += “?temp=”;
url += bme.readTemperature();
url += “&druck=”;
url += bme.readPressure() / 100.0F;
url += “&hoehe=”;
url += bme.readAltitude(SEALEVELPRESSURE_HPA);
url += “&feuchte=”;
url += bme.readHumidity();
url += “&client_id=”;
url += client_desc;
delay(500);Serial.print("Request URL: ");
Serial.println(url);// Request zum Server senden
client.print(String("GET “) + url + " HTTP/1.1\r\n” +
"Host: " + host + “\r\n” +
“Connection: close\r\n\r\n”);Serial.println();
Serial.println(“Verbindung schließen”);Serial.begin(115200);
Serial.setTimeout(2000);// Serial Initialisieren für Deep Sleep Modus
while(!Serial) { }Serial.println(“Für 15 Minuten in Deep Sleep Modus”);
ESP.deepSleep(900000000); // 15 Min