Projekt 84: Wetterstation

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Wetterstation

Autoren: Anna Blankenstein, Timo Schmidt
Betreuer: Daniel Klein

→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)


Thema

Entwicklung einer modernen, mobilen Wetterstation auf Basis eines Microcontrollers.
Die Wetterstation misst Luftdruck, Luftfeuchtigkeit, Außen- und Innentemperatur und zeigt diese Werte auf einem LC-Display alternierend an. Zusätzlich wird die aktuelle Uhrzeit ausgegeben.
Die Daten werden auf einem Server gespeichert und können somit von dem Benutzer am PC ausgelesen werden.
Ein weiterer Punkt des Projektes ist die Entwicklung eines Gehäuses für die Wetterstation.

Erwartungen an die Projektlösung

  • Planung der Wetterstation bestehend aus Außen- und Innenstation
  • Drahtlose Kommunikation der Außensensoren und Wetterstation
  • Außensensoren: Temperatur, Feuchtigkeit, Luftdruck
  • Die Außenstation ist wetterfest
  • Innensensoren: Temperatur, Feuchtigkeit
  • Beschaffung der Bauteile (Miniaturisierung mit ESP8266)
  • Realisierung des Aufbaus
  • Messdatenaufzeichnung
  • Wetterprognose anhand der Sensordaten
  • Machen Sie ein tolles Videos, welches die Funktion visualisiert.
  • Test und wiss. Dokumentation
  • Live Vorführung während der Abschlusspräsentation

Kür: Zugriff auf die Wetterdaten via Web-Seite

Aufgabe

Einteilung der Aufgaben in die drei Fachbereiche der Mechatronik:

Elektrotechnik:
• Entwicklung des Schaltplans für die Wetterstation
• Erstellen eines Platinen Layouts
• Bestückung der Platine
• Funktionstest

Mechanik:
• Entwurf eines Gehäuses, Erstellen eines 3D Modells
• Prototypenbau
• Fertigung des finalen Gehäuses
• Zusammenbau der einzelnen Komponenten

Informatik:
• Auswertung der Sensordaten
• Kommunikation zwischen Wetterstation und Außensensor herstellen
• Anzeigen der Daten auf dem LC-Display

Projekt

Projektplan

Zu Beginn des Projektes haben wir eine Anforderungsliste (als Excel-Tabelle) erstellt, die wir nach den verschiedenen Komponenten unserer Aufgabe strukturiert haben. Z.B. gibt es eine eigene Kategorie für die Innenstation und eine für die Außenstation. Wichtige Funktionskomponenten haben ebenfalls eine eigene Kategorie erhalten, wie die Kommunikation der Stationen mit dem Web-Server. So waren wir schnell in der Lage abzusehen, welche Elemente benötigt werden und worüber wir uns weitere Gedanken, in Bezug auf die Umsetzung, machen mussten. Außerdem entschieden wir uns für die Projektmanagement-Methode Kanban (MeisterTask). So konnten wir die Vorteile der Methode nutzen und den Status der einzelnen Schritte, die sich aus den Anforderungen ergaben, direkt aufnehmen und überwachen bzw. nachverfolgen. Wir hatten den Zeitplan jederzeit im Blick und konnten den Projektfortschritt einsehen.
In den nachfolgenden beiden Abbildungen sieht man wie sich das virtuelle Kanban Board entwickelt hat. Links einmal dargestellt nach circa 3 Wochen Projektdurchführung und rechts der abgeschlossene Stand.
Durch eine interne Aufteilung der Aufgaben konnten wir parallel mit verschiedenen Zweigen der Problemstellung anfangen. Im Laufe der Projektbearbeitung wurde die Anforderungsliste weiter angepasst und vervollständigt.

Projektdurchführung

Während einer von uns mit dem Erstellen der Schaltpläne begonnen hat, hat die andere Person parallel damit begonnen die 3-D Modelle für die Stationen zu entwerfen. Dabei musste darauf geachtet werden, dass schon an dieser Stelle die Abmessungen einer noch zu designenden Platine berücksichtigt werden. Diese Maße wurden aufgrund von den Abmessungen der einzelnen Bauteile grob geschätzt angenommen. Als die 3-D-Modelle fertig waren, konnte auch das Platinen-Layout erstellt werden, da nun feststand welche Abmessungen tatsächlich eingehalten werden müssen.
Gleichzeitig konnte schon die Software implementiert werden und es mussten weitere Erkenntnisse z.B. in Bezug auf eine Wettervorhersage mit den gegebenen Daten, gewonnen werden. So hatten wir durchgängig ein funktionsfähiges Programm, das sich nach und nach mit weiteren Funktionen ergänzen ließ.
Zeitgleich wurden die erstellten Schaltungen mit Hilfe eines Steckbretts getestet und konnten anschließend auf der zurechgeschnittenen Platinen realisiert werden. Die Bestückung erfolgte von Hand. Nachdem das Grundgerüst unseres Projektes stand, fingen wir bereits an die Dokumentation strukturiert zu behandeln. Vorher erbrachte Notizen und Datenblätter haben wir zusammengestellt, um unsere Erkenntnisse differenziert festzuhalten. Nach der Dokumentation planten wir die Präsentation und designten die Elemente für den Messestand.

Hardware-Komponenten

WemosD1 mini

Der WemosD1 mini basiert auf dem ESP8266EX Chip und hat eine integrierte Schnittstelle zur Verwendung von Wlan. Er ist kompatibel mit der Arduino IDE, kann also über diese programmiert werden. Außerdem verfügt er über ein Micro-USB Buchse, um die Programme einfach übertragen zu können. Außerdem ist er fähig über I2C und single-bus zu kommunizieren, darüber hinaus unterstützt er auch die SPI-Schnittstelle. Der WemosD1 verfügt über 4 MB Flash Speicher.

BME280

Der BME280 ist ein integrierter Umgebungssensor. Er ist speziell für mobile Anwendungen entwickelt worden, wobei die Größe und der geringe Stromverbrauch eine entscheidende Rolle bei den Konstruktionsanforderungen spielen. Das Gerät enthält genaue Sensoren für Druck, Luftfeuchtigkeit und Temperatur. Der Luftdruck lässt sich in einem Bereich von 300 bis 1.100 hPa messen. Die absolute Genauigkeit beträgt hier etwa +- 1 hPa. Die Luftfeuchtigkeit kann in einem maximalen Bereich von 0 bis 100 %RH gemessen werden, wobei eine Genauigkeit von +- 3 %RH vorliegt. Die Temperatur lässt sich mit einer Genauigkeit von +- 1 °C im Temperaturbereich von -40 bis 85 °C messen.

DHT11

Der DHT11 ist ein digitaler Temperatur- und Luftfeuchtesensor. Er besitzt eine Auflösung von 16 Bit und misst die relative Luftfeuchtigkeit mit einer Genauigkeit von +- 5 %RH im Bereich von 20 – 90 %RH. Die Temperatur wird ebenfalls mit 16 Bit aufgelöst und kann mit einer Genauigkeit von +- 2 % angegeben werden. Der Temperaturbereich liegt bei 0 bis 50 °C.

LC-Display

Das LC-Display mit aufgelötetem I2C-Kommunikations-Adapter ist dadurch über 4 I/O Leitungen mit einem µ-Controller ansprechbar.
Zwei Leitungen dienen zur Spannungsversorgung (VCC und GND) und die anderen zwei Leitungen (SDA und SCL) dienen zu Datenübertragung. Das Display bietet zwei Zeilen und 16 Spalten, um Zeichen anzuzeigen.

Hardware

Spannungsversorgung

Alle verwendeten Sensoren werden mit einer Spannung von 3,3 V betrieben, das LC-Display benötigt eine Spannung von 5 V. Da wir für die Spannungsversorgung der Innenstation ein 5 V Netzteil und für die Außenstation eine 9 V Block-Batterie verwenden, ist es notwendig die Spannungen jeweils auf 3,3 V zu reduzieren. Aus diesem Grund setzen wir je einen LF 33 CV Festspannungsregler für die Außen- und Innenstation ein. Dieser reguliert bei Eingangsspannungen, bis maximal 16 V, auf eine stabile Ausgangsspannung von 3,3 V. Dafür ist eine externe Beschaltung erforderlich, bestehend aus Kondensatoren (welche dem Datenblatt des Festspannungsreglers entnommen werden können).

Messschaltungen

Der WemosD1 mini nimmt die Messwerte der Sensoren auf. Dafür müssen diese entsprechend angeschlossen werden. Der BME280 für die Außenstation besitzt vier Anschlüsse. Zwei werden für die Spannungsversorgung benötigt (VIn und GND). Die anderen zwei Anschlüsse (SDA und SCL) dienen der Datenübertragung an den WemosD1. Diese sind verbunden mit den Pins D1 und D2. Die Kommunikation erfolgt über den I2C-Bus.
Der DHT11 für die Innenstation besitzt ebenfalls 4 Anschlüsse, wobei nur drei tatsächlich angeschlossen werden. Zwei der drei Pins sind zur Spannungsversorgung erforderlich (VDD und GND). Der dritte Pin (DATA) wird mit einem seriellen Pin (D4) des WemosD1 verbunden. Da der DHT11 eine Low-aktive Kommunikation betreibt, wird ein Pull-up Widerstand zwischen der Versorgungsspannung und der Datenleitung benötigt, um den Pin auf ein definierten High-Pegel zu legen, wenn keine Kommunikation stattfindet. Die Kommunikation erfolgt über einen single-bus mit 40 Transfer-Bits (2x8 Bit für die Luftfeuchte, 2x8 Bit für die Temperatur und 1x8 Paritätsbits).

Platine der Außenstation; mit und ohne gesteckten WemosD1 mini

Platinen-Layout

Die Platine für die Außenstation hat eine Größe von ~32x39 mm und die Platine der Innenstation eine Größe von ~32x32 mm. Auf beiden Platinen wurde die Spannungsregelung realisiert, sowie die jeweiligen Messschaltungen mit dem WemosD1 mini. Wir waren in der Lage die gesamte Schaltung auf engstem Raum zu gestalten, da der WemosD1 über der Schaltung platziert werden konnte. Über zwei Buchsenleisten auf der Platine ist dieser steckbar mit der Schaltung verbunden, sodass der Großteil des weiteren Layouts darunter Platz finden konnte. Generell ist eine einseitige Bestückung auf Lochrasterplatinen (2,54 mm Rastermaß) von Hand vorgenommen worden.

Gehäuse

Die Gehäuse für die Außenstation und Innenstation wurden als 3D-Modelle erstellt, um sie als 3D-Druck herzustellen. Das Innenheäuse wurde mit rosanem Filament gedruckt und hat einen zusätzlichen Standfuß nach dem Drucken erhalten. Die Außenstation ist aus grünem Filament gedruckt und ist zur Wandmontage ausgelegt, durch zwei Befestigungspunkte über und unter dem Gehäuse. Die nach unten geöffneten Lamellen gewährleisten, dass das Gehäuse luftdurchlässig ist, aber kein Wasser eindringen kann.

Software

Die Programmierung wurde mit der Arduino IDE umgesetzt. Um den WemosD1 mini mit dieser Software programmieren zu können muss zunächst der Mikrocontroller in die Hardwareübersicht der Software eingebunden werden. Dies erfolgte nach folgender Anleitung.Nachdem der Mikrocontroller eingebunden ist, ist der Weg für die Innen- & Außenstation unterschiedlich.

Außenstation

Bei der Außenstation wurden folgende Bibliotheken, die nicht in der Arduino IDE verankert sind, verwendet:

  • ThingSpeak Library (für das Senden der Messwerte an den Server)
  • ESP8266WiFi (für die Verwendung des WemosD1 mini, ist inkludiert in der IDE nachdem die Hardware eingebunden wurde)
  • Seeed_BME28 Library für das Auslesen des BME280)

Des Weiteren wurde eine Header Datei erstellt, in der alle geheimzuhaltenden Daten, wie SSID und Thingspeak-Anmeldedaten, gespeichert werden. Diese Header Datei muss auch in dem Hauptprogramm inkludiert werden. Das ganze Programm ist im Setup der .ino-Datei geschrieben. Dies ist möglich, da der Mikrocontroller nach einem erfolgreichen Übermitteln der Daten in einen Tiefschlaf versetzt wird, um Strom zu sparen. So konnten wir den Stromverbrauch im Tiefschlaf auf unter 1 mA reduzieren und somit die Akku-Laufzeit verlängern. Nachdem eine Wlan-Verbindung aufgebaut wurde, werden die Sensordaten ausgelesen. Der ausgelesene Luftdruck wird noch mit der Internationalen Höhenformel in den Luftdruck auf Meereshöhe bei 15 °C umgerechnet. Nachdem der Wert für den Lufdruck auf Meereshöhe berechnet wurde, werden die Messwerte an den ThingSpeak Server gesendet.

Innenstation

Bei der Innenstation wurden folgende Bibliotheken, die nicht in der Arduino IDE verankert sind, verwendet:

  • ESP8266WiFi (für die Verwendung des WemosD1 mini, ist inkludiert in der IDE nachdem die Hardware eingebunden wurde)
  • WiFiUdp Library (Zur Herstellung einer Verbindung zum NTP-Server, ist inkludiert in der IDE nachdem die Hardware eingebunden wurde)
  • TimeLib Library (Mit dieser Library wird die Uhrzeit vom NTP-Server in die Einzelteile des Datums zerlegt)
  • Timezone Library (mit dieser Library geht es um die Sommer- und Winterzeit)
  • DHTesp Library (Diese Library wird verwendet um den DHT11 auszulesen
  • LiquidCrystal_I2C Library (Diese Library wird benötigt um die Informationen auf dem Display auszugeben)

Des Weiteren gibt es, wie bei der Außenstation, eine Header-Datei (secretInnen.h) in der die Daten für das Wlan und den Server bereitgestellt werden. Diese Daten werden von dort in das eigentliche Programm geladen. Bei der Innenstation gibt es noch eine weitere Header-Datei, in der die Variablen für die Messwerte und den zeitlichen Ablauf des Programms definiert werden.
Um einen ähnlichen Zustand wie das "Multi-tasiking" zu erreichen, haben wir mit millis() anstatt eines delay() gearbeitet. So wartet der Mikroconroller nicht bis die Zeit abgelaufen ist, sondern kann in der Zeit andere Aufgaben erledigen.
Der eigentliche Programmablauf besteht darin, die Informationen nacheinander auf dem Bildschirm auszugeben. Dies erfolgt in folgender Reihenfolge:

  • Uhrzeit & Datum
  • Die Temperatur gemessen an der Innenstation
  • Die Luftfeuchtigkeit gemessen an der Innenstation
  • Die Temperatur gemessen an der Außenstation
  • Die Luftfeuchtigkeit gemessen an der Außenstation
  • Den Luftdruck gemessen an der Außenstation und umgerechnet auf den Luftdruck auf Meereshöhe

Des Weiteren werden die Daten der Außenstation alle 10 Minuten vom Server abgerufen. Die Messwerte der Innenstation werden alle zwei Minuten an den Server gesendet.
Falls keine Verbindung zum Wlan mehr besteht, wird versucht diese wieder herzustellen. Dieser Vorgang wird priorisiert, das heißt es wird solange versucht, bis wieder eine Verbindung besteht. Dabei kann es sein, je nach Dauer der Unterbrechung, dass der WemosD1 mini neugestartet wird. Wenn wieder eine Verbindung hergestellt wurde beginnt der Mikrocontroller wieder mit seinem eigentliche Programmablauf.

Ergebnis

Das Ergebnis unseres Projektes ist eine funktionsfähige und optisch ansprechende Wetterstation bestehend aus zwei Komponenten. Zum einen haben wir die Außenstation (grün), die gemäß den Anforderungen wetterfest ist und Temperatur, Luftfeuchtigkeit und Luftdruck messen kann. Sie übermittelt die Daten an einen Web-Server, wo die Daten ausgelesen werden können. Zum anderen haben wir die Innenstation (rosa), die ebenfalls die festgelegten Anforderungen erfüllt und die Temperatur und Luftfeuchte misst und diese Daten sowie die der Außenstation auf einem Display anzeigt. Zudem werden das aktuelle Datum und die Zeit ausgegeben. Auch konnten wir die Wetterprognose aufgrund der Luftdruck-Daten der Außenstation realisieren. Trotz einiger Schwierigkeiten mit einigen Komponenten, konnten wir das Projekt erfolgreich umsetzen. Die zeitliche Komponente des Projektes konnte ebenfalls gut eingehalten werden, durch unsere frühzeitige Planung und Festlegung aller Anforderungen.

Lessons Learned

Die ersten Probleme bei der Bearbeitung traten auf, als wir feststellten, dass die Gehäuse für die Stationen nicht korrekt dimensioniert worden sind. Zu dem Zeitpunkt hatten wir bereits ein gedrucktes Gehäuse der Innenstation, bei welchem es nicht möglich war das Display, ohne eine weitere Bearbeitung einzusetzen. Genauso wenig war es möglich die Platine auf gewünschte Weise in dem Gehäuse zu platzieren. Daraus nehmen wir mit, dass die Dimensionierung und Abmessung genauer überprüft werden muss, ebenso wie die Gestaltung und die Maße der 3-D-Modelle. Schließlich musste das Gehäuse erneut mit veränderten Maßen gedruckt werden.
Ein ähnliches Problem hatten wir bei der Bestückung der Platine. Da der Sensor, das Display und der WemosD1 mini der Innenstation steckbar sind, fiel erst beim Zusammenfügen nach der Bestückung der Buchsenleisten auf, dass der Stecker zu dicht am WemosD1 platziert war und somit unter dem Controller saß. Aus diesem Grund war es nicht möglich beide Komponenten gleichzeitig zu stecken. Da noch etwas Platz, weg von dem WemosD1, zur Verfügung stand auf der Platine, konnten wir den Stecker des Displays zwei Reihen zurücksetzen. Dies löste das Problem und wir gewannen die Erkenntnis, Abmaße von Bauelementen genauer zu beachten beim Erstellen eines Platinen-Layouts. Auch in unserem Zeitplan mussten wir ungewollt eine Woche pausieren, da die Produktionszeiten zum Drucken nicht absehbar waren und länger dauerten als eingeplant war. Wir lernten daraus, auch Zeitpuffer in der Planung zu berücksichtigen und uns im Vorhinein genauer über Druckzeiten zu informieren.

Projektunterlagen

Link zu dem SVN-Ordner des Projekts: https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/84_Wetterstation/

YouTube Video

Das Video von diesem Projekt finden Sie auf Youtube

Weblinks

Link zur Messdaten-Visualisierung: https://thingspeak.com/channels/604529


→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)