Home Weather Station: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(69 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 23: | Zeile 23: | ||
! style="font-weight: bold;" | Inhalt | ! style="font-weight: bold;" | Inhalt | ||
! style="font-weight: bold;" | Ersteller | ! style="font-weight: bold;" | Ersteller | ||
|+ style = "text-align: left"| | |+ style = "text-align: left"| | ||
|- | |- | ||
Zeile 31: | 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 69: | Zeile 54: | ||
|- | |- | ||
|- | |- | ||
| | | Tropfensensor | ||
| Wasserkontakt verbindet Leiterbahnen auf Sensor, dadurch erhöht sich der Stromfluss | | Wasserkontakt verbindet Leiterbahnen auf Sensor, dadurch erhöht sich der Stromfluss | ||
|- | |- | ||
Zeile 97: | Zeile 82: | ||
! style="font-weight: bold;" | Komponente | ! style="font-weight: bold;" | Komponente | ||
! style="font-weight: bold;" | Beschreibung | ! style="font-weight: bold;" | Beschreibung | ||
|+ style = "text-align: left"| | |+ style = "text-align: left"| | ||
|Arduino Uno | |Arduino Uno | ||
Zeile 104: | Zeile 88: | ||
|Breadboard | |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. | |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 | |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. | |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 | |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 | |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 | |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 | |Widerstand | ||
| | |Für das Projekt wurden 2x 220Ohm Widerstände benötigt | ||
|- | |- | ||
|Kondensator | |Kondensator | ||
| | |Ein 100nF Kondensator wurde benötigt, um das Messsignal vom Anemometer zu glätten und dadurch etwas verlässlichere Werte zu erhlaten. | ||
|- | |- | ||
|LEDs | |LEDs | ||
| | |3 LEDs (grün, gelb, rot) sollten den "Gefahrengrad" der jeweiligen Messung (Regen, Temperatur, Wind) anzeigen. | ||
|- | |- | ||
|} | |} | ||
Zeile 139: | Zeile 114: | ||
== Umsetzung (HW/SW) == | == Umsetzung (HW/SW) == | ||
{| | {| | ||
| | |- | ||
|[[Datei:HWS-Fritzing.PNG| | |[[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.
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 | ||
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)
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. | |
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. | |
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. |
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
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)