Dehumidifier/dehumidifier-trasmiter.ino

81 lines
1.7 KiB
C++

#include <SPI.h>
#include <LoRa.h>
#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);
}