Projekt 84: Wetterstation: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 96: Zeile 96:
===Außenstation===
===Außenstation===
Bei der Außenstation wurden folgende Bibliotheken, die nicht in der Arduino IDE verankert sind, verwendet: [https://github.com/mathworks/thingspeak-arduino ThingSpeak] Liberay (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), [https://github.com/Seeed-Studio/Grove_BME280 Seeed_BME28] Liberay für das Auslesen des BME280).
Bei der Außenstation wurden folgende Bibliotheken, die nicht in der Arduino IDE verankert sind, verwendet: [https://github.com/mathworks/thingspeak-arduino ThingSpeak] Liberay (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), [https://github.com/Seeed-Studio/Grove_BME280 Seeed_BME28] Liberay für das Auslesen des BME280).
Des Weiteren wurde eine Header Datei erstellt, in der alle geheim zu haltenden 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.


== Ergebnis ==
== Ergebnis ==

Version vom 8. Januar 2019, 11:58 Uhr


Autoren: Anna Blankenstein, Timo Schmidt
Betreuer: Prof. Schneider

→ 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. 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

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 0 bis 65 °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.

Verwendete Schaltungen

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.

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 erfolgete 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 Liberay (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 Liberay für das Auslesen des BME280). Des Weiteren wurde eine Header Datei erstellt, in der alle geheim zu haltenden 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.

Ergebnis

Zusammenfassung

Lessons Learned

Projektunterlagen

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

YouTube Video

Weblinks

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

Literatur


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