Meine Komponenten:
Arduino Uno R3
Display 1602 I2C
2x DHT22
3231 RTC
4xRGB SMD WS2812B IC
4 Channel Relais Board
5 Button Pannel über ein Analog Pin
SD Card Board
Mein Projekt
Ich betreibe zwei Spinnenterrarien und möchte die Beleuchtung(Heizung) und LED über das Relais Board schalten.
Da geht es schon los.
Trotz eingehender recherche, habe ich es noch nicht so ganz begriffen, wie und wann das Relais schaltet.
So wie ich es verstanden habe, gibt es einen Anschluss der standart aktiv ist und einen der aktiv wird wenn das Relay schaltet (rote LED leuchtet???)
Relais 1 soll einen 20W Halogenspot in Terra1 temperatur und zeitabhängig schalten, Nachts aus und Tagsüber bis auf Wunschtemperatur
heizen und erst wieder einschalten wenn die Temperatur mehrere grad gefallen ist (Hysterese)
Relais 2 selbe wie Relais1 für Terra2
Relais 3 soll LED Beleuchtung in Terra 1 zeitabhängig einschalten wenn Halogenspot aus
Relais 4 selbe wie Relais3 für Terra2
Ich stehe noch relativ am Anfang,
Temperatur auslesen klappt schon ohne Probleme.
Im Moment arbeite ich an dem Relaiscode, was mir schon einige graue Haare bereitet hat.
Mein Code sieht so aus
#include <DHT.h>
#include "DHT.h"
#define DHTPIN1 2
#define DHTPIN2 4
#define DHTTYPE1 DHT22 // DHT 22(AM2302)
#define DHTTYPE2 DHT22 // DHT 22(AM2302)
int RELAY1 = 8;
int RELAY2 = 9;
int RELAY3 = 10;
int RELAY4 = 11;
// Initialize DHT sensor.
DHT dht221(DHTPIN1, DHTTYPE1);
DHT dht222(DHTPIN2, DHTTYPE2);
void setup()
{
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
Serial.begin(9600);
//Serial.println("Thermometer");
dht221.begin();
dht222.begin();
}
void loop()
{
delay (2000);
float h1 = dht221.readHumidity();
float t1 = dht221.readTemperature();
float h2 = dht222.readHumidity();
float t2 = dht222.readTemperature();
// Temperatur unter 24°C
if ((t1 < 24) && (digitalRead(RELAY1) == LOW))
{
digitalWrite(8, HIGH);
Serial.print("Halogen an LED aus");
}
else {
//Temperatur größer 26,5°C ausschalten
if ((t1 > 25,2) && (digitalRead(RELAY1) == HIGH))
{
digitalWrite(8, LOW);
Serial.print("Halogen aus LED an");
}
}
Serial.print("Hum: ");
Serial.print(h1);
//Serial.print("%");
Serial.print(";");
Serial.print(h2);
Serial.print("%");
Serial.println();
Serial.print("Temp: ");
Serial.print(t1);
//Serial.println("C");
Serial.print(";");
Serial.print(t2);
Serial.println("C");
}
//}
//to do
//button control pad 5
//display communication
//real time clock
//esp8229
//fancy stuff
Meine Ausgabe sieht so aus:
Halogen an LED ausHum: 83.70;nan%
Temp: 23.30;nanC
Halogen aus LED anHum: 83.60;nan%
Temp: 23.30;nanC
Halogen an LED ausHum: 83.60;nan%
Temp: 23.30;nanC
Halogen aus LED anHum: 83.60;nan%
Temp: 23.30;nanC
Halogen an LED ausHum: 83.60;nan%
Temp: 23.30;nanC
Halogen aus LED anHum: 83.70;nan%
Temp: 23.30;nanC
Wo ist der verdammte Fehler, oder gibt es eine Anlaufbedingung?
Mir qualmt der Kopf...
Also muss das Terra warm, kalt oder auf Normaltemperatur sein wenn ich das Arduino starte.
Das Relais schaltet immer ein und aus wenn unter 24C.
Bei über 24C leuchtet wie alle anderen und keine Meldung.
Temp: 24.00;nanC
Hum: 87.30;nan%
Temp: 24.00;nanC
Hum: 87.50;nan%
Temp: 24.10;nanC
Hum: 87.50;nan%
Temp: 24.10;nanC
Hum: 87.50;nan%
Temp: 24.10;nanC
Hum: 87.50;nan%
Temp: 24.10;nanC
Hum: 87.40;nan%
Temp: 24.10;nanC
Hum: 87.40;nan%
Temp: 24.10;nanC
Bei über 26,5C
Temp: 26.50;nanC
Hum: 86.70;nan%
Temp: 26.60;nanC
Hum: 86.70;nan%
Temp: 26.50;nanC
Hum: 86.70;nan%
Temp: 26.60;nanC
Hum: 86.70;nan%
Dann soll das Display eingebunden werden, also permanent beide temps und hums angezeigt werden und als screensaver dann die Uhrzeit oder so,
später irgendwann ein Menü.
Daten sollen mit Zeitstempel auf sd geschrieben werden.
Irgendwann dann mit dem esp auf nen kleinen webserver senden und mit einer android app abrufen.
Würde mich über einige Anregungen und Tipps, besonders was die Relais angeht, freuen.
Liebe Grüße Chris


