AEQ-WEB

NodeMCU ESP8266 WiFi WLAN Weatherstation
Hardware
27.09.2018

Switch language to: en Englisch

NodeMCU Wetterstation

Für dieses Projekt gibt es auch ein Video auf Youtube: NodeMCU ESP8266 WiFi Wetterstation


Was ist NodeMCU

NodeMCU ist ein freies Betriebssystem für Mikrocontroller. Meistens wird der NodeMCU als ein eigener Mikrocontroller gesehen. Beim den meisten bekannten NodeMCU Boards ist auf dem Entwicklungsbrett ein ESP8266 integriert. Für das in diesem Artikel gezeigte Projekt würde auch ein ESP8266 ausreichen. Da es aber mit dem NodeMCU sowohl hardwareseitig als auch softwareseitig einfacher und komfortabler ist, haben wir uns für dieses Board entschieden. Programmiert wird der NodeMCU über den Arduino IDE.


WiFi Wetterstation mit ESP8266

Die WiFi Wetterstation hat nahezu denselben Aufbau, wie unsere Arduino Wetterstation. Diese Wetterstation wird jedoch über ein Ethernet Shield betrieben und benötigt deshalb neben der Stromversorgung auch ein LAN-Kabel. Für viele stellt dieses Projekt ein Hindernis da, fast niemand im Garten oder am Balkon ein Netzwerkkabel hat. Die WiFi Wetterstation arbeitet mit WLAN und würde mit einer kleinen Photovoltaik-Zelle sogar vollkommen kabellos funktionieren. Als Hardware kommt der BME280 Multisensor in Verwendung. Der BME280 arbeitet über die I2C-Schnittstelle und kann Temperatur, Luftdruck und die Feuchtigkeit messen. Für die Windgeschwindigkeit wird ein herkömmliches Anemometer mit einem Reed-Kontakt verwendet. Bei jeder Umdrehung gibt das Anemometer einen Impuls, der beim Mikrocontroller als Interrupt erfasst wird. Zwischen den Eingang und der Masse befindet sich ein 10K Widerstand, der ein prellen am Eingang verhindert. Der ESP8266 erfasst diese Daten und sendet alles an einem Webserver über HTTP. Am Server läuft ein PHP-Script, der die empfangenen Daten verarbeitet. Da die Wetterstation im Außenbereich zum Einsatz kommt, wird ein entsprechendes wetterfestes Gehäuse benötigt. Das Gehäuse besteht großteils aus Metall. Eine Bauanleitung gibt es hier.


ESP8266 NodeMCU Weatherstation with PHP Server Wiring Plan

Software für den ESP8266

Damit der NodeMCU und der BME280 funktionieren, muss das Board und die Library im Arduino IDE zuerst installiert werden. Dazu wird in den Einstellungen vom Arduino IDE selbst die URL für den Boardmanager eingeben. Diese URL lautet:

http://arduino.esp8266.com/stable/package_esp8266com_index.json
Danach wird der Boardmanager geöffnet und mittels suche muss der ESP8266 gesucht und installiert werden. Wenn der ESP8266 installiert wurde, können noch die Librarys, welche für den ESP8266 notwendig sind, hinzugefügt werden.


Arduino Library Manager

Um neue Librarys zu installieren, klickt man auf Sketch -> Include Librarys -> Magange Librarys. Über den Library Manager wird die Adafruit BME280 Library und die Adafruit Unified Sensor Library installiert. Beide Librarys befinden sich dann unter den Librarys im Arduino Ordner.


BME280 Library I2C Adress

BME280 I2C Adresse Scannen

Bei der Adafruit BME280 Library wird die Adresse vom Sensor 0x77 verwendet. Wenn nicht der originale I2C Sensor von Adafruit verwendet wird, kann es passieren, dass die Adresse abweicht. Um hier Klarheit zu schaffen, gibt es einen I2C-BUS Scanner. Der Scanner testet alle Adressen durch und gibt das Ergebnis über den Serial Monitor aus. Der Scanner kann hier herunter geladen werden. Beim Aufbau von unserem Projekt haben wir festgestellt, dass die Adresse vom BME280 0x76 lautet. Daher war es notwendig, die Library anzupassen. Unter Windows findet man in dem Arduino Librarys Ordner die BME280 Library [Adafruit_BME280.h]. Der Parameter BME280_ADRRESS muss entsprechend dem Ergebnis vom Scanner angepasst werden.


Wetterstation Code

Der Code ist so aufgebaut, dass jede Minute ein HTTP Request an einem Webserver gesendet wird. Über HTTP Post werden Temperatur, Luftdruck, Feuchtigkeit, Windgeschwindigkeit und die Laufzeit des Boards in Sekunden. Nach den Librarys sind im Code die Parameter definiert, die für den Betrieb der Wetterstation angepasst werden müssen. Zuerst muss der Name und der Schlüssel vom W-LAN Netzwerk eingeben werden und die Serverurl zur PHP Datei muss angepasst werden. Für den ersten Test kann auch die originale URL verwendet werden. Die Wetterdaten werden dann auf unseren Testserver gesendet.


PHP Server

Der PHP-Script für den Server ist auf zwei Dateien aufgeteilt. Die uplink.php-Datei empfängt die Daten und erstellt damit ein Textfile. Über die index.php-Datei wird das Textfile ausgelesen und im Browser angezeigt.


Hinweis

Der PHP-Script benötigt am Webserver Schreibrechte. Derzeit unterstützt dieses Projekt kein HTTPS.

Benötigte Komponenten:



Von Alex @ AEQ-WEB 576