Wetterstation mit Arduino, BME280 und ESP-32

Gepostet in: Arduino - DIY - Partnerlinks enthalten
Hinweis!
Dieser Beitrag enthält min. einen Partnerlink.

Info zu meinen Partnerlinks
Aufgepasst!
Günstige Hardware und kostenlose eBooks für den Arduino gibt es bei AZ Delivery

Info zu meinen Partnerlinks

Vor Kurzem habe ich mit dem Gedanken gespielt, mir eine Wetterstation für den Balkon zu kaufen.

Aus keinem bestimmten Grund, sondern einfach nur, weil ich Bock hatte, mir die Daten, die entstehen, anzugucken.

Wie passend, dass schon über ein Jahr lang ein BME280 und ein ESP-32 Dev Kit C in meiner Schublade liegen und dort vor sich hin gammeln.

Grund genug, sich endlich mal damit auseinanderzusetzen und was Feines daraus zu bauen – eine kleine Wetterstation.

Bisher hatte ich den ESP-32 nicht angefasst, weil die Einrichtung unter Arduino bisher recht nervig sein sollte. Allerdings ist dieser Prozess nun arg vereinfacht worden und wird z.B. auf der Seite esp32-server.de erläutert.

Wechseln Sie zum „Datei“/“Voreinstellungen“, Tragen Sie in Eingabefeld  „Zusätzliche Boardverwalter-URLs“. folgende URL:  https://dl.espressif.com/dl/package_esp32_index.json . jetzt können Sie über „Werkzeuge“ -> „Board“ -> „Boardverwalter“ esp32 suchen und installieren.

http://esp32-server.de

Weiterhin benötigt man noch die Adafruit BME280 Library und die Adafruit Unified Sensor Library, um den BME280 ansteuern zu können. Beide Bibliotheken kann man über die IDE beziehen.

Anschließend wurde ein wenig gelötet und programmiert.

Dabei bin ich auf ein paar Herausforderungen getroffen, die es zu lösen galt.

Zum einen der unglaublich hohe Stromverbrauch im aktiven Modus des ESP-32, denn dadurch dass das Ding neben WLAN auch noch Bluetooth und 40nm Low-Power-Technologie an Bord hat, verbraucht es doch deutlich mehr Strom als notwendig.

Meine Powerbank mit 5200mAh war nach 1,5 Tagen leergelutscht. Nicht gut.

Nun verhält es sich aber so, dass man den ESP-32 in einen von drei Stromsparmodi versetzen kann. Dabei ist es sogar möglich, einen Zeitwert mitzugeben, nach dessen Ablauf der ESP-32 von allein wieder startet. Dies ist möglich, da der ULP Co-Prozessor weiterhin mit Strom versorgt wird, während alle anderen Stromfresser schlafen.

Also den Code nochmal umgestellt und das Problem wurde zwar nicht aus der Welt geschafft, aber zumindest reduziert.
Ziel war es, die Wetterstation möglichst lange mit einer Batterie CR123A zu betreiben.

Die andere Herausforderung war das Gehäuse. Da der BME280 nicht nur die Temperatur, sondern auch die Luftfeuchte messen kann, darf es sich um kein geschlossenes Behältnis handeln, da sonst die Werte verfälscht werden.

Eine kurze Recherche ließ mich die TFA Schutzhülle von Dostmann finden, die wie geschaffen für mein Vorhaben zu sein schien. Gekauft.

Heute wurde dann alles zusammengebaut und auf dem Balkon an einer schattigen Stelle montiert.

Mein „Weatherino“ sendet die Daten übrigens an ein php-Skript, welches eine mySQL mit eben diesen füttert und bei Bedarf auf wetter.janbpunkt.de wieder ausgibt.

Nachfolgend ein paar Bilder und der Quellcode. Die Wetterdaten sind auf https://wetter.janbpunkt.de einsehbar

Und nun bin ich gespannt, wie lange die Batterie durchhält.

Update

Nachdem das mit der autarken Stromversorgung alles nix war, weil trotz diverser Optimierungen am Code (sleep-Mode etc pp) der Stromverbrauch zu hoch war und ich die Akkus (ich bin von der o.g. Batterie auf 4x 1,2V Akkus umgestiegen) alle paar Tage wechseln musste, hab ich nun ein langes Kabel gekauft und betreibe den Weatherino per USB-Netzteil.

LoRa wäre wohl noch eine Option gewesen, aber ich wollte mir nicht noch ein neues Board kaufen.

Außerdem konnte ich so den Code ein wenig umbauen und kann selbigen zukünftig per WLAN anpassen, sollte dies notwendig sein, da das Board dauerhaft verbunden ist.


Wenn Dir dieser Beitrag geholfen hat und/oder Du mich finanziell unterstützen magst, kannst Du dies gerne per Paypal machen.

Bei Paypal spenden


Alternativ kannst Du Dir meinen Amazon-Partnerlink in die Favoriten legen und Amazon bei Deinen zukünftigen Einkäufen darüber aufrufen:

Amazon Partnerlink

Es entstehen Dir dadurch keine Mehrkosten, ich erhalte aber eine kleine Provision.


Über einen Kommentar freue ich mich natürlich auch :-)


The following two tabs change content below.

Jan B-Punkt

CEO, bitch!
Ich bin Jan, der Hauptakteur bei janbpunkt.de. Naja, eigtl. bin ich sogar der einzige Schreiberling hier. 1980 in Eckernförde geboren, lebe ich aktuell in Kiel und habe Spaß an Technik, Gadgets und dem Internet. Außerdem fotografiere und zocke ich gern. Verständlich, dass die meisten Artikel sich daher auf eben jene Themen beziehen.
Abonnieren
Benachrichtige mich bei
18 Comments
Oldest
Newest Most Voted
Inline Feedbacks
Zeige alle Kommentare
Andreas
4 Jahre zuvor

Wie lang reichen denn jetzt die Batterien?

Jan
4 Jahre zuvor

Hallo Jan,

an welchen PINs am ESP hast du den BME Sensor angeschlossen?

LG
Jan

michael
4 Jahre zuvor
Reply to  Jan B-Punkt

hallo jan,
als blutiger anfänger verwirrt mich das etwas. meinst du vielleicht SCL und SDA ?

Mr. x
4 Jahre zuvor

Hi Jan,
mich würde interessieren an welche PINs ich die cr123a anschließen soll? Habe ein ESP32 Nodemcu von joy-it. Könntest du mir bitte sagen an welche PINs an deinem Board du die Batterie angeschlossen hast? Danke!

Lars
4 Jahre zuvor

Hallo Jan,

dein Projekt hat mich dazu inspiriert meine eigene Wetterstation zu bauen.
Mein Aufbau ist im Prinzip identisch zu deinem, allerdings frage ich mich wie du die Wetterdaten so schön darstellst (mit wählbarem Zeitfenster und Extremwerten). Könntest du mir den PHP/HTML Code deiner Webseite als Vergleich/Hilfestellung schicken?

Liebe Grüße und Danke im voraus
Lars

Wolfgang
3 Jahre zuvor

Servus. Wie sieht es mit Korrosion im Dostmann Gehäuse aus?
Hast du die Teile extra geschützt mit Isolationslack?

daniel
3 Jahre zuvor

Hi vielleicht kann dir das bei deinem stromproblem helfen, ich glaub es gibt auch eine ondemant funtion, damit der sensor nicht misst, wenn mans gar ned braucht, bin mir aber ned sicher ob das auch in der adafruit-bme biblio. implementiert ist. woher hast du eigentl. den code zur höhenkorrektur ( currPress = (currPress/pow(1-(43/44330.0),5.255)); LG Daniel Recommended Modes - Based on Bosch BME280I2C environmental sensor data sheet. Weather Monitoring :   forced mode, 1 sample/minute   pressure ×1, temperature ×1, humidity ×1, filter off   Current Consumption = 0.16 μA   RMS Noise = 3.3 Pa/30 cm, 0.07 %RH   Data Output Rate 1/60 Hz Humidity Sensing :… Weiterlesen »

Reinhard
2 Jahre zuvor

Hallo, ich erhalte nach dem hochladen folgenden Fehler:

Verbinde zum WLAN…
Verbunden – IP:
192.168.xxx.xx
Ready
IP address: 192.168.xxx.xx
<!DOCTYPE HTML PUBLIC „-//IETF//DTD HTML 2.0//EN“>
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>

wenn ich dann im Browser die IP-Adresse aufrufe kommt keine Verbindung.

Danke für Antwort!

Reinhard
2 Jahre zuvor
Reply to  Jan B-Punkt

Hallo Jan,

vielen Dank für Deine Antwort.
Ein Software-Experte bin ich nicht und kann daher Deine Hinweise nicht umsetzen.
Ich benötige lauffähigen Code oder eine für mich nachvollziebare Anleitung.
Sicherlich kannst Du mir helfen.

Gruß
Reinhard

Reinhard
2 Jahre zuvor
Reply to  Jan B-Punkt

sehr sehr schade. Wirklich.