#include #include #include "DHT.h" // Konfigurasi Pin LoRa #define LORA_SCK 18 #define LORA_MISO 19 #define LORA_MOSI 23 #define LORA_SS 5 #define LORA_RST 14 #define LORA_DIO0 2 // DHT dan Relay #define DHTPIN 4 #define DHTTYPE DHT11 #define RELAY1 25 #define RELAY2 26 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); dht.begin(); pinMode(RELAY1, OUTPUT); pinMode(RELAY2, OUTPUT); digitalWrite(RELAY1, HIGH); // OFF default digitalWrite(RELAY2, HIGH); // OFF default SPI.begin(LORA_SCK, LORA_MISO, LORA_MOSI, LORA_SS); LoRa.setPins(LORA_SS, LORA_RST, LORA_DIO0); if (!LoRa.begin(433E6)) { Serial.println("LoRa Gagal"); while (true); } LoRa.setSyncWord(0xF3); Serial.println("LoRa OK"); } void loop() { float suhu = dht.readTemperature(); float hum = dht.readHumidity(); if (isnan(suhu) || isnan(hum)) { Serial.println("Sensor Error!"); delay(3000); return; } // Kendali relay berdasarkan kelembapan String statusRelay; if (hum < 40) { digitalWrite(RELAY1, LOW); // ON digitalWrite(RELAY2, HIGH); // OFF statusRelay = "R1"; } else if (hum > 60) { digitalWrite(RELAY1, LOW); // ON digitalWrite(RELAY2, LOW); // ON statusRelay = "R1R2"; } else { digitalWrite(RELAY1, HIGH); // OFF digitalWrite(RELAY2, HIGH); // OFF statusRelay = "OFF"; } // Menyusun pesan dengan suhu dan kelembapan String message = "Temp:" + String(suhu, 1) + "C, Hum:" + String(hum, 1) + "%"; // Kirim data melalui LoRa LoRa.beginPacket(); LoRa.print(message); LoRa.endPacket(); // Tampilkan di Serial Monitor Serial.println("Data dikirim: " + message); Serial.println("Relay Status: " + statusRelay); delay(5000); }