WLAN Temperatur und Feuchtesensor

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gast

    #1

    WLAN Temperatur und Feuchtesensor

    Hallo,

    Ich habe mir eine kleine Platine geroutet die es erlaubt einen DHT22 mit einem ESP8266-01 zu verbinden, die Stromversorgung geht mit 24V.

    Die Platine mist nur 30mmx16mm und läst sich so gut in jeder Geräteschalterdose platzieren.

    Ich sende meine Daten per UDP über WiFi direkt an meinen Miniserver.

    Skript mit Ausfallüberwachung ( WatchDog ) ist auch schon vorhanden. Falls einer Interresse an dem Projekt oder Platine hat, kann er sich gerne bei mir melden.

    Als Stromversorgung kann man entweder diesen DC/DC Converter benutzen oder einen LM7805 und einen LM7803 mit passenden Kondensatoren.







    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Schema.PNG
Ansichten: 1187
Größe: 14,6 KB
ID: 74361Klicke auf die Grafik für eine vergrößerte Ansicht

Name: board.PNG
Ansichten: 1089
Größe: 28,3 KB
ID: 74362
    Angehängte Dateien
  • Frank71
    Extension Master
    • 25.08.2015
    • 110

    #2
    Hallo Bender,

    Super Projekt ... bekommst du noch einen Luftgütesensor und Temperatur mit drauf ?

    Dann wäre es die eierlegende Wollmilchsau und genau das was mir fehlt ....

    Aber auch so hätte ich Interesse an den Platinen.

    Gruß Frank




    Gesendet von iPhone mit Tapatalk Pro

    Kommentar

    • Gast

      #3
      Temperatur und Feuchte hat er ja schon durch den DHT22.

      Luftgütesensor, hab ich mich vor ein paar Monaten amüsiert aber nichts richtiges gefunden, was keine Kalibrierung benötigt.
      Ich warte immer noch das der Bosch BME680 (Feuchte-, Temperatur- und VOCsensor) auf einem ordentlichen BreakOutboard produizert wird, aber irgendwie kommt da keiner dran.

      https://www.bosch-sensortec.com/bst/...roducts/bme680
      Zuletzt geändert von Gast; 30.12.2016, 20:27.

      Kommentar

    • Eraser-FX-
      Extension Master
      • 13.03.2016
      • 118

      #4
      Dieses Projekt hört sich interessant an. Wäre Interessiert.

      Kommentar

      • Da_Mani
        Extension Master
        • 10.10.2015
        • 121

        #5
        Daran hätte ich auch Interesse. Hast du schon Tests durch geführt oder bist du noch in der Planung?

        Kommentar

        • Gast

          #6
          Zitat von Bender352
          ...Falls einer Interresse an dem Projekt oder Platine hat, kann er sich gerne bei mir melden....
          *melden* ;-)
          Kannst/möchtest Du Deine Sketch hier einstellen?

          Zur Info und weil es wohl auch passt: einige Ecken weiter wird gerade über Werte-Abweichungen bei DHT22 in Verbindung mit ESP8266 nachgedacht.
          Unabhängig von der Richtung, in der das dort wohl gerade geht, es gibt im www (einer ist auch dort verlinkt) wohl auch schon mehrere Hinweise auf Meßwertverfälschungen bei zu geringer Nähe von ESP und DHT. Ich denke, man sollte das zumindest 'mal ''(an)-gehört'' haben...

          Kommentar


          • Robert L.
            Robert L. kommentierte
            Kommentar bearbeiten
            hab den anderen Thread nicht gelesen, aber allein das ESP dingens in der UP Dose, wird wohl ziemlich heizen..
            das kann nicht funktionieren..

          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            Also ich bin schon davon ausgegangen, das man einen DHT zur Temp./Feuchte-Messung nicht mit in diese UP-Dose setzt, Du nicht? :-)
        • ToB204
          Smart Home'r
          • 26.08.2015
          • 54

          #7
          Ich bin auch mit dabei. Hab nämlich in den Kinderzimmern die Temperaturfühler vergessen. Ich Sachen löten, bin ich aber noch Blutiger Anfänger.

          Kommentar

          • Patrick_92
            Extension Master
            • 17.09.2015
            • 125

            #8
            Finde ich auch sehr interessant, einen DHT hätte ich noch rum liegen

            Kommentar

            • Gast

              #9
              Ich habe noch einige Anpassungen am Sketch gemacht.
              Der DHT hat sich immer nach 24-36h aufgehängt und ich habe eine überwachungsroutingen eingebaut damit des ESP einfach neustartet falls sich die Werte des DHT in einem bestimmten Zeitraum nicht ändern, läuft jetzt seit ca. 24h problem los.

              Das mit der Hitzestauung habe ich mir auch schon gedacht. Ich baue dazu mal ein UP Dose mit Adeckplatte zusammen und setze einen DS1820 aussen daneben um die Differenz zu messen.

              Kommentar

              • Gast

                #10
                Hier ist mein Sketch. Ich habe den DIO1 (TX-Pin) so programiert das er blinken soll um optisch zu erkennen das der ESP noch sendet.
                Fals einer eine serielle Textausgabe braucht, müssen alle Zeilen wo LEDBUITIN vorkommt auskommentiert werden.

                In den letzten Zeilen müsst ihr die IP-Addresse und Portnummer von eurem Miniserver eintragen
                Udp.beginPacket("MINISERVER IP ADDRESS", PORTNUMMER);

                Der Code wurde von mir noch nicht gesäubert, gibt also noch viele Zeile die nicht mehr benötigt werden.

                Code:
                #include <ESP8266WiFi.h>
                #include <WiFiUdp.h>
                #include <DHT.h>
                #include <Ticker.h>
                
                #define DHTPIN 2     // what digital pin we're connected to
                #define DHTTYPE DHT22
                
                DHT dht(DHTPIN, DHTTYPE);
                
                WiFiUDP Udp;
                
                Ticker secondTick;
                
                const char* ssid = "SSID";
                const char* password = "PASSWORD";
                const String hostname = "ESP-BAD"; //hostname for DNS Table
                const int dht_respond_time = 300000;
                const long max_millis = 2592000000; // 30 days in milliseconds
                
                long timestamp_t = 0;
                long timestamp_h = 0;
                float old_t = 0;
                float old_h = 0;
                float h = 0;
                float t = 0;
                
                int msgLength = 1;
                
                int watchdogCount = 0;
                
                //watchdog after 30sec of inactivity softreset will be executet, watchdog bites!
                void ISRwatchdog() {
                  watchdogCount++;
                  if (watchdogCount == 30) {
                    //    Serial.println("Watchdog BITS");
                    ESP.reset();
                  }
                }
                
                void setup()
                {
                  /*
                    Serial.begin(115200);
                    Serial.println();
                    Serial.printf("Connecting to %s ", ssid);
                  */
                
                  pinMode(LED_BUILTIN, OUTPUT); //when using serial mode you have comment this line out
                
                  secondTick.attach(1, ISRwatchdog);
                  WiFi.mode(WIFI_STA);//set ESP8266 to station mode
                  WiFi.hostname(hostname);
                  WiFi.begin(ssid, password);
                  while (WiFi.status() != WL_CONNECTED)
                  {
                    delay(500);
                    // Serial.print(".");
                    watchdogCount = 0;
                    yield();//runs the background functions;
                  }
                  // Serial.println(" connected");
                  dht.begin();
                }
                
                void loop()
                {
                
                  delay(random(2000, 3000));
                
                  h = dht.readHumidity();
                  //Read temperature as Celsius (the default)
                  t = dht.readTemperature();
                  //Read temperature as Fahrenheit (isFahrenheit = true)
                  //float f = dht.readTemperature(true);
                
                
                  // Check if any reads failed and exit early (to try again).
                  if (isnan(h) || isnan(t) ) {
                    //   Serial.println("Failed to read from DHT sensor!");
                    return;
                  }
                
                  // Compute heat index in Celsius (isFahreheit = false)
                  float hic = dht.computeHeatIndex(t, h, false);
                  // Compute heat index in Celsius (isFahreheit = false)
                  //float hif = dht.computeHeatIndex(f, h);
                
                
                  //checks if DHT is still alive
                  if (old_t == t) {
                    //   Serial.println("Same value for tempreatur in a row.");
                    if (millis() - timestamp_t >= dht_respond_time ) {
                      //    Serial.println("DHT22 t is dead");
                      ESP.reset();
                    }
                  } else {
                    old_t = t;
                    timestamp_t = millis();
                  }
                
                  if (old_h == h) {
                    //  Serial.println("Same value for humidity in a row.");
                    if (millis() - timestamp_h >= dht_respond_time ) {
                      //    Serial.println("DHT22 h is dead");
                      ESP.reset();
                    }
                  } else {
                    old_h = h;
                    timestamp_h = millis();
                  }
                
                  //prevents a out of range error from millis()
                  if (millis() > max_millis ) {
                    ESP.reset();
                  }
                
                
                  int msgLength = 1;
                  String msg = "temp=";
                  msg += t;
                  msg += " humidity=";
                  msg += h;
                  msgLength = msg.length();
                
                  char  replyPacekt[msgLength] ;
                  msg.toCharArray(replyPacekt, msgLength);
                
                  /*
                    Serial.print("Humidity: ");
                    Serial.print(h);
                    Serial.print(" %\t");
                    Serial.print("Temperature: ");
                    Serial.print(t);
                    Serial.print(" *C ");
                    //Serial.print(f);
                    // Serial.print(" *F\t");
                    Serial.print("Heat index: ");
                    Serial.print(hic);
                    Serial.print(" *C ");
                    //Serial.print(hif);
                    // Serial.println(" *F");
                  */
                  delay(random(5000, 7000));
                  while (WiFi.status() != WL_CONNECTED)
                  {
                    delay(500);
                    //    Serial.print(".");
                    yield();
                  }
                  // Serial.println(" connected");
                 // Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
                  Udp.beginPacket("MINISERVER IP ADDRESS", PORTNUMMER);
                  Udp.write(replyPacekt);
                  Udp.endPacket();
                
                  //  Serial.println("SEND");
                
                  watchdogCount = 0;
                
                // when the blue LED blinks everything is ok :)
                  if (LED_BUILTIN == HIGH) {
                    digitalWrite(LED_BUILTIN, LOW);
                  } else {
                    digitalWrite(LED_BUILTIN, HIGH);
                  }
                }
                Zuletzt geändert von Gast; 02.01.2017, 14:33.

                Kommentar

                • Patrick_92
                  Extension Master
                  • 17.09.2015
                  • 125

                  #11
                  wie funktioniert denn das dann genau?
                  Du hast eine Platine erstellt.
                  Aber wo soll der Programmcode hin?
                  Könntest du das mal bisschen beschreiben?

                  Grüße
                  Patrick

                  Kommentar

                  • Gast

                    #12
                    Die ganze Logik wird auf dem ESP8266 (Wifi Modul mit Mikrokontroller ) verarbeitet. Der kann mir der Arduino IDE programiert werden.



                    Test mit DHT und ESP in einer UP Dose läuft. Hab dann noch einen zweiten ESP mit DS1820 daneben liegen. also bekommt der DHT22 die Magnetfelder von zwei ESP ab.
                    Ich lassen das mal 24 laufen und sehe mir dann die Resultate an.

                    Kommentar


                    • Gast
                      Gast kommentierte
                      Kommentar bearbeiten
                      Ich habe jetzt nochmal die Werte verglichen. ESP8266+DHT22 in der Gerätedose messen 22,1°C, der DS1820 ausserhalbt der Gerätedose mist 22,0°C. Ich kann keine Einflüsse des ESP8266 auf den DHT22 feststellen.
                  • Eraser-FX-
                    Extension Master
                    • 13.03.2016
                    • 118

                    #13
                    Haste eine Statistik mit laufen ? Wird dort auch die Temp Konstant Angezeigt.

                    Kommentar

                    • Gast

                      #14
                      hab habe ich. Der ESP sendet alle 7-10 Sekunden ( Zeit habe ich variabel gehalten, wenn nachher mehrer ESP im WLAN senden, keine zur gleichen Zeit sendet). Die Statistik zeichnet jede Minute den Durchschnitt aller empfangen Werte auf.

                      Das Bild zeigt den die Aufzeichnung von ca. 24h Wobei jede Minute aufgezeichnet wurde

                      Kommentar


                      • Gast
                        Gast kommentierte
                        Kommentar bearbeiten
                        späte werde ich dann nur noch den Durchschnittwert von allen 10 Minuten benutzen. Bei einer Fußbodenheizung ist die Steuerung sowieso sehr träge und es spamt meine SD-Karte im MiniServer nicht mit Daten voll.
                    • Patrick_92
                      Extension Master
                      • 17.09.2015
                      • 125

                      #15
                      Wäre es eigentlich auch möglich, einen Fotowidersand mit anzuschließen?
                      Bin noch auf der Suche nach einem Helligkeitssensor, um meine Beschattung automatisiert zu schalten.

                      Mit dem Arduino hab ich das bereits hinbekommen, aber über deinen Weg wäre das natürlich alles schön klein

                      Kommentar


                      • BSiege
                        BSiege kommentierte
                        Kommentar bearbeiten
                        ESP-01 hat kein ADC. Ab ESP-12 ist einer drauf. ESP-01 würde ich für neue Projekte eher nicht mehr einsetzen. Der Preisunterschied ist zu klein, die Vorteile überwiegen (Pins, ADC, Speichergrösse) dafür etwas fummliger zum Löten. http://www.esp8266.com/wiki/doku.php...-module-family
                    Lädt...