Home Weather Station: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(114 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 13: Zeile 13:
Das Ziel der HWS ist es lokale Wetterdaten, wie Windgeschwindigkeit, Temperatur, Niederschlag, und Luftfeuchtigkeit zu sammeln und auf einem Bildschirm anzuzeigen.
Das Ziel der HWS ist es lokale Wetterdaten, wie Windgeschwindigkeit, Temperatur, Niederschlag, und Luftfeuchtigkeit zu sammeln und auf einem Bildschirm anzuzeigen.


[[Datei:Home Weather Station v1 v2.jpg|rechts|mini|600px]]
{|
|[[Datei:HWS Titelbild.png|mitte|mini|630px|Peppiges Bild]]
|}


== Anforderungen ==
== Anforderungen ==
Zeile 21: Zeile 23:
! style="font-weight: bold;" | Inhalt
! style="font-weight: bold;" | Inhalt
! style="font-weight: bold;" | Ersteller
! style="font-weight: bold;" | Ersteller
! style="font-weight: bold;" | Datum
! style="font-weight: bold;" | Geprüft von
! style="font-weight: bold;" | Datum
|+ style = "text-align: left"|  
|+ style = "text-align: left"|  
|-
|-
Zeile 29: Zeile 28:
| Messung von Windgeschwindigkeit, Niederschlag, Temperatur, Luftfeuchtigkeit
| Messung von Windgeschwindigkeit, Niederschlag, Temperatur, Luftfeuchtigkeit
| Dennis Kononenko & Markus Belsch  
| Dennis Kononenko & Markus Belsch  
|
|
|
|-
|-
| 2
| 2
| Auswertung und Umrechnung der gemessenen Daten
| Auswertung und Umrechnung der gemessenen Daten
| Dennis Kononenko & Markus Belsch  
| Dennis Kononenko & Markus Belsch  
|
|
|
|-
|-
| 3
| 3
| Anzeigen von Windgeschwindigkeit, Regenmenge, Temperatur, Luftfeuchtigkeit auf Display
| Anzeigen von Windgeschwindigkeit, Regenmenge, Temperatur, Luftfeuchtigkeit auf Display
| Dennis Kononenko & Markus Belsch  
| Dennis Kononenko & Markus Belsch  
|
|
|
|-
|-
| 4
| 4
| Wetterfeste Konstruktion (Gehäuse)
| Wetterfeste Konstruktion (Gehäuse)
| Dennis Kononenko & Markus Belsch  
| Dennis Kononenko & Markus Belsch  
|
|
|
|-
|-
|}
|}
Zeile 67: Zeile 54:
|-
|-
|-
|-
| Wasserstandssensor
| Tropfensensor
| Wasserkontakt verbindet Leiterbahnen auf Sensor, dadurch erhöht sich der Stromfluss
| Wasserkontakt verbindet Leiterbahnen auf Sensor, dadurch erhöht sich der Stromfluss
|-
|-
Zeile 77: Zeile 64:
| Luftfeuchtigkeit
| Luftfeuchtigkeit
| Erhöhte Luftfeuchtigkeit sorgt für veränderte Eigenschaften des Dielektrikums, und als Folge ändert sich die Kapazität des Kondensators
| Erhöhte Luftfeuchtigkeit sorgt für veränderte Eigenschaften des Dielektrikums, und als Folge ändert sich die Kapazität des Kondensators
|
|
|-
|-
|[[Datei:Home Weather Station v1 v2.jpg|rechts|mini|600px|Abb1. Erste Idee für die Home Weather Station]]
|[[Datei:Sensoren.PNG|links|mini|630px|Abb2. Systementwurf]]
|}
|}




Zeile 84: Zeile 78:


== Komponentenspezifikation ==
== Komponentenspezifikation ==
{| class="mw-datatable"
! style="font-weight: bold;" | Komponente
! style="font-weight: bold;" | Beschreibung
|+ style = "text-align: left"|
|Arduino Uno
|Standard Arduino-Uno
|-
|Breadboard
|Es wurden 2 Breadboards benötigt. Das Erste befindet sich im Gehäuse und dient als Anschluss für die +/- Eingänge der verschiedenen Sensoren, sowie als Verschaltung für das Anemometer. Das Zweite Breadboard befindet sich auf der HWS und birgt die 3 LEDs.
|-
|Anemometer
|Das Anemometer stammt vom Hersteller Froggit (Modellnummer: WD321). Das Anemometer liefert keinen direkten Messwert in m/s. Dieser muss vielmehr mittels Software umgerechnet werden. (siehe Kapitel Umsetzung-SW)
|-
|Tropfensensor
|Der Tropfensensor entspricht demjenigen aus dem Funduino-Baukasten. Er gibt Messwerte im Bereich von 0 bis 1023 aus, je nach Menge an Wasser auf dem Sensor. Auf dem Sensor befinden sich parallel verlaufende Kontaktstellen. Sobald ein Wassertropfen auf dem Sensor gelandet ist, ist eine leitende Verbindung zwischen den Kontaktstellen hergestellt. Daraus wird dann ein analoges Signal abgeleitet.
|-
|Temperatursensor
|Der Temperatursensor entspricht demjenigen aus dem Funduino-Baukasten. ACHTUNG: Der Sensor muss unbedingt richtig herum angeschlossen werden: Von der flachen Seite des Sensor aus gesehen: links - 5V / mitte - Signal / rechts - GND. Bei umgekehrtem 5V/GND kann der Sensor (wie bei Durchführung dieses Projektes) durchbrennen.
|-
|I2C-LCD
|Das LCD-Display entspricht demjenigen aus dem Funduino-Baukasten. Auf der Rückseite kann ein Potentiometer (dient der Einstellung vom Kontrast) mittels Kreuz-Schraubendreher eingestellt werden.
|-
|Widerstand
|Für das Projekt wurden 2x 220Ohm Widerstände benötigt
|-
|Kondensator
|Ein 100nF Kondensator wurde benötigt, um das Messsignal vom Anemometer zu glätten und dadurch etwas verlässlichere Werte zu erhlaten.
|-
|LEDs
|3 LEDs (grün, gelb, rot) sollten den "Gefahrengrad" der jeweiligen Messung (Regen, Temperatur, Wind) anzeigen.
|-
|}


== Umsetzung (HW/SW) ==
== Umsetzung (HW/SW) ==
{|
|-
|[[Datei:Verschaltung-HWS.PNG|800px|links|Abb3. Verschaltung der HWS]]
|-
|Die Verschaltung wurde im obigen Bild mit dem Fritzing-Tool dargestellt.
|-
|Das Anemometer besitzt 1 Eingang und 1 Ausgang. Der Eingang ist direkt mit 5V verbunden, der Ausgang geht in einen Parallel-Schaltkreis aus einem 220Ohm Widerstand und 100nF Kondensator. Dies sollte verlässlichere (und geglättete) Messwerte liefern.
|-
|Das I2C-LCD-Display musste natürlich ebenfalls mit 5V/GND verbunden werden. Zudem gibt es einen SCL-(Serial-Clock)-Pin und einen SDL-(Serial-Data)-Pin. Diese beiden Pins wurden an die entsprechenden Pins am Arduino angeschlossen. Somit konnte das Display Text, Zahlen und Messwerte ausgeben.
|-
|Die 3 LEDs (rot, gelb, grün) wurden über einen Vorwiderstand von 220 Ohm und auf die DIGITAL-Pins 4,5 und 6 gelegt. Dies machte die Programmierung entsprechend einfach: Der jeweilige Pin wurde auf HIGH gesetzt, damit leuchtete die zugehörige LED dann.
|-
|Der SIGNAL-Ausgang vom Temperatursensor ging auf ANALOG-0, der SIGNAL-Ausgang vom Tropfensensor wurde auf ANALOG-1 gesetzt.
|-
|Als Spannungsquelle dient eine 9V-Batterie.
|-
|[[Datei:HWS-Verschaltung-LEDS.PNG|mitte|mini|800px|Abb4. Verschaltung der LEDs]]
|-
|Die Software wurde in Arduino (bzw. C) programmiert. Das Programm beinhaltete die Einbindung von Bibliotheken für das LCD-Display, sowie das Setup für das Display und die verschiednenen PinModes.
|-
|Die measure() Funktion sorgt dafür, dass das Anemometer über eine Zeitmessung auf die jeweilige Windgeschwindigkeit kommt. Innerhalb der Loop-Funktion erfolgt dann das Auslesen von Tropfensensor und Temperatursensor, sowie das Beschreiben des Displays. Außerdem erfolgt hier das setzen des HIGH-Signals auf PIN 4/5 oder 6. Je nachdem, welche Kondition wahr ist (if-Abfrage) wird ein anderer PIN auf HIGH gesetzt und eine andere LED leuchtet auf. Die jeweiligen Grenzen für die verschiedenen Konditionen wurden durch systematisches Testen festgelegt.
|-
|Das Programm wurde insgesamt so gehalten, dass man bestimmte (kommentierte) Teile aus,- und einkommentieren kann, sodass die LEDs auf 3 verschiedene Messgrößen (hier Temperatur, Regen und Wind) reagieren können.
|-
|[[Datei:HWS-Programm-Teil1.PNG|links|mini|400px|Abb5. Programm (Teil 1 von 4)]]
|[[Datei:HWS-Programm-Teil2.PNG|links|mini|400px|Abb6. Programm (Teil 2 von 4)]]
|-
|[[Datei:HWS-Programm-Teil3.PNG|links|mini|400px|Abb7. Programm (Teil 3 von 4)]]
|[[Datei:HWS-Programm-Teil4.PNG|links|mini|400px|Abb8. Programm (Teil 4 von 4)]]
|-
|}


== Komponententest ==
== Komponententest ==
{|
|Alle benötigten Bauteile wurden auf ihre Funktion hin untersucht. Dazu wurde jeder Sensor einzeln (und allein) an den Arduino Uno angeschlossen, und mit einem einfachen Test,- bzw. Ausleseprogramm getestet.
|-
|Dies erwies sich im nachhinein als sehr sinnvoll. Beim ersten Anschließen des Temperatursensors vertauschten wir unwissentlich den 5V/GND Pin, und der Sensor brannte tatsächlich durch. Hier musste ein neuer Temperatursensor bestellt werden.
|-
|Außerdem konnten durch dieses systematische Austesten die Sensorwerte für verschiedene Szenarien (z.B. starker Wind, schwacher Regen) bestimmt werden. Ebendiese Sensorwerte sollten als Basis für die if/else-if/else Abfragen für die Ansteuerung der LEDs dienen.
|-
|}


== Ergebnis ==
== Ergebnis ==
{|-
|Das Ergebnis unseres Projektes ist eine Wetterstation, die Windgeschwindigkeit, Regenstärke und Temperatur anzeigt. Je nach gewähltem Programm werden LEDs angesteuert, die Anzeigen, ob ein Messwert im grünen - gelben - oder roten Bereich liegt.
|-
|[[Datei:HWS.PNG|800px|links|Abb9. Die fertige HWS]]
|-
|[[Datei:Test-HWS.PNG|800px|links|Abb10. Test der HWS]]
|-
|}


== Zusammenfassung ==
== Zusammenfassung ==
=== Lessons Learned ===
=== Lessons Learned ===
{|-
|Das Fachpraktikum Elektrotechnik (5. Semester) lehrte uns einige wichtige Dinge, darunter fallen:
|-
|1.Sensoren geben nicht immer sofort richtige Messwerte aus.
|-
|Viele Messwerte mussten erst umgerechnet werden oder gar über Zeitmessung erzeugt werden. Dabei fiel auch auf, dass Signale von Sensoren geglättet werden müssen, um ein sichereres Ergebnis zu liefern. So ergaben die Werte des Anemometers ohne Verschaltung über einen Kondensator weniger Sinn.
|-
|2.Änderungen an der Verkabelung sollten nur in ausgeschaltetem Zustand erfolgen.
|-
|Wir versuchten (insbesondere zu Beginn des Projektes) hin und wieder Änderungen an der Verkabelung bei eingeschaltetem System vorzunehmen. Das Ergebnis war meistens, dass das LCD-Display nach kurzer Zeit Symbole aller Art anzeigte und Messwerte hin und wieder auch aus der Norm fielen.
|-
|3.CAD-Design und 3D-Druck
|-
|Das Modell für das Gehäuse konnte relativ problemlos erstellt werden. Es war nur zu beachten, dass (insbesondere runde) Geometrien sich beim 3D-Druck verziehen/schrumpfen können. Die Aufnahme für das Anemometer musste mehrmals probeweise erstellt werden.
|-
|4."Es gibt nichts, was noch nicht mit einem Arduino realisiert wurde."
|-
|Die wichtigste Erkenntnis diese Projektes war jedoch, dass die Welt des Arduino scheinbar unendlich ist. Im Internet lassen sich allerlei Anleitungen zu verschiedensten Projekten finden. Bei Problemen und Fragestellungen KÖNNEN Forumseinträge, Blogs etc. sehr hilfreich sein und das Verständnis vertiefen. Ein Blick in die zugehörige Literatur wirkt jedoch auch wahre Wunder.
|-
|}


== Projektunterlagen ==
== Projektunterlagen ==
=== Projektplan ===
=== Projektplan ===
{|-
|[[Datei:Projektplan-HWS2.png|800px|links|Abb10. Projektplan der HWS]]
|-
|}
=== Projektdurchführung ===
=== Projektdurchführung ===


== YouTube Video ==
== YouTube Video ==
{|-
|https://youtu.be/zS0xnUgW5Lk
|-
|}


== Weblinks ==
== Weblinks ==


== Literatur ==
== Literatur ==
{|-
|1. https://www.aeq-web.com/arduino-anemometer-wind-sensor/
|-
|2. https://blog.arduino.cc/2018/04/09/a-3d-printed-personal-weather-station/?queryID=undefined
|-
|3. Arduino lernen - Anleitungen mit Praxisaufgaben und Beispielen, Ralf Snieders, 5. Auflage
|-
|}





Aktuelle Version vom 11. Januar 2022, 07:55 Uhr

Autoren: Dennis Kononenko & Markus Belsch
Betreuer: Prof. Göbel & Prof. Schneider


→ zurück zur Übersicht: Kategorie:ProjekteET_MTR_BSE_WS2021


Einleitung

Die "Home Weather Station (HWS)" ist ein Projekt, welches im Rahmen des GET Fachpraktikums im 5. Semester des Studiengang Mechatronik erstellt wurde. Das Ziel der HWS ist es lokale Wetterdaten, wie Windgeschwindigkeit, Temperatur, Niederschlag, und Luftfeuchtigkeit zu sammeln und auf einem Bildschirm anzuzeigen.

Peppiges Bild

Anforderungen

ID Inhalt Ersteller
1 Messung von Windgeschwindigkeit, Niederschlag, Temperatur, Luftfeuchtigkeit Dennis Kononenko & Markus Belsch
2 Auswertung und Umrechnung der gemessenen Daten Dennis Kononenko & Markus Belsch
3 Anzeigen von Windgeschwindigkeit, Regenmenge, Temperatur, Luftfeuchtigkeit auf Display Dennis Kononenko & Markus Belsch
4 Wetterfeste Konstruktion (Gehäuse) Dennis Kononenko & Markus Belsch

Funktionaler Systementwurf/Technischer Systementwurf

Sensor Funktion
Anemometer Eingebauter Gleichstrommotor erzeugt messbare Spannung, je schneller die Drehbewegung, desto mehr Spannung
Tropfensensor Wasserkontakt verbindet Leiterbahnen auf Sensor, dadurch erhöht sich der Stromfluss
Temperatursensor Messung über temperaturabhängigen Widerstand
Luftfeuchtigkeit Erhöhte Luftfeuchtigkeit sorgt für veränderte Eigenschaften des Dielektrikums, und als Folge ändert sich die Kapazität des Kondensators
Abb1. Erste Idee für die Home Weather Station
Abb2. Systementwurf




Komponentenspezifikation

Komponente Beschreibung
Arduino Uno Standard Arduino-Uno
Breadboard Es wurden 2 Breadboards benötigt. Das Erste befindet sich im Gehäuse und dient als Anschluss für die +/- Eingänge der verschiedenen Sensoren, sowie als Verschaltung für das Anemometer. Das Zweite Breadboard befindet sich auf der HWS und birgt die 3 LEDs.
Anemometer Das Anemometer stammt vom Hersteller Froggit (Modellnummer: WD321). Das Anemometer liefert keinen direkten Messwert in m/s. Dieser muss vielmehr mittels Software umgerechnet werden. (siehe Kapitel Umsetzung-SW)
Tropfensensor Der Tropfensensor entspricht demjenigen aus dem Funduino-Baukasten. Er gibt Messwerte im Bereich von 0 bis 1023 aus, je nach Menge an Wasser auf dem Sensor. Auf dem Sensor befinden sich parallel verlaufende Kontaktstellen. Sobald ein Wassertropfen auf dem Sensor gelandet ist, ist eine leitende Verbindung zwischen den Kontaktstellen hergestellt. Daraus wird dann ein analoges Signal abgeleitet.
Temperatursensor Der Temperatursensor entspricht demjenigen aus dem Funduino-Baukasten. ACHTUNG: Der Sensor muss unbedingt richtig herum angeschlossen werden: Von der flachen Seite des Sensor aus gesehen: links - 5V / mitte - Signal / rechts - GND. Bei umgekehrtem 5V/GND kann der Sensor (wie bei Durchführung dieses Projektes) durchbrennen.
I2C-LCD Das LCD-Display entspricht demjenigen aus dem Funduino-Baukasten. Auf der Rückseite kann ein Potentiometer (dient der Einstellung vom Kontrast) mittels Kreuz-Schraubendreher eingestellt werden.
Widerstand Für das Projekt wurden 2x 220Ohm Widerstände benötigt
Kondensator Ein 100nF Kondensator wurde benötigt, um das Messsignal vom Anemometer zu glätten und dadurch etwas verlässlichere Werte zu erhlaten.
LEDs 3 LEDs (grün, gelb, rot) sollten den "Gefahrengrad" der jeweiligen Messung (Regen, Temperatur, Wind) anzeigen.

Umsetzung (HW/SW)

Abb3. Verschaltung der HWS
Abb3. Verschaltung der HWS
Die Verschaltung wurde im obigen Bild mit dem Fritzing-Tool dargestellt.
Das Anemometer besitzt 1 Eingang und 1 Ausgang. Der Eingang ist direkt mit 5V verbunden, der Ausgang geht in einen Parallel-Schaltkreis aus einem 220Ohm Widerstand und 100nF Kondensator. Dies sollte verlässlichere (und geglättete) Messwerte liefern.
Das I2C-LCD-Display musste natürlich ebenfalls mit 5V/GND verbunden werden. Zudem gibt es einen SCL-(Serial-Clock)-Pin und einen SDL-(Serial-Data)-Pin. Diese beiden Pins wurden an die entsprechenden Pins am Arduino angeschlossen. Somit konnte das Display Text, Zahlen und Messwerte ausgeben.
Die 3 LEDs (rot, gelb, grün) wurden über einen Vorwiderstand von 220 Ohm und auf die DIGITAL-Pins 4,5 und 6 gelegt. Dies machte die Programmierung entsprechend einfach: Der jeweilige Pin wurde auf HIGH gesetzt, damit leuchtete die zugehörige LED dann.
Der SIGNAL-Ausgang vom Temperatursensor ging auf ANALOG-0, der SIGNAL-Ausgang vom Tropfensensor wurde auf ANALOG-1 gesetzt.
Als Spannungsquelle dient eine 9V-Batterie.
Abb4. Verschaltung der LEDs
Die Software wurde in Arduino (bzw. C) programmiert. Das Programm beinhaltete die Einbindung von Bibliotheken für das LCD-Display, sowie das Setup für das Display und die verschiednenen PinModes.
Die measure() Funktion sorgt dafür, dass das Anemometer über eine Zeitmessung auf die jeweilige Windgeschwindigkeit kommt. Innerhalb der Loop-Funktion erfolgt dann das Auslesen von Tropfensensor und Temperatursensor, sowie das Beschreiben des Displays. Außerdem erfolgt hier das setzen des HIGH-Signals auf PIN 4/5 oder 6. Je nachdem, welche Kondition wahr ist (if-Abfrage) wird ein anderer PIN auf HIGH gesetzt und eine andere LED leuchtet auf. Die jeweiligen Grenzen für die verschiedenen Konditionen wurden durch systematisches Testen festgelegt.
Das Programm wurde insgesamt so gehalten, dass man bestimmte (kommentierte) Teile aus,- und einkommentieren kann, sodass die LEDs auf 3 verschiedene Messgrößen (hier Temperatur, Regen und Wind) reagieren können.
Abb5. Programm (Teil 1 von 4)
Abb6. Programm (Teil 2 von 4)
Abb7. Programm (Teil 3 von 4)
Abb8. Programm (Teil 4 von 4)

Komponententest

Alle benötigten Bauteile wurden auf ihre Funktion hin untersucht. Dazu wurde jeder Sensor einzeln (und allein) an den Arduino Uno angeschlossen, und mit einem einfachen Test,- bzw. Ausleseprogramm getestet.
Dies erwies sich im nachhinein als sehr sinnvoll. Beim ersten Anschließen des Temperatursensors vertauschten wir unwissentlich den 5V/GND Pin, und der Sensor brannte tatsächlich durch. Hier musste ein neuer Temperatursensor bestellt werden.
Außerdem konnten durch dieses systematische Austesten die Sensorwerte für verschiedene Szenarien (z.B. starker Wind, schwacher Regen) bestimmt werden. Ebendiese Sensorwerte sollten als Basis für die if/else-if/else Abfragen für die Ansteuerung der LEDs dienen.

Ergebnis

Das Ergebnis unseres Projektes ist eine Wetterstation, die Windgeschwindigkeit, Regenstärke und Temperatur anzeigt. Je nach gewähltem Programm werden LEDs angesteuert, die Anzeigen, ob ein Messwert im grünen - gelben - oder roten Bereich liegt.
Abb9. Die fertige HWS
Abb9. Die fertige HWS
Abb10. Test der HWS
Abb10. Test der HWS

Zusammenfassung

Lessons Learned

Das Fachpraktikum Elektrotechnik (5. Semester) lehrte uns einige wichtige Dinge, darunter fallen:
1.Sensoren geben nicht immer sofort richtige Messwerte aus.
Viele Messwerte mussten erst umgerechnet werden oder gar über Zeitmessung erzeugt werden. Dabei fiel auch auf, dass Signale von Sensoren geglättet werden müssen, um ein sichereres Ergebnis zu liefern. So ergaben die Werte des Anemometers ohne Verschaltung über einen Kondensator weniger Sinn.
2.Änderungen an der Verkabelung sollten nur in ausgeschaltetem Zustand erfolgen.
Wir versuchten (insbesondere zu Beginn des Projektes) hin und wieder Änderungen an der Verkabelung bei eingeschaltetem System vorzunehmen. Das Ergebnis war meistens, dass das LCD-Display nach kurzer Zeit Symbole aller Art anzeigte und Messwerte hin und wieder auch aus der Norm fielen.
3.CAD-Design und 3D-Druck
Das Modell für das Gehäuse konnte relativ problemlos erstellt werden. Es war nur zu beachten, dass (insbesondere runde) Geometrien sich beim 3D-Druck verziehen/schrumpfen können. Die Aufnahme für das Anemometer musste mehrmals probeweise erstellt werden.
4."Es gibt nichts, was noch nicht mit einem Arduino realisiert wurde."
Die wichtigste Erkenntnis diese Projektes war jedoch, dass die Welt des Arduino scheinbar unendlich ist. Im Internet lassen sich allerlei Anleitungen zu verschiedensten Projekten finden. Bei Problemen und Fragestellungen KÖNNEN Forumseinträge, Blogs etc. sehr hilfreich sein und das Verständnis vertiefen. Ein Blick in die zugehörige Literatur wirkt jedoch auch wahre Wunder.

Projektunterlagen

Projektplan

Abb10. Projektplan der HWS
Abb10. Projektplan der HWS

Projektdurchführung

YouTube Video

https://youtu.be/zS0xnUgW5Lk

Weblinks

Literatur

1. https://www.aeq-web.com/arduino-anemometer-wind-sensor/
2. https://blog.arduino.cc/2018/04/09/a-3d-printed-personal-weather-station/?queryID=undefined
3. Arduino lernen - Anleitungen mit Praxisaufgaben und Beispielen, Ralf Snieders, 5. Auflage




→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)