diff --git a/arduino/arduino.ino b/arduino/arduino.ino new file mode 100644 index 0000000..461e2ba --- /dev/null +++ b/arduino/arduino.ino @@ -0,0 +1,137 @@ +#include +#include +#include +#include + +// ================= SENSOR AKTIVIERUNG ================= +#define USE_DHT22 1 +#define USE_RAIN 1 +#define USE_BMP280 0 // statt USE_SOIL + +// ================= DHT22 ================= +#define DHT22PIN 4 +#define DHT22TYPE DHT22 +DHT dht22(DHT22PIN, DHT22TYPE); + +// ================= Regenmodul ================= +const int rainAnalogPin = A1; +const int rainDigitalPin = 2; + +// ================= BMP280 ================= +Adafruit_BMP280 bmp; + +// ---------------- SENSOR FUNKTIONEN ---------------- + +#if USE_DHT22 +void readDHT22(float &temp, float &hum) { + temp = dht22.readTemperature(); + hum = dht22.readHumidity(); +} +#endif + +#if USE_RAIN +void readRainSensor(int &analogValue, int &digitalValue) { + analogValue = analogRead(rainAnalogPin); + digitalValue = digitalRead(rainDigitalPin); +} +#endif + +#if USE_BMP280 +void readBMP280(float &pressure) { + pressure = bmp.readPressure() / 100.0F; // Pa → hPa +} +#endif + +// ---------------- JSON BUILDER ---------------- + +String buildJSON(float t22, float h22, + int rainA, int rainD, + float pressure) { + + String json = "{"; + + // ===== DHT22 ===== + json += "\"dht22\":{"; + json += "\"temp\":" + String(t22, 2) + ","; + json += "\"hum\":" + String(h22, 2); + json += "},"; + + // ===== Regen ===== + json += "\"rain\":{"; + json += "\"analog\":" + String(rainA) + ","; + json += "\"wet\":"; + json += (rainD == LOW ? "true" : "false"); + json += "},"; + + // ===== BMP280 ===== + json += "\"bmp280\":{"; + json += "\"pressure\":" + String(pressure, 2); + json += "}"; + + json += "}"; + + return json; +} + +// ---------------- SETUP ---------------- + +void setup() { + Serial.begin(9600); + +#if USE_DHT22 + dht22.begin(); +#endif + +#if USE_RAIN + pinMode(rainDigitalPin, INPUT); +#endif + +#if USE_BMP280 + /*if (!bmp.begin(0x77)) { + Serial.println("BMP280 nicht gefunden!"); + }*/ + + bool bmp_ok = false; + + + bmp_ok = bmp.begin(0x76); + + if (!bmp_ok) { + bmp_ok = bmp.begin(0x77); + } + + if (bmp_ok) { + Serial.println("BMP280 OK"); + } else { + Serial.println("BMP280 NICHT GEFUNDEN"); + } +#endif + + Serial.println("System gestartet..."); +} + +// ---------------- LOOP ---------------- + +void loop() { + delay(2000); + + float t22 = 0, h22 = 0; + int rainA = 0, rainD = 0; + float pressure = 0; + +#if USE_DHT22 + readDHT22(t22, h22); +#endif + +#if USE_RAIN + readRainSensor(rainA, rainD); +#endif + +#if USE_BMP280 + readBMP280(pressure); +#endif + + String json = buildJSON(t22, h22, rainA, rainD, pressure); + + Serial.println(json); +} \ No newline at end of file diff --git a/arduino/arduino/arduino.ino b/arduino/arduino/arduino.ino deleted file mode 100644 index 45a2b5c..0000000 --- a/arduino/arduino/arduino.ino +++ /dev/null @@ -1,99 +0,0 @@ -#include - -// ================= DHT22 ================= -#define DHT22PIN 4 -#define DHT22TYPE DHT22 -DHT dht22(DHT22PIN, DHT22TYPE); - -// ================= DHT11 (deaktiviert) ================= -// #define DHT11PIN 3 -// #define DHT11TYPE DHT11 -// DHT dht11(DHT11PIN, DHT11TYPE); - -// ================= Regensensor ================= -const int rainAnalogPin = A5; -const int rainDigitalPin = 2; - -// ---------------- SETUP ---------------- -void setup() { - Serial.begin(9600); - - dht22.begin(); - // dht11.begin(); // deaktiviert - - pinMode(rainDigitalPin, INPUT); - - Serial.println("System gestartet..."); -} - -// ---------------- LOOP ---------------- -void loop() { - delay(2000); - - readDHT22(); - // readDHT11(); // deaktiviert - readRainSensor(); - - Serial.println("------------------------"); -} - - -void readDHT22() { - float temp = dht22.readTemperature(); - float hum = dht22.readHumidity(); - - Serial.println("DHT22:"); - - if (isnan(temp) || isnan(hum)) { - Serial.println(" Fehler beim Lesen!"); - return; - } - - Serial.print(" Temperatur: "); - Serial.print(temp); - Serial.println(" °C"); - - Serial.print(" Feuchte: "); - Serial.print(hum); - Serial.println(" %"); -} - - -/* -void readDHT11() { - float temp = dht11.readTemperature(); - float hum = dht11.readHumidity(); - - Serial.println("DHT11:"); - - if (isnan(temp) || isnan(hum)) { - Serial.println(" Fehler beim Lesen!"); - return; - } - - Serial.print(" Temperatur: "); - Serial.print(temp); - Serial.println(" °C"); - - Serial.print(" Feuchte: "); - Serial.print(hum); - Serial.println(" %"); -} -*/ - - -void readRainSensor() { - int analogValue = analogRead(rainAnalogPin); - int digitalValue = digitalRead(rainDigitalPin); - - Serial.println("Regenmodul:"); - - Serial.print(" Analogwert: "); - Serial.println(analogValue); - - if (digitalValue == LOW) { - Serial.println(" Regen erkannt!"); - } else { - Serial.println(" Kein Regen"); - } -} \ No newline at end of file diff --git a/verkabelung.txt b/verkabelung.txt new file mode 100644 index 0000000..54d4ede --- /dev/null +++ b/verkabelung.txt @@ -0,0 +1,19 @@ +DHT22: + ++ Modul <-> 3,3V Breadboard (über vertikale Schiene) +Out Modul <-> D4 Arduino +- Modul <-> GND Breadboard (über vertikale Schiene) + +Regenmodul: + +A0 Modul <-> A5 Arduino +D0 Modul <-> D2 Arduino +GND Modul <-> GND Breadboard (über vertikale Schiene) +VCC Modul <-> V3,3 Breadboard (über vertikale Schiene) + +BMP22: + +VCC Modul <-> 3,3V Breadboard (direkt Phasenschiene) +GND Modul <-> GND Breadboard (direkt an Erdungsschiene) +SCL Modul <-> SCL Arduino +SDA Modul <-> SDA Arduino \ No newline at end of file