Forum: Mikrocontroller und Digitale Elektronik Wetterstation mit Arduino und BME280


von Christoph E. (stoppi)



Lesenswert?

Hallo!

Als nächstes Projekt habe ich mir eine kleine Wetterstation angelacht. 
Als Sensor kommt der BME280 zum Einsatz, welcher Temperatur, 
Luftfeuchtigkeit und Luftdruck misst. Verarbeitet werden die Daten mit 
einem Arduino Mega, angezeigt mit einem 320x480 Pixel display.

Die neuen Werte werden alle 6 Minuten eingelesen und dann graphisch 
dargestellt, indem die gesamten Kurven um 1 Pixel nach links wandern. 
Auf diese Weise erfasse ich die Werte der letzten 1.5 Tage. Die Software 
ist soweit fertig und kommt auch mit dem millis-Überlauf nach rund 50 
Tagen zurecht. Wenn der Sensor eingetroffen ist, gehts hier weiter... ;)

von G. H. (schufti)


Angehängte Dateien:

Lesenswert?

Sehr schönes Projekt. Läuft hier schon seit Jahren auf esp8266 mit 
Touchscreen für Innen-/Aussenstation.

von Markus B. (dalotel)


Lesenswert?

Ich finde es immer furchtbar wenn man den Aufwand betreibt und dann 
einen nicht dafür gemachten, und deshalb viel zu ungenauen Temp/Hum 
Sensor benutzt. Für den Luftdruck sind die Dinger super, benutze ich 
dafür auch gerne.
Aber für den Rest käme ich nie auf die Idee das als Messwerte anzusehen.
Der eingebaute Temperaturschätzer ist nur zur Druckkorrektur gedacht.
Nimm etwas genaueres, damit macht das Gerät viel mehr Spaß.
Sensirion und TI sind gute Adressen.

von PTB (Gast)


Lesenswert?

Der BME280 ist doch gar nicht sooo schlecht:

Key parameters for humidity sensor

Accuracy tolerance: ±3 % relative humidity
Hysteresis: ±1% relative humidity

von G. H. (schufti)


Lesenswert?

ich weiss echt nicht, warum manche Leute nur zum Motzen hier 
vorbeischauen.
Genauer als die 10€ Baumarkt Fensterthermometer oder 30€ Wetterstationen 
sind die BME280 allemal und auch deutlich zuverlässiger als diverse 
DHTxx die sonst so propagiert werden; bei dem Preis konkurrenzlos.
Und vermutlich dient der "Temperaturschätzer" eher zur Korrektur der 
rel. Feuchte als dem Druck ...

von Markus B. (dalotel)


Lesenswert?

Sorry, das war kein Motzen, sondern nur ein gut gemeinter Tip.
Es gibt einige Beiträge wo Hilfestellung gesucht wird, weil der BME280 
um mehrere Grad daneben liegt. Meine übrigens auch.
Jeder kann den gerne dafür benutzen, ich habs eben gerne genauer.

von G. H. (schufti)


Lesenswert?

und wofür soll das bei einer Wetterstation gut sein, wo die meisten 
nicht einmal wissen, welche Temperatur sie messen? Wozu brauche ich die 
Temperatur einer Lufströmung auf 0,01° genau wenn ich nicht einmal weiß 
woher sie kommt?
Die wenigsten haben einen Standort / Aufbau wo sie auch nur annähernd 
eine als "Lufttemperatur" ausgewiesenen Messwert behaupten können.

von Christoph E. (stoppi)



Lesenswert?

Mir geht es wie bei den meisten meiner Projekte um die prinzipielle 
Umsetzung und weniger um ein Ultrapräzisions-Messgerät. Natürlich 
sollten die Werte schon einigermaßen stimmen, aber allzu hoch lege ich 
die Latte dann auch wieder nicht.

Habe die Software noch ein wenig angepasst, ist aber soweit fertig. 
Jetzt warte ich nur noch auf den Sensor.

Den BMP085 Luftdrucksensor und den DHT22 für die Luftfeuchtigkeit habe 
ich schon in einen meiner Arduino-Aufbauten in Verwendung. Da waren die 
erhaltenen Werte nachvollziehbar. Bezüglich BME280 lasse ich mich 
einfach überraschen...

: Bearbeitet durch User
von Frank D. (Firma: Spezialeinheit) (feuerstein7)


Lesenswert?

Mal ein paar Bemerkungen oder auch Fragen.
Ist die Skale für den Luftdruck fest oder ändert die sich passend zum 
gemessenden Wert?
Ich würde die Feuchte nicht mit LF bezeichnen, auch einmal 
ausgeschrieben "Celsius" und andererseits "mbar" finde ich etwas 
unschön.
Ansonsten gefällt es mir.
Achso, wie ist den der Stromverbrauch?

von Thomas (Gast)


Lesenswert?

Hier noch die Formel zur Berechnung der absoluten Luftfeuchte: 
https://www.wetterochs.de/wetter/feuchte.html

Bei mir ist ein BME280 mit ESP8266 und Micropython... gespeichert wird 
in Mysql, angezeigt in Grafana.

von Christoph E. (stoppi)


Lesenswert?

Die Skala adaptiere ich nicht. Dies aus dem Grund, dass ich mit einem 
Blick bereits abschätzen kann, ob der Messwert hoch, mittel oder niedrig 
ist. Zudem ist die Programmierung einfacher.
Ad Celsius: wie kann ich ° ausgeben?

von Wolfgang (Gast)


Lesenswert?

Fred F. schrieb:
> Ich würde die Feuchte nicht mit LF bezeichnen

Üblich wären r.H. oder r.F. für die relative Feuchte (relative Humidity 
bzw. relative Feuchte) oder für die absolute Feuchte g/m³.

von Timmo H. (masterfx)


Lesenswert?

Christoph E. schrieb:
> Ad Celsius: wie kann ich ° ausgeben?
Hängt davon ab welche Display Lib und Font du verwendest. Bei Adafruit 
GFX ist zumindest im Standardfont 0xF7 (Dez 247) das °-Symbol. Ansonsten 
musst du halt ein drawCircle machen
1
display.print(BME280.temperature);
2
display.println("\xF7"+ String(tempUnit == BME280::TempUnit_Celsius ? 'C' :'F'));

: Bearbeitet durch User
von Christoph E. (stoppi)



Lesenswert?

Hallo!

Ich habe das Grad-Celsius-Zeichen nun einfach mit einem Kreis gelöst...

Ein erster Testlauf über die letzten 1.5 Tage (von 17 Uhr 22.5.2019 bis 
9 Uhr 24.5.2019) ist nun erfolgt und die Wetterstation hat weitestgehend 
ihre Funktionsfähigkeit unter Beweis gestellt.

Eine Veränderung ist noch ausständig und zwar die Anpassung der 
Luftdruckskala. Da werde ich den Ausschnitt noch so weit wie möglich 
(kenne im Moment noch nicht die Spanne)anpassen. Im Moment geht ja die 
Skala von 940 bis 1000 mbar, was aber zu weit ist.

Wenn ich das Video fertiggestellt habe, verlinke ich es hier noch.

von Frank D. (Firma: Spezialeinheit) (feuerstein7)


Lesenswert?

Christoph E. schrieb:
> Im Moment geht ja die
> Skala von 940 bis 1000 mbar, was aber zu weit ist.

Im Gegenteil, ist zu wenig. Üblich sind Werte von 920...1080 oder auch 
750...1150. Hängt auch von der Höhe deines Wohnortes ab.

von G. H. (schufti)


Lesenswert?


von Timmo H. (masterfx)


Angehängte Dateien:

Lesenswert?

Fred F. schrieb:
> Hängt auch von der Höhe deines Wohnortes ab.
Darum rechnet man bei Wetterstationen eigentlich auch NN um
Bei mir decken sich die Werte mit der nächstgelegenen Wetterstation 
ziemlich gut.

: Bearbeitet durch User
von Christoph E. (stoppi)


Angehängte Dateien:

Lesenswert?

Ich habe nochmals die Luftdruckskala etwas angepasst. Jetzt muss ich nur 
noch im Langzeittest herausfinden, ob die Wertebereiche ausreichen...

von thomas_m (Gast)


Lesenswert?

Der Luftruck, auf Meereshöhe relativiert, bewegt sich so im Bereich von 
970 bis 1050hPa, wobei das schon schöne Extreme sind.
Davon meist zwischen 980 bis 1040hPa. Wir hatten vor paar Wochen an die 
1040hPa, was schon selten ist (Größenordnung 1 mal im Jahr)

thomas_m

von Wolfgang (Gast)


Lesenswert?

Fred F. schrieb:
> Im Gegenteil, ist zu wenig. Üblich sind Werte von 920...1080 oder auch
> 750...1150. Hängt auch von der Höhe deines Wohnortes ab.

Für viele Anwendungen interessiert nicht der örtliche Luftdruck, sondern 
der auf Meereshöhe korrigierte Wert. Nur so wird der Druck vergleichbar 
mit anderer Wettermeldungen bzw. -lagedaten

Christoph E. schrieb:
> Ich habe nochmals die Luftdruckskala etwas angepasst. Jetzt muss ich nur
> noch im Langzeittest herausfinden, ob die Wertebereiche ausreichen...

Da kannst du genauso gut alte Wetterdaten heranziehen.
In Deutschland liegen die beobachteten Extrema bei 1060,8 bzw. 954,4 
hPa.
Damit die Werte rein passen, müsstest du deine Skalierung um fast einen 
Faktor 5 ändern. Die Atmosphärengezeiten würden damit so gut wie 
unsichtbar.

von Christoph E. (stoppi)


Lesenswert?

Hallo!

Habe nun ein Video hochgeladen und die Wetterstation auf instructables 
zum Wettbewerb "sensors" eingereicht. Wenn jemand für mich stimmen 
kann/möchte, würde ich mich sehr darüber freuen...

https://www.instructables.com/id/Weather-station-With-Arduino-BME280-Display-for-Se/

https://www.youtube.com/watch?v=HDK-l8F22nA

: Bearbeitet durch User
von Bruno H. (bruno_h83)


Lesenswert?

Guten Tag,
ich habe die Wetterstation mit Arduino MEGA und BME280 sowie dem 3.2" 
TFT-LCD display (480x320) von Christoph E. aufgebaut und die WS 
funktioniert soweit ohne Probleme !
Zwei Fragen:
1. Die relative Feuchteskala geht nur bis 80 %RH … der Sensor kann aber 
ohne Probleme über 95 %RH messen … was in der Nacht ohne weiteres sein 
kann !
2. Nicht alle Wetterstationen sind auf Meereshöhe !
Meine WS ist auf 625 m ü. M. Der normale Jahresverlauf des 
Barometerdrucks an meinem Standort ist im Bereich zwischen 930 und 960 
hPa !
Ich habe ein Problem mit dem Anpassen der Feuchte- und der 
Barometerskala !
Frage an Christoph: Ist es möglich, die Arduino Programmzeilen 
anzugeben, wo man diese beiden Skalen ändern kann … und eventuell die 
gemessenen Werte entsprechend anpassen kann, sodass RH% und hPa korrekt 
und sauber angezeigt werden können !
Vielen Dank, bruno_83 zum voraus

von Christoph E. (stoppi)


Lesenswert?

Hallo Bruno!
Freut mich zu hören, dass du meine Wetterstation ausprobiert hast. Klick 
einmal auf den instructables link. Dort habe ich (auf englisch) erklärt, 
wie man einfach die Textzeilen für eine andere Skala anpassen muss. 
Falls es trotzdem Probleme gibt, kannst du dich ja hier nochmals melden 
;-)

von bruno_83 (Gast)


Lesenswert?

Hallo Christoph,
vielen Dank für Deinen "reply" zu meinen Fragen !
Ich habe die Wetterstation nach Deiner Anleitung bei "Instructables" 
erstellt. Hat auf Anhieb funktioniert ... ! Erlaube mir zuerst eine 
Bemerkung als Meteo- "Wetterstations- Professional" 
(MeteoSchweiz/SwissMetNet): Deine Arduino Wetterstation mit dem BME280 
Sensor für PTU ist eine ganz gute "Tiny- Wetterstation" für den 
täglichen Gebrauch mit "Outdoor- Messung" ! Die Messwerte sind gut genug 
... ebenso gut, wie die meisten "Hobby- Wetterstationen" im Markt ... 
und die Präsentation der Meteo- Daten mit dem TFT- Display gefällt mir 
ganz gut ... super ... !
Nun nochmals zu meinen Fragen: Das mit den Anpassungsgleichungen habe 
ich für den Barometerdrouk von Anfang an angewendet ... kein Problem! 
Aber meine Frage war die Anpassung der Skala für den Druck (930- 960 
mbar) anstelle von (955 - 985 mbar) und auch für die relative Feuchte ( 
100 %RH) ... wo kann ich im Deinem Arduino- Sketch diese Parameter 
anpassen ... das habe ich nicht "getscheckt" ... ! Vielen Dank für Deine 
Hilfe ... !

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Christoph E. schrieb:
> Wenn jemand für mich stimmen
> kann/möchte, würde ich mich sehr darüber freuen...

ist wohl ein scherz oder reichlich naive ..., das project und die sw 
code quality ist eher grundschule in der ersten woche!

ich sag nur magic numbers and redundancy ... du solltest eher weiter 
üben.


mt

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

bruno_83 schrieb:
> und auch für die relative Feuchte (
> 100 %RH) ... wo kann ich im Deinem Arduino- Sketch diese Parameter
> anpassen

... wenn du das schon nicht hinbekommst, dann wohl doch eher talentfrei 
und briefmarken sammeln passt vielleicht besser zum talent?!


mt

    myGLCD.printNumI(20,60,285);
    myGLCD.printNumI(30,60,240);
    myGLCD.printNumI(40,60,195);
    myGLCD.printNumI(50,60,150);
    myGLCD.printNumI(60,60,105);
    myGLCD.printNumI(70,60,60);
    myGLCD.printNumI(80,60,15);

: Bearbeitet durch User
von Timmo H. (masterfx)


Angehängte Dateien:

Lesenswert?

Hab mein MQTT Module auf Basis des BME280 + ESP8285 jetzt auch mal bei 
Elecrow fertigen lassen. Inkl. LiPo Charger, ~ 20µA Ruhestrom im 
Deepsleep. Wacht alle paar Minuten auf und sendet via MQTT die 
Sensordaten + Akkuspannung via MQTT an meinen InfluxDB + Grafana.
Habe 60 Platinen, also wer Interesse hat.
Auf der Rückseite ist noch ein µSD Slot. Habe ich aber noch nicht in 
betrieb genommen

: Bearbeitet durch User
von bruno_83 (Gast)


Lesenswert?

Hi Christoph,
ich hab's hingekriegt ... ich hätte das ganze Listing besser lesen 
sollen ! Aber 98 - 100 %RH ist bei dieser Wetterlage (Hitzetage) doch 
eher normal in der Nacht ... wenn beim Absinken der Temperatur in der 
Nacht der Taupunkt erreicht wird ... dann gibt's Tau auf den Wiesen ... 
ein Zeichen von 100 %RH ... oder nicht ! Die WS hat so gesehen richtig 
funktioniert ... nur die RH%- Skala war etwas daneben !
Deshalb meine Frage ... wie kann ich 20 - 100 %RH anzeigen ... der 
BME280- Sensor schafft das ! Aber eigentlich wollte ich ja vor allem mit 
dem 3.2" TFT-Display etwas üben ... !
Vielen Dank für die Hilfe,
bruno_83

P.S.: Danke für das Kompliment: "talentfrei und Briefmarken sammeln" ... 
!
Zurückhaltung ist auch ein Talent ... !

von Christoph E. (stoppi)


Lesenswert?

Hallo Bruno!
Ja genau, wenn es tau gibt müsste die relative Luftfeuchtigkeit 100% 
betragen.
Das Problem mit der neuen Skala ist folgendes: ich habe für alle 3 
messgrößen 6 Abschnitte ausgewählt, damit es beim ablesen übersichtlich 
bleibt. Wenn du das so beibehalten möchtest und mit der Skala für die 
Luftfeuchtigkeit bis auf 100 Prozent gegen möchtest, musst du erst bei 
40% Luftfeuchtigkeit beginnen. Ansonsten musst du mehr als 6 Abschnitte 
wählen. Dann würde ich rechts aber auch diese neue Skala mit mehr 
Abschnitten andeuten, denn sonst hat man große Probleme beim ablesen des 
aktuellen Werts...

von bruno_83 (Gast)


Lesenswert?

Hi Christoph,
vielen Dank für Deine Anmerkungen ! Ich habe diese Skala- Änderung 
bereits gestern angebracht ... nachdem ich die "Erleuchtung" hatte, wo 
und wie Du die Skala im Sketch programmiert hast ... uh-uh ! Auch die 
Anpassung der Barometerskala (... der QFE ist halt eben Stationshöhe- 
abhängig ... der QNH oder die Reduktion des Barometerdruck's auf 
Meereshöhe wäre dies nicht ... ) hat funktioniert!
Für den normalen Hobby- Gebrauch ist der BME280- Sensor genügend 
genau,was die Parameter T und RH% betrifft. Der einzige Nachteil ist, 
dass der Sensor für die Temperaturmessung etwas "bulky" ist, er sollte 
wenn möglich von Strahlung mit einem einfachen Strahlungsschutz 
abgeschirmt werden, dann sind T- und RH- die Messungen für den 
alltäglichen Küchenfenster- Gebrauch doch ganz angemessen gut !

von Roland F. (rhf)


Lesenswert?

Hallo Christoph,
> denn sonst hat man große Probleme beim ablesen des aktuellen Werts...

Das ist aber ein grundsätzliches Problem bei der Ermittlung eines 
Messwertes aus einem Diagramm. Wäre es nicht besser den aktuellen Wert 
zusätzlich als Zahl anzeigen zu lassen? Die Grafik wäre dann für den 
zeitlichen Verlauf der Messwerte zuständig.

rhf

von Roland F. (rhf)


Lesenswert?

Hallo bruno_83,
> Der einzige Nachteil ist, dass der Sensor für die Temperaturmessung
> etwas "bulky" ist...

Der in den BMx-Sensoren eingebaute Temperatursensor ist nicht für eine 
Umgebungstemperaturmessung gedacht. Er ermittelt eigentlich die interne 
Temperatur des Sensors um damit z.B. die Temperaturabhängigkeit bei der 
Luftdruckmessung zu kompensieren.

rhf

von äxl (Gast)


Lesenswert?

@bruno_83
<Kritik>
Dein " !" nervt sowas von...
Magst Du dich nicht auch (wie die meisten hier im Forum) an die üblichen 
Notationen halten?
Ich hab ja nix gegen Buchstabendreher im Wort oder breite Finger beim 
Tippen, aber dein einself-plenking finde ich total daneben.
</Kritik>
Gruß
äxl

von Christoph E. (stoppi)


Lesenswert?

An die Anzeige der aktuellen Werte habe ich natürlich auch schon 
gedacht. Müsste dann die erste display-Zeile abändern. Aber danke für 
den Tipp, Roland.

Bzgl. Ablesen: Naja, jetzt habe ich rechts und links die gleiche 
Skalenrasterung mit jeweils 6 Strichen. Deshalb lassen sich die beiden 
links beschrifteten Skalen auch leicht nach rechts transformieren, dort 
wo die aktuellsten Messwerte sich befinden. Bei unterschiedlicher 
Rasterung (z.B. für die relative Luftfeuchtigkeit 8 statt 6 Intervalle) 
ginge dies deutlich schwerer bis gar nicht...

P.S.: Die Bewertungskultur hier auf mikrocontroller.net ist schon sehr 
speziell. Wenigstens können sich dadurch Leute, die sich am liebsten 
täglich in den Hintern beißen könnten, ordentlich ausleben. Durch diese 
Äußerung erwarte ich mir zumindest 2 Negativpunkte ;-)

: Bearbeitet durch User
von Roland F. (rhf)


Lesenswert?

Hallo Christoph,
> P.S.: Die Bewertungskultur hier auf mikrocontroller.net ist schon sehr
> speziell. Wenigstens können sich dadurch Leute, die sich am liebsten
> täglich in den Hintern beißen könnten, ordentlich ausleben. Durch diese
> Äußerung erwarte ich mir zumindest 2 Negativpunkte ;-)

Dein Fehler im Umgang mit der Bewertungsfunktion besteht darin, sie 
überhaupt zu beachten.

rhf

von MeierKurt (Gast)


Lesenswert?

äxl schrieb:
> @bruno_83
> <Kritik>
> Dein " !" nervt sowas von...

Andererseits nervt deine umwerfende Nettigkeit (schönen Gruß an deine 
Eltern wegen Erziehung und so) gar niemanden.

Bitte... halt doch einfach deine Füsschen still oder gehe gleich raus 
spielen.
Und das nächste mal pass bitte besser auf was du ißt, denn musst du 
vielleicht nicht nochmal alles vollkotzen.

von Michael (Gast)


Lesenswert?

Was für ein arrogantes A...l...h

von Michael (Gast)


Lesenswert?

Michael schrieb:
> Was für ein arrogantes A...l...h

Apollo M. schrieb:
> bruno_83 schrieb:
>> und auch für die relative Feuchte (
>> 100 %RH) ... wo kann ich im Deinem Arduino- Sketch diese Parameter
>> anpassen
>
> ... wenn du das schon nicht hinbekommst, dann wohl doch eher talentfrei
> und briefmarken sammeln passt vielleicht besser zum talent?!
>
> mt
>
>     myGLCD.printNumI(20,60,285);
>     myGLCD.printNumI(30,60,240);
>     myGLCD.printNumI(40,60,195);
>     myGLCD.printNumI(50,60,150);
>     myGLCD.printNumI(60,60,105);
>     myGLCD.printNumI(70,60,60);
>     myGLCD.printNumI(80,60,15);

Was sind Sie denn für ein arrogantes A..l..h

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.