Wetterstation mit ESP8266

Vorüberlegungen

Eine Wetterstation ist wohl der Klassiker für Raspberry Pi und Arduino Anfänger. Viele Sensoren sind erhältlich und Anleitungen, wie diese an den Mikroprozessor angeschlossen werden gibt es ohne Ende.

Wenn man aber ein bisschen darüber nachdenkt, stößt man schnell auf die Probleme: Das Anschließen ist nicht das Problem, aber …

  • wie logge ich die gewonnenen Daten?
  • wie bekomme ich sie vom Gerät auf einen zentralen Server?
  • wie schaffe ich es, Daten auch an Orten aufzunehmen, an denen kein Anschluss ans Stromnetz existiert?
  • wie zeige ich die gewonnenen Daten in ansprechender Form an?

Beim Raspberry Pi stellen die meisten der Punkte kein Problem dar (sofern man die richtige Variante einsetzt), da dieser bereits über mindestens einen USB-Anschluss verfügt sowie LAN-Anschluss, WLAN-Modul etc. Aber möchte man einen (im Verhältnis teuren) Raspberry ausschließlich dafür einsetzen, an irgendeinem Ort Temperatur und ggf. Luftfeuchtigkeit zu messen?

Die Alternative könnte ein Arduino sein, der zumindest als Arduino Nano klein und preiswert ist. Hier fehlt dann aber die Kommunikationsmöglichkeit, da er weder über LAN/WLAN, noch über USB-Anschluss verfügt. Auf der Suche nach einer Lösung stieß ich auf den ESP8266, der bereits über einen kompletten WLAN-Server verfügt. Man könnte über ihn die Daten des Arduino verschicken.

Beschäftigt man sich aber ein bisschen mehr mit dem ESP, erkennt man, dass man den Arduino dazu gar nicht benötigt, da der ESP über eigene GPIO-Ports verfügt und One-Wire, I2C usw. beherrscht. Zusätzlich kann man ihn in einen sogenannten „Deep Sleep“ Zustand versetzen, in dem er praktisch keine Energie benötigt (lt. Datenblatt 50μA Stromstärke, also ca. 0,2mW). Meine Wahl fiel deshalb auf den ESP.

Der ESP8266

Sieht man sich den ESP genauer an, so stellt man fest, dass es mehr als ein Dutzend Varianten davon gibt, die sich in der Größe, der Bauform, der Anzahl der herausgeführten Pins und natürlich im Preis z.T. beträchtlich unterscheiden.

Anleitungen, wie man den Baustein programmiert gibt es ebenfalls haufenweise, allerdings sind diese oft von mehr als zweifelhafter Qualität. Es dauerte eine Weile, bis ich die drei wichtigsten Grundsätze, die zu beachten sind, herausgefunden habe:

  • Um den ESP in den Flash-Modus zu versetzen, muss beim Starten der GPIO 0 auf Masse liegen. (Es empfiehlt sich aber, ihn danach sofort wieder von Masse zu trennen, denn sollte das geflashte Programm den GPIO 0 auf High legen, kann das den Baustein zerstören!).  Außerdem muss der CH_EN-Pin auf High liegen – manche empfehlen, dies über einen Pullup-Wiederstand von 4,7kΩ zu tun, aber wenn ich dies mal vergessen habe, hat das auch nicht geschadet.
  • Damit das geflashte Programm läuft, muss der CH_EN-Pin auf jeden Fall über einen  4,7kΩ-Pullup an 3,3V gelegt werden – anderenfalls startet das Programm gar nicht erst.
  • Möchte man den Deep-Sleep-Modus nutzen und erreichen, dass der ESP nach einer festgelegten Zeit von selbst wieder aufwacht, dann muss man ein Modell auswählen, bei dem der Pin 8 bzw. XPD_DCDC bzw. GPIO16 herausgeführt ist, denn dieser Pin muss dafür mit dem RESET-Pin verbunden werden! Bei der verbreitetsten Variante, dem ESP8266-01 ist GPIO 16 definitiv nicht herausgeführt, so dass hier der Deep-Sleep-Modus nicht ohne Weiteres machbar ist. In einer Reihe von Beiträgen im Netz liest man, dass einige es schaffen, einen Draht auf dem Chip direkt an den Pin zu löten, aber man benötigt schon einen sehr feinen Lötkolben und eine extrem ruhige Hand dafür!

Der weitere Weg

Damit ist die grundsätzliche Fahrtrichtung klar, nun müssen die nächsten Fragen beantwortet werden:

  1. Welches ESP8266-Modell für welchen Zweck?
  2. Wie schließt man den/die Sensor(en) an?
  3. Wie versorgt man das fertige Modul (Baustein + Sensoren) mit Energie?
  4. Wie programmiert man den Baustein?
  5. Wie sammelt man die Daten?
  6. Wie stellt man die Daten übersichtlich dar?

Meine Wahl in Bezug auf diese Punkte werde ich in weiteren Blog-Beiträgen der Reihe nach beschreiben. Hier in Kürze:

  1. Je nach Anwendungsfall unterschiedlich.
  2. Ebenfalls abhängig von der Anwendung bzw. dem Sensor.
  3. Hier bin ich noch am experimentieren – ich denke jedoch, dass ich verschiedene Möglichkeiten ausprobieren / einsetzen könnte:
    • Vorhandene Steckernetzteile einsetzen und auf 3,3V anpassen
    • Batterien einsetzen
    • Eigene Netzteile benutzen
  4. Hier ist meine Wahl (bisher) die Arduino-IDE. Ich will aber bei Gelegenheit auch andere Möglichkeiten testen.
  5. Hier habe ich mich für den Einsatz eines Raspberry Pi (3B) entschieden. Nach kurzem Herumspielen mit einem LAMP-System bin ich dann bei MQTT und Mosquitto als Broker gelandet.
  6. Nach einigen Ansätzen, selbst passende Anzeigen mit HTML5 zu basteln bin ich zufällig auf Node-Red gestoßen und bin begeistert.

Anschlussthemen:

ESP-01 mit Temperaturfühler Dallas DS 18B20

ESP-01 mit DHT22 (Temperatur und relative Luftfeuchtigkeit)

Wetterstation mit ESP8266

Beitragsnavigation


Schreibe einen Kommentar

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