Das Arduino-Wetterstation / Thermostat

6 Schritt:Schritt 1: Der Arduino Schritt 2: Die LCD-Anzeige Schritt 3: Temperatur und Luftfeuchtigkeit Schritt 4: HLK-Steuer Schritt 5: Aktuelle Codes mit Anschlussanleitung Schritt 6: Arduino Clock Module

Das Arduino-Wetterstation / Thermostat
UPDATE: http://www.instructables.com/id/Temperature-and-Humidity-on-a-Graphical-LCD/

UPDATE: In Taupunkt Berechnungen

Ich war schon immer interessiert an der Überwachung meiner lokale Wetter gewesen, und bemerkt den Unterschied zwischen dem, was weather.com und accuweather.com glaube, meine lokale Wetter ist, und das, was ich aus dem Fenster zu sehen. Ich wollte auch eine bessere Kontrolle über meine Heizung und A / C-System. Als Computer-und Elektronik-Mutter, ich habe gespielt mit dem Arduino Mikrocontroller, und beschlossen, die mich interessieren, zu verschmelzen. So, hier geht die Dokumentation auf meinem Heim errichtet solarbetriebene Wetterstation (immer wieder modifiziert und erweitert) mit HVAC Control.

Schritt 1: Der Arduino



Das Arduino-Wetterstation / Thermostat

Das Arduino-Wetterstation / Thermostat

Der erste Schritt war Erlangung eines Arduino Board. Wir kauften uns von hacktronics.com. Nach der Arbeit durch die Tutorials auf ihrer Website, fühlte ich zuversichtlich, dass ich verstand die einfache Skript und Anschlusskonzepte und nach vorne bewegt.

Arduino ist eine Open-Source-Elektronik-Prototyping-Plattform auf Basis von flexiblen, einfach zu bedienende Hard- und Software. Es ist für Künstler, Designer, Bastler, und alle Interessierten in die Erstellung interaktiver Objekte oder Umgebungen vorgesehen. - Http://arduino.cc/

Das Arduino erfordert 5V zu laufen, und wir liefern diese mit unseren Pico Solar PV / Lithium-Batterie pack.Step 2: Die LCD-Anzeige

Das Arduino-Wetterstation / Thermostat

Ich brauchte die Fähigkeit, Temperatur, Luftfeuchtigkeit, Luftdruck und Zeit / Datum angezeigt, so nahm ich eine 4 Linie weiß auf blau LCD-Display aus Hacktronics. Ich habe ihre LCD-Tutorial, um es verbunden und zeigen einige Beispiel-Text auf dem Bildschirm.

// Zeichen LCD-Beispiel-Code
// Www.hacktronics.com

// Anschlüsse:
// Rs (LCD Pin 4) an Pin 12 Arduino
// Rw (LCD Pin 5) zu Stift 11 Arduino
// Aktivieren (LCD Pin 6), um den Stift 10 Arduino
// LCD Pin 15 bis Pin 13 Arduino
// LCD Stifte d4, d5, d6, d7 den Stiften 5, 4, 3, 2 Arduino
Liquid LCD (12, 11, 10, 5, 4, 3, 2);

int Backlight = 13; // Stift 13 wird die Hintergrundbeleuchtung zu steuern

Leere setup ()
{
pinMode (Hintergrundbeleuchtung, OUTPUT);
digital (Hintergrundbeleuchtung, HIGH); // Einzuschalten Hintergrundbeleuchtung. Ersetzen Sie "hoch" mit "LOW", um sie auszuschalten.
lcd.begin (16,2); // Spalten, Zeilen. benutzen 16,2 für einen 16x2 LCD usw.
lcd.clear (); // Mit einem leeren Bildschirm starten
lcd.setCursor (0,0); // Den Cursor auf die Spalte 0, Zeile 0 (die erste Zeile)
lcd.print ("Hallo Welt"); // Text, was auch immer Sie mögen. halte es sauber.
lcd.setCursor (0,1); // Den Cursor auf die Spalte 0, Reihe 1
lcd.print ("hacktronics.com");

//, Wenn Sie einen 4 Reihe LCD haben, kommentieren Sie diese Zeilen, die den unteren Zeilen zu schreiben
// Und ändern Sie die lcd.begin () Anweisung über.
//lcd.setCursor(0,2); // Den Cursor auf die Spalte 0, Reihe 2
//lcd.print("Row 3 ");
//lcd.setCursor(0,3); // Den Cursor auf die Spalte 0, Zeile 3
//lcd.print("Row 4 ");
}

Leere Schleife ()
{
}

Siehe http://www.hacktronics.com/Tutorials/arduino-character-lcd-tutorial.html zum eigentlichen Code als instructables bricht unsere beinhalten Aussagen.
Schritt 3: Temperatur und Luftfeuchtigkeit

Das Arduino-Wetterstation / Thermostat

Ich kaufte ein SHT21 Temperatur Feuchte-Sensor von MisensO.com. Dieser Chip verwendet die I2C-Protokoll für die Kommunikation. Ich fand einige Beispiel-Code im Netz, die es in die Arduino reden macht, aber es gibt an die serielle Schnittstelle an den PC. Ich änderte den Code für die Ausgabe an meinen LCD. Ich habe jetzt die Temperatur und Feuchtigkeit, die auf der LCD-Anzeige.

// Mit SHT21 Breakout von Misenso Geprüft
// SHT21 Pin SDA zu Arduino Analog Pin 4
// SHT21 Pin SCL zum Arduino Analog Pin 5
// SHT21 Pin GND zu GND Arduino
// SHT21 Pin VCC mit Arduion 3v (nicht 5 V)

lcd.begin (20,4); // Spalten, Zeilen. benutzen 16,2 für einen 16x2 LCD usw.
lcd.clear (); // Mit einem leeren Bildschirm starten
lcd.setCursor (0,0); // Den Cursor auf die Spalte 0, Zeile 0 (die erste Zeile)
lcd.print ("Feuchtigkeit:"); // Text, was auch immer Sie mögen. halte es sauber.
lcd.print (humidity.GetHumidity ());
lcd.setCursor (0,1); // Den Cursor auf die Spalte 0, Reihe 1
lcd.print ("Temp in C:");
lcd.print (humidity.GetTemperatureC ());
lcd.setCursor (0,2); // Den Cursor auf die Spalte 0, Reihe 2
lcd.print ("Temp in F:");
lcd.print (humidity.GetTemperatureF ());

Sehen http://arduinotronics.blogspot.com/2010/09/our-temperature-humidity-monitor-is.html zum eigentlichen Code als instructables bricht unsere beinhalten Aussagen. Sie werden die LibHumidity.h Bibliothek aus brauchen moderne Geräte für dieses Projekt. Schritt 4: HLK-Steuer

Das Arduino-Wetterstation / Thermostat

Nun, da ich weiß, was die Temperatur ist, muss ich kontrolliere meine A / C und Wärme auf der Grundlage, was ich will das Temp sein. Ich installierte eine RGB-LED als Platzhalter für die Relais werde ich die Installation. Wenn das System fordert Wärme, stellt sich die LED rot. Wenn es für die Kühlung erfordert, stellt sich die LED blau. Wenn es in unserem Komfortbereich, stellt sich grün.

if (humidity.GetTemperatureF () <60)
{
digital (RedLEDPin, LOW); // Die rote LED auf Sets
digital (BlueLEDPin, HIGH); // Die Blaue LED aus Sätze
digital (GreenLEDPin, LOW); // Die grüne LED-Sets

}
else if (humidity.GetTemperatureF ()> = 75)
{
digital (BlueLEDPin, LOW); // Die blaue LED-Sets
digital (RedLEDPin, HIGH); // Die rote LED-Sets
digital (GreenLEDPin, HIGH); // Die grüne LED-Sets
}
sonst
{
digital (GreenLEDPin, LOW); // Die grüne LED auf Sets
digital (BlueLEDPin, HIGH); // Die Blaue LED aus Sätze
digital (RedLEDPin, HIGH); // Die rote LED-Sets

}

Siehe http://arduinotronics.blogspot.com/2010/09/our-temperature-humidity-monitor-is.html zum eigentlichen Code als instructables bricht unsere beinhalten Aussagen.
Schritt 5: Aktuelle Codes mit Anschlussanleitung

Das Arduino-Wetterstation / Thermostat

Im Folgenden ist der Code, wie sie heute existiert. Ich bin das Hinzufügen eines zweiten SHT21 für Indoor / Outdoor Mess (bedeutet eine zweite I2C-Kanal Hacking, wie der SHT21 ist alles die gleiche Adresse haben, und kann nicht auf einem Kanal existiert), und ich warte immer noch auf meine Echtzeituhr-Chip und Luftdrucksensor aus gelangen Sparkfun.com (sie kam gestern, und ich werde auf diese am Wochenende zu arbeiten - 9-29-10). Ich wanderte das Projekt zu meinem neuen Mega 2560 (58 I / O-Leitungen) Arduino und die neue 0021-IDE installiert ist. Ich werde dieses instructable bearbeiten, wie sich das Projekt entwickelt.

// Anschlüsse:
// LCD Pin 1 bis Arduino GND
// LCD Pin 2 bis 5V Arduino
// LCD Pin 3 (Contrast) an GND
// Rs (LCD Pin 4) an Pin 12 Arduino
// Rw (LCD Pin 5) zu Stift 11 Arduino
// Aktivieren (LCD Pin 6), um den Stift 10 Arduino
// LCD Pin 15 bis Pin 13 Arduino
// LCD Stift 16, um Arduino GND
// LCD Stifte d4, d5, d6, d7 den Stiften 5, 4, 3, 2 Arduino

// Mit SHT21 Breakout von Misenso Geprüft
// SHT21 Pin SDA zu Arduino Analog Pin 4
// SHT21 Pin SCL zum Arduino Analog Pin 5
// SHT21 Pin GND zu GND Arduino
// SHT21 Pin VCC mit 3V (nicht 5 V) Arduino

// RGB-LED-
// Red Kathode an Pin 9 Arduino
// Blau Kathode an Pin 8 Arduino
// Grün Kathode an Arduino Pin 7
// Anode bis 270 Ohm-Widerstand auf 5V

# include
# include
# include

LibHumidity Luftfeuchtigkeit = LibHumidity (0);

Liquid LCD (12, 11, 10, 5, 4, 3, 2);

int Backlight = 13; // Stift 13 wird die Hintergrundbeleuchtung zu steuern
int RedLEDPin = 9; // Um ​​digitale Stift 9 LED verbunden
int BlueLEDPin = 8; // Um ​​digitale Stift 8 LED verbunden
int GreenLEDPin = 7; // Um ​​digitale Stift 7 LED verbunden

Leere setup ()
{
pinMode (Hintergrundbeleuchtung, OUTPUT);
digital (Hintergrundbeleuchtung, HIGH); // Einzuschalten Hintergrundbeleuchtung. Ersetzen Sie "hoch" mit "LOW", um sie auszuschalten.

// I2C
pinMode (16, Ausgang);
digital (16, LOW); // GND-Pin
pinMode (17, Ausgang);
digital (17, HOCH); // VCC Pin

// Furnace / AC-Anzeige
pinMode (RedLEDPin, OUTPUT); // Setzt den digitalen Stift als Ausgang
pinMode (BlueLEDPin, OUTPUT); // Setzt den digitalen Stift als Ausgang
pinMode (GreenLEDPin, OUTPUT); // Setzt den digitalen Stift als Ausgang

}

Leere Schleife ()
{
lcd.begin (20,4); // Spalten, Zeilen. benutzen 16,2 für einen 16x2 LCD usw.
lcd.clear (); // Mit einem leeren Bildschirm starten
lcd.setCursor (0,0); // Den Cursor auf die Spalte 0, Zeile 0 (die erste Zeile)
lcd.print ("Feuchtigkeit:"); // Text, was auch immer Sie mögen. halte es sauber.
lcd.print (humidity.GetHumidity ());
lcd.setCursor (0,1); // Den Cursor auf die Spalte 0, Reihe 1
lcd.print ("Temp in C:");
lcd.print (humidity.GetTemperatureC ());
lcd.setCursor (0,2); // Den Cursor auf die Spalte 0, Reihe 2
lcd.print ("Temp in F:");
lcd.print (humidity.GetTemperatureF ());
{
if (humidity.GetTemperatureF () <60)
{
digital (RedLEDPin, LOW); // Die rote LED auf Sets
digital (BlueLEDPin, HIGH); // Die Blaue LED aus Sätze
digital (GreenLEDPin, LOW); // Die grüne LED-Sets

}
else if (humidity.GetTemperatureF ()> = 75)
{
digital (BlueLEDPin, LOW); // Die blaue LED-Sets
digital (RedLEDPin, HIGH); // Die rote LED-Sets
digital (GreenLEDPin, HIGH); // Die grüne LED-Sets
}
sonst
{
digital (GreenLEDPin, LOW); // Die grüne LED auf Sets
digital (BlueLEDPin, HIGH); // Die Blaue LED aus Sätze
digital (RedLEDPin, HIGH); // Die rote LED-Sets

}
}

Verzögerung (20000);
}

Siehe http://arduinotronics.blogspot.com/2010/09/our-temperature-humidity-monitor-is.html zum eigentlichen Code als instructables bricht unsere beinhalten Aussagen.

Schritt 6: Arduino Clock Module

Das Arduino-Wetterstation / Thermostat

Das Arduino-Wetterstation / Thermostat

Wir beendeten die Arduino Time & Date Funktionen mit dem Sparkfun DS1307 I2C RTC-Modul, ein 2-zeiliges LCD, und die Arduino Duemilanove. Es gibt vier Verbindungen von der DS1307 mit dem Arduino:

// Pin SDA zu Arduino Analog Pin 4
// Pin SCL zum Arduino Analog Pin 5
// Pin GND zu GND Arduino
// Pin VCC 5V Arduino

Um die Zeit einzustellen, bearbeiten Sie den folgenden Abschnitt in der Code mit der richtigen Zeit und Datum,

//, Was Sie, um Ihre Uhr einstellen möchten Ändern Sie diese Werte.
// Sie wahrscheinlich nur wollen, um Ihre Uhr einmal eingestellt und dann zu entfernen
// Die setDateDs1307 Anruf.
zweiten = 0;
Minute = 42;
Stunde = 9;
dayOfWeek = 1; // Sonntag
TagDesMonats = 3;
Monat = 10; // Oktober
Jahr = 10;

und vorübergehend entfernen Sie die // von der folgenden Zeile:

// setDateDs1307 (Sekunde, Minute, Stunde, dayOfWeek, TagDesMonats, Monat, Jahr);

Ihr Code mit dem Arduino Laden, dann legte die // zurück in die obige Zeile, und wieder hochladen.

Der vollständige Code und Verdrahtung sind im Internet abrufbar http://arduinotronics.blogspot.com/2010/10/ds1307-real-time-clock-working.html