Wetterstation Außeneinheit

Stand: 21.09.2020


Das ist die Außeneinheit meiner Wetterstation. Auf Basis eines ESP32.

Sensoren:

DS18b20 – Temperatur
BME280 – Temperatur, Luftdruck, Luftfeuchte
SHT31 –   Temperatur, Luftfeuchte
BMP180 – Temperatur, Luftdruck
GY21/SI7021 – Temperatur, Luftfeuchte

Leider liegen die Werte der Sensoren teilweise weit auseinander:

Temperatur:

 DS18b20: 24.69 °C
BME280 : 17.21 °C
SHT31 : 24.97 °C
BMP180 : 25.40 °C
GY21 : 24.77 °C

Luftdruck (Höhe angepasst)

Luftdruck BME280 : 1017.02 hPa
Luftdruck BMP180  : 1016.05 hPa

Luftfeuchte:

SHT31 : 38.84 %
BME280: 53.12 %
SI7021: 39.46 %

Werte laut naher DWD Wetterstation:

Temperatur: 25 °C
Luftdruck: 1014 hPa
Luftfeuchte: 32 %

Berechnete Werte (Mittelwerte siehe script):

Temperatur adj. : 24.50 °C
Luftdruck adj. : 1016.52 hPa
Luftfeuchte adj. : 40.19 %

Bilder von der Sensor Einheit mit Lochblechgehäuse, der CPU Einheit sowie der Sensorplatine. Die Platine ist mit PU Lack beschichtet.

outdoor sensor unit
esp outdoor unit 01
outdoor sensor unit platine
outdoor sensor unit platine bottom

Hier der Schaltplan sowie eine Steckplatinen Ansicht (Fritzing)

Schaltplan outdoor unit
Steckplatine outdoor unit

Die Programmierung enthält einen Webserver, der die Daten der einzelnen Sensoren sowie die berechneten Mittelwerte anzeigt. Mit einer zweiten URL /get werden die berechneten Daten in einem String abgerufen.

Nach aufruf von 192.168.1.23 wird diese Seite angezeigt:

esp outdoor unit web

mit 192.168.1.23/get werden diese Daten ausgegeben:

DATA:28.10;1017.03;35.10;24.75;:DATA

Temperatur in °C: 28.10
Luftdruck in hpA: 1017.03
Luftfeuchte in %: 35.10
Gehäusetemperatur in °C: 24.75

Das Programm wurde mit der Arduino IDE erstellt.

Programmdetails:

laden von Bibliotheken für den Webserver und TCP bzw. OTA

#include <Arduino.h>

// --- Webserver ---------------
#ifdef ESP32
#include <WiFi.h>
#include <AsyncTCP.h>
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#endif
#include <ESPAsyncWebServer.h>
#include "time.h"

//--- OTA --------------
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <credentials.h>

Hier die Zugangsdaten zum WiFi eintragen:
const char* ssid = mySSID;
const char* password = myPASSWORD;

Eingeben der IP, Netmask , Gateway, NTP Server und DNS Server
Schreibweise beachten !

// Set your Static IP address
IPAddress local_IP(192, 168, 1, 23);

OneWire Bus ist auf GPIO15
// DS18B20 Data wire is plugged into port 15 on the ESP32 #define ONE_WIRE_BUS 15
die Adressen der DS18b20 Sensoren:
// ds18b20 Adress
Thermostat settings für den Gehäuselüfter (future use)
// Thermostat settings
// Default Threshold Temperature Value
String inputTemp = "29.0";
Die Werte werden per Ajaxscript alle 5 Sekunden neu geladen.

Sollte beim Connect zum WiFi keine Verbindung erfolgen, wird ein
WiFi Reset durchgeführt und ein weiterer Versuch unternommen.
Ausserdem wird alle 30sek. die Verbindung geprüft und gegebenenfalls
neu gestartet.

Fortsetzung folgt…..

Wetterstation

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.