Gast
#4524449
Hallo und frohe Ostern,
über die Osterfeiertage habe ich mal versucht meinen Temperatur und
Luftfeuchtesensor zu überarbeiten.
Es werden alle paar Minuten die Daten eines DHT22 gemessen und mit einem
ESP8266 ins Web geschickt.
Zusätzlich messe ich die Versorgungsspannung über einen integrierten
ADWandler.
Das Programm läuft an sich schon seit längerem stabil. Das Programm
läuft auf dem ESP den ich mit Arduino programiere. Nur jetzt wo ich ein
"deep sleep" integrieren wollte läuft der Code nicht mehr.
D.h. lege ich an die Schaltung eine Versorgungsspannung an, sendet der
Sensor genau ein mal Daten ins Web, nach dem ersten deep sleep wird nur
noch die Versorgungsspannung ins Web übertragen.
Änderungen zu dem lauffähigen code: delay(); durch ESP.deepSleep
ersetzt...
Code:
#include "DHT.h" //Library für den DHT
#include <ESP8266WiFi.h> //Library für den ESP8266
#define DHTPIN 2 // Digitaleingang 2 wird für den DHT22 Sensor
verwendet
#define DHTTYPE DHT22 // Definieren, welcher Sensor verwendet wird:
DHT 22
DHT dht(DHTPIN, DHTTYPE);
ADC_MODE(ADC_VCC); // Umschalten des ADC auf interne Messung der
Versorgungsspannung
void updateThingspeak(String field1, String field2, String field3){
// Daten versenden
}
void setup() {
delay(1000);
dht.begin();
WiFi.begin(wlanName, wlanPasswort);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
delay(1000);
float h = dht.readHumidity();;
float t = dht.readTemperature();
float vcc = ESP.getVcc();
if (isnan(t) || isnan(h))
{
Serial.println("Failed to read from DHT");
}
updateThingspeak(String(t), String(h), String(vcc)); //Aufrufen der
Funktion Am Thingspeak-Server Anmelden und Daten Senden Strings
übergeben!
delay(100);
ESP.deepSleep(60000000,WAKE_RF_DEFAULT); // 1s 60 5 = 5 Min. (Deep
sleep ist in mikrosekunden)
delay(100); // wird benötigt damit nicht die Befehle weiter laufen bis
der Controller in den deep sleep geht
}
void loop() {
}