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... ;)
Sehr schönes Projekt. Läuft hier schon seit Jahren auf esp8266 mit Touchscreen für Innen-/Aussenstation.
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.
Der BME280 ist doch gar nicht sooo schlecht: Key parameters for humidity sensor Accuracy tolerance: ±3 % relative humidity Hysteresis: ±1% relative humidity
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 ...
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.
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.
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
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?
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.
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?
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³.
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
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.
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.
hier kannst du gut mit "offiziellen" Werten vergleichen: https://www.zamg.ac.at/cms/de/wetter/wetterwerte-analysen/tawes-verlaufsgraphiken/graz_universitaet/temperatur/?mode=geo&druckang=red
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
Ich habe nochmals die Luftdruckskala etwas angepasst. Jetzt muss ich nur noch im Langzeittest herausfinden, ob die Wertebereiche ausreichen...
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
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.
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
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
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 ;-)
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 ... !
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
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
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
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 ... !
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...
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 !
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
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
@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
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
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
ä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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.