INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 2 Bewertungen - 3.5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wetterstation mit LC-Display I2C --> Feuchte, Temp, Wind, Druck, Tau, Tendenz
22.08.2013, 14:32 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2014 17:33 von Wampo.)
Beitrag #1
Rainbow Wetterstation mit LC-Display I2C --> Feuchte, Temp, Wind, Druck, Tau, Tendenz
Hallo Servus Griatze,

ich wollte mal mein letztes Projekt vorstellen, DIE WETTERSTATION! Smile

Die Wetterstation besteht aus einem DHT22 Sensor der sowohl Feuchte als auch Temperatur Messen kann und einem Windsensor und natürlich nicht zu vergessen alles wird schön brav auf einen TV-AV-OUT ausgegeben. Big Grin

Die Wetterstation bekommt momentan wieder ein paar Updates, es kommen hinzu:
4x20 LC Display über I2C
Barometer über I2C
Helligkeitssensor über Analog abfrage
und ein Regensensor ebenfalls über Analog abfrage

Momentan ist der Code ca. 12.096 Bytes groß auf einem ARDUINO UNO. Ich denke mal ein richtiger Pro kann den Code garantiert noch verkleinern. ;-)

Wenn dann mal alles Fertig ist sollen all diese Sensoren über ein Netzwerk übertragen werden und über das Netzwerk sollen dann die Daten gespeichert werden und sie sollen die Dachfenster Steuern.

Und wir dürfen die TV funktion nicht ins dunkle rücken:
Die Wetterstation kann auf allen Handelsüblichen TV´s mit einem AV Chinch Eingang (gelber Chinch) begutachtet werden.

Lange rede kurzer Code, hier der aktuelle Code mit Temperatur, Feuchte und Wind:


#include <fontALL.h>
#include <TVout.h>
#include "DHT.h"
#define DHTPIN A0
#define DHTTYPE DHT22

//für Windmesser
const int windPin = 3; // Sensor am Pin 3
const float windFactor = 2.4; //Faktor = 2,4 km/h pro RPM
const int measureTime = 3;
volatile unsigned int windCounter = 0;
float windSpeed = 0.0;
unsigned long time = 0;

TVout TV;

DHT dht(DHTPIN, DHTTYPE);

void countWind() {
windCounter ++;
}

void setup()
{
TV.begin(_PAL, 128, 56); //standart 128x96---ich benutze aber 128x56
TV.select_font(font6x8);
dht.begin();
}

void loop()
{
//Werte für den Windmesser
windCounter = 0;
time = millis();
//Zähl-Interrupt aktivieren
attachInterrupt(1,countWind,RISING);
//Abwarten Messzeitraums
delay(1000 * measureTime);
//Zähl-Interrupt deaktivieren
detachInterrupt(1);
//Zeit bestimmen
time = (millis() - time) / 1000;
windSpeed = (float)windCounter / (float)measureTime * windFactor;

// Werte für die Temperatur und Feuchtigkeit
float h = dht.readHumidity(); //Luftfeuchte auslesen
float t = dht.readTemperature(); //Temperatur auslesen
if (isnan(t) || isnan(h))

{
TV.clear_screen();
TV.println(" !!WARNING!!");
TV.println(" ");
TV.println("NO DHT BUS AVAILABLE.\nCHECK ALL CABLES\nFOR RIGHT CONNECTION!");
}
else
{
TV.clear_screen();
TV.print("Humid: ");
TV.print(h);
TV.println(" %");
TV.println("-----------------");
TV.print("Temp: ");
TV.print(t);
TV.println(" *C");
TV.println("-----------------");
TV.print("Wind: ");
TV.print(windSpeed);
TV.println(" km/h");
}

delay(10000);
}

Wer Interesse hat und die Station nachbauen will der kann sich gerne Melden wenn er hilfe brauch bei der Beschaltung oder dem Code...Idea

An dieser Stelle danke für eure Aufmerksamkeit

Greez Wampo


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.08.2013, 23:02
Beitrag #2
RE: Wetterstation mit DHT22 und Windsensor auf TV-OUT
Hallo Wampo,

mir gefällt dein Projekt sehr gut, gerade auch mit der Anbindung an den Fernseher.
Gibt es einen Schaltplan und eine Teileliste?
Welchen Windsensor verwendest Du?
Das mit den zukünftigen Erweiterungen hört sich auf jeden Fall gut an, ich werde das weiter verfolgen.

neblige Grüße Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.08.2013, 14:04
Beitrag #3
RE: Wetterstation mit DHT22 und Windsensor auf TV-OUT
Schön das dir das Projekt gefällt.
Als Windsensor habe ich momentan eine eigenkonstruktion aus Lego und Kaffeemesslöffel einen Reed Sensor und Magneten der die RPM´s registriert.
Funktioniert soweit auch ganz gut, habe mal gegengemessen mit einem richtigen Windmesser und hatte nur ne abweichung von ca 2km/h, aber so genau nehm ichs da nicht, bin ja kein Pro Wetterfrosch! Wink
Jedoch ist das ja nichts für das Auge sondern wirkt eher Amateurhaft deshalb hier meine Lösung die schon bestellt ist aus der Bucht---> Artikelnummer:390361496069 , funktionsprinzip genau der gleiche wie bei einem Reed-Sensor, angeschlossen und ausgelesen wird dieser wie ein Button im Arduino.

Hab noch den aktuellen Schaltplan und das PinMapping vom Arduino angehängt.
Teileliste ist ja soweit bekannt den rest denke ich mal kann man sich aus dem Schaltplan herraus lesen.


Sobald LCD, Baro und der rest da ist gehts dann ans eingemachte und das ganze wird in ein Anschaubares ABS-Kunstoffgehäuse gepackt, bzw in zwei.
Eins was am Balkon hängt wo der DHT22, Barometer und Lichtsensor (ja ich hab mich noch für einen Lichtsensor entschieden, für die spätere Steuerung der Dachfenster wegen Tag/Nacht/Sonne da/Sonne nicht da -Erkennung) verbaut wird und einen wo der Atmel Mega 328-PU, Display und 5V Spannungsregler drin sitzt. Die beiden Kästen werden dann nur über ein LAN Kabel miteinander verbunden.

Ich denke aber das ich dann die TV Funktion weglassen werde!

Greez Wampo


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.08.2013, 23:14
Beitrag #4
RE: Wetterstation mit DHT22 und Windsensor auf TV-OUT
Erst mal Danke für den Schaltplan. Mal sehen ob ich das hinbekomme aber warum auch nicht, ist ja gut erkenntlich.

Da hast Du dir ja einiges vorgenommen. Ich werde das auf jeden Fall verfolgen und eventuell auch nachbauen.
Es wäre auch gut, wenn Du immer mal ein Update bringst.
Jedenfalls wünsche ich dir viel Spaß beim basteln.

Grüße vom nebel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.08.2013, 00:06
Beitrag #5
RE: Wetterstation mit DHT22 und Windsensor auf TV-OUT
Updates werden auf jeden fall kommen, werde weitere Schritte und Anleitungen dazu immer wieder mal reinstellen und natürlich das endprodukt!Wink

Greez
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.09.2013, 16:54
Beitrag #6
RE: Wetterstation mit DHT22 und Windsensor auf TV-OUT
So und weiter gehts, kleines Update V.1.3!
Ausgabe von den aktuellen Volts die anliegen um auch diese voll im überblick zu haben. Gemessen werden die Volts über nen Spannungsteiler 50k & 4k4 OHM.
Funktioniert einwandfrei, bei ner gegenmessung mit einem Messgerät sind gerade einmal +/- 0.02 Volt abweichung herrausgekommen.

Der Windsensor ist derweil auch eingetroffen und funktioniert einwandfrei. Leider ist LCD, Barometer usw noch iwie alles unterwegs....HongKong und Shenzen sei dank. Dodgy

Ich hoffe aber das im laufe der nächsten Woche solangsam alles eintrudelt.

Im unteren Teil und Anhang dann noch Bilder und der Aktualisierte Code!

PS: Hat jemand schon mal Probleme mit nem DHT22 gehabt das dieser von heut auf morgen nur noch 99.90% Luftfeuchte und die aktuelle Temperatur ausgibt bzw dann mal gar nich geht? Es ist zwar schon ein neuer bestellt aber ich vermute das der jetzige die mücke gemacht hat!HuhConfused


Der Code:

/*
WETTERSTATION MIT VIELEN SENSOREN UND AUSGABE ÜBER DISPLAY ODER TV-OUT.

Version 1.2, 24.08.13: Windsensor, Temperatursensor und Feuchtesensor. Anpassungen im Setup: StartUp Display für 5 Sec mit Versionsnummer und Bootvorgang. SketchGröße: 12134Bytes
Version 1.3, 15.09.13: Hinzugefügt wurden die Voltmessung von 0-12V und Ausgabe im Display, Entfernen der Trennlinien zwischen den Werten, Aktualisierung in 5sec Takt, StartUp auf 2sec & Optimierung. SketchGröße: 12418Bytes

designed and Compiled by Daniel Agocs
*/
//TV-OUT
#include <fontALL.h>
#include <TVout.h>

//Temp & Humid
#include "DHT.h"
#define DHTPIN A0
#define DHTTYPE DHT22

//Voltmessung
int analogInput = A1;
float vout = 0.0;
float vin = 0.0;
float R1 = 49850.0; // !! resistance of R1, normal 50k!!
float R2 = 4370.0; // !! resistance of R2, normal 4k3!!
int value = 0;

//Windmesser
const int windPin = 3; // Sensor am Pin 3
const float windFactor = 2.4; //Faktor = 2,4 km/h pro RPM
const int measureTime = 3;
volatile unsigned int windCounter = 0;
float windSpeed = 0.0;
unsigned long time = 0;

TVout TV;

DHT dht(DHTPIN, DHTTYPE);

void countWind() {
windCounter ++;
}


void setup()

{

TV.begin(_PAL, 128, 56); //standart 128x96---ich benutze aber 128x56
TV.select_font(font6x8);
pinMode(analogInput, INPUT);
dht.begin();
TV.println("Weather-Station V1.3");
TV.println("---------------------");
TV.println(" Compiled by Wampo");
TV.println(" Boot System.....");
}

void loop()

{
value = analogRead(analogInput);
vout = (value * 4.7) / 1024.0;
vin = vout / (R2/(R1+R2));

//Werte für den Windmesser
windCounter = 0;
time = millis();
//Zähl-Interrupt aktivieren
attachInterrupt(1,countWind,RISING);
//Abwarten Messzeitraums
delay(1000 * measureTime);
//Zähl-Interrupt deaktivieren
detachInterrupt(1);
//Zeit bestimmen
time = (millis() - time) / 1000;
windSpeed = (float)windCounter / (float)measureTime * windFactor;

float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(t) || isnan(h))
{
TV.clear_screen();
TV.println("Humid: ////%");
TV.println("Temp: ////*C");
TV.print("Wind: ");
TV.print(windSpeed);
TV.println(" km/h");
TV.print("Volt: ");
TV.print(vin);
TV.println(" V");

}
else
{
TV.clear_screen();
TV.print("Humid: ");
TV.print(h);
TV.println(" %");
TV.print("Temp: ");
TV.print(t);
TV.println(" *C");
TV.print("Wind: ");
TV.print(windSpeed);
TV.println(" km/h");
TV.print("Volt: ");
TV.print(vin);
TV.println(" V");
}
delay(5000);
}


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.09.2013, 21:53
Beitrag #7
Thumbs Up RE: Wetterstation mit DHT22 und Windsensor auf TV-OUT
Hallo Wampo,

das schaut doch schon mal richtig gut aus, bitte weiter so. Smile

Ich habe mir ebenfalls ein paar Teile besorgt und etwas gebastelt.
Einzeln funktionieren die verschiedenen Sensoren schon und nun möchte ich die Werte auf meinem 16/2 Display ausgeben und mit den Tastern des Displayshields zwischen den verschiedenen Sensoren umschalten.
Mal sehen wie ich das hinbekomme, habe noch keine richtige Idee dazu.
Entweder ein Menü aufbauen oder über einfache Abfrage der Taster am Shield.

Später sollen die Daten dann noch auf einer SD-Karte gespeichert werden und mit einem Zeitstempel versehen werden aber das ist momentan nicht so wichtig.

Mir ist mit dem DHT22 mal was ähnliches passiert (2-3 Tropfen Wasser sind reingelaufen) aber nach ordentlich ausblasen und noch einer Nacht trocknen geht der wieder ohne Probleme.

Ich wünsche dir weiterhin viel Erfolg und freue mich auf das nächste Update.

Gruß nebel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.09.2013, 17:47
Beitrag #8
RE: Wetterstation mit DHT22 und Windsensor auf TV-OUT
Also mein DHT is definitiv hin seit tagen nur noch stetige 99.90% oder gar keine werte. Außerdem da ja schon mein Luftdrucksensor und LCD eingetrudelt sind kann trau ich dem BMP085 als Luftdrucksensor und Temperatursensor mehr und der Zeigt ganz andere Werte . Wie ich allerdings den DHT geschossen hab kann ich mir selber nicht erklärenHuhHuh

Und nun zum eigentlichen: Wie ich ja oben schon erwähnt hab, is mein LCD und Drucksensor eingetroffen und die hab ich natürlich gleich eingespannt um ihre Arbeit verrichten zu können. Wink

Auf dem LCD sieht jetzt alles noch n bissl gequetscht und dabazt aus aber das werd ich iwann mal durch ein autoscroll ändern oder wie du es machen willst per Button, das werd ich aber noch sehen was mir dann besser gefällt.

Ich muss mal drauf hinweisen das im letzten Update ja die Voltmessung dazugekommen ist, nach langem Probieren hab ich aber gemerkt das die Voltmessung so dermaßen daneben ist, obwohl ich bei der letzten messung nur 0.2 Volt daneben lag. Komischer weise wenn am echten Multimeter die Spannung fällt, steigt sie beim Arduino( ich führe es mal auf falsche formel bzw. keine Vref hin)
Das heißt jetzt soviel wie: Die Volts sind zwar noch drin aber die messung kann man nicht ernst nehmen, ich muss da noch ein bisschen tüfteln bis ich echte werte rausbekomm. Ansonsten beinhaltet das Update die zwei neuen Komponenten (LCD und Baro) und TV-OUT fällt raus. Im späteren verlauf werd ich eventuell dann das TV OUT zuschaltbar machen... we will see.
Der Sketch hat sich allein wegen dem wechseln von TV Out auf LCD auf knappe 9000bytes verkleinert von den vorherigen 12500bytes, jedoch is der Sketch jetzt wieder genauso groß weil ja das Barometer mit drint ist.

Bitte drauf achten das für das Barometer und LCD die jeweiligen Library´s benötigt werden...
Für den BMP085 verwende ich den von Adafruit + Adafruit_Sensors
und für das LCD die LCD2004 Library oder LiquidCristal I2C Library

und hier der neue Sketch und im Anhang ein paar Pics dazu:

/*
WETTERSTATION MIT VIELEN SENSOREN UND AUSGABE ÜBER DISPLAY ODER TV-OUT.

Version 1.2, 24.08.13: Windsensor, Temperatursensor und Feuchtesensor. Anpassungen im Setup: StartUp Display für 5 Sec mit Versionsnummer und Bootvorgang. SketchGröße: 12134Bytes
Version 1.3, 15.09.13: Hinzugefügt wurden die Voltmessung von 0-12V und Ausgabe im Display, Entfernen der Trennlinien zwischen den Werten, Aktualisierung in 5sec Takt, StartUp auf 2sec & Optimierung. SketchGröße: 12418Bytes
Version 2.1, 17.09.13: TV OUT mit LCD über I2C getauscht, Barometer(BMP085) SketchGröße: 11804Bytes
designed and Compiled by Daniel Agocs
*/
//LCD Out
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//Temp & Humid
#include "DHT.h"
#define DHTPIN A0
#define DHTTYPE DHT22

//Druck und Temp
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>

//Voltmessung
int analogInput = A1;
float vout = 0.0;
float vin = 0.0;
float R1 = 3267.0; // !! resistance of R1, normal 50k!!
float R2 = 1095.0; // !! resistance of R2, normal 4k3!!
int value = 0;

//Windmesser
const int windPin = 3; // Sensor am Pin 3
const float windFactor = 2.4; //Faktor = 2,4 km/h pro RPM
const int measureTime = 3;
volatile unsigned int windCounter = 0;
float windSpeed = 0.0;
unsigned long time = 0;

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
Adafruit_BMP085 bmp = Adafruit_BMP085(10085);
DHT dht(DHTPIN, DHTTYPE);

void countWind() {
windCounter ++;
}


void setup()

{
pinMode(analogInput, INPUT);
dht.begin();
bmp.begin();

lcd.begin (20,4);
lcd.print("Wetter-Station V2.1");
lcd.setCursor ( 0, 2 );
lcd.print("Compiled by Wampo");
lcd.setCursor ( 0, 3 );
lcd.print("Read Defined Sensors");

for(int i = 0; i< 5; i++)
{
lcd.backlight();
delay(150);
lcd.noBacklight();
delay(150);
}
lcd.backlight(); // finish with backlight on

}

void loop()

{
value = analogRead(analogInput);
vout = (value * 5) / 1024.0;
vin = vout / (R2/(R1+R2));

//Werte für den Windmesser
windCounter = 0;
time = millis();
//Zähl-Interrupt aktivieren
attachInterrupt(1,countWind,RISING);
//Abwarten Messzeitraums
delay(1000 * measureTime);
//Zähl-Interrupt deaktivieren
detachInterrupt(1);
//Zeit bestimmen
time = (millis() - time) / 1000;
windSpeed = (float)windCounter / (float)measureTime * windFactor;

sensors_event_t event;
bmp.getEvent(&event);

float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(t) || isnan(h))
{
lcd.clear();
lcd.print("H:////%");
lcd.setCursor ( 0, 1 );
lcd.print("T:////*C");
lcd.setCursor ( 0, 2 );
lcd.print("W:");
lcd.print(windSpeed);
lcd.print("km/h");
lcd.setCursor ( 0, 3 );
lcd.print("V:");
lcd.print(vin);
lcd.print("V");
lcd.setCursor ( 8, 3 );
lcd.print("P:");
lcd.print(event.pressure);
lcd.print("hPa");


}
else
{
lcd.clear();
lcd.print("H:");
lcd.print(h);
lcd.print("%");
lcd.setCursor ( 0, 1 );
lcd.print("T:");
lcd.print(t);
lcd.print("*C");
lcd.setCursor ( 0, 2 );
lcd.print("W:");
lcd.print(windSpeed);
lcd.print("km/h");
lcd.setCursor ( 0, 3 );
lcd.print("V:");
lcd.print(vin);
lcd.print("V");
lcd.setCursor ( 8, 3 );
lcd.print("P:");
lcd.print(event.pressure);
lcd.print("hPa");

}
delay(5000);
}


Greez Wampo


Angehängte Datei(en) Thumbnail(s)
                   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  7 Zoll Display und NRF24 Propleme schlappy82 15 404 28.11.2016 17:10
Letzter Beitrag: hotsystems
  Grafiken auf OLED-Display darstellen scritch 8 497 17.11.2016 13:33
Letzter Beitrag: scritch
  Graphisches Barometer mit e-Paper Display Bender 9 2.390 06.11.2016 06:10
Letzter Beitrag: Bender
  Wetterstation sascha35 19 4.658 18.12.2015 16:51
Letzter Beitrag: sascha35
Thumbs Up Facebook LCD (Like Crystal Display) mit Ethernet Shield Wampo 0 984 02.12.2015 23:05
Letzter Beitrag: Wampo
  E-Paper Display Xtremefly 7 2.968 22.07.2015 11:48
Letzter Beitrag: Xtremefly
  Substrat-Feuchtigkeitsmesser + Temp. und RLF Nifu 19 4.887 19.07.2015 11:39
Letzter Beitrag: MeisterQ
  Display 5" Xwill 26 10.460 04.06.2015 08:39
Letzter Beitrag: DaniDD
Sad Temperatur u. feuchtigkeit Webserver+speichern der Temp. u. Feuchti. auf sd Porblem!! TbO92 0 1.889 27.10.2014 10:14
Letzter Beitrag: TbO92
  Wechsel vom 16x2 auf 5110 Display? Mr.Q 8 4.499 25.10.2014 19:05
Letzter Beitrag: Mr.Q

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste