// Library
#include <DHT.h>
// DHT 11 Declaration
#define DHTPIN 14
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// LDR PIN
#define LdrPin 34
// Soil Moisture
#define soilMoisturePin 15
int soilMoistureValue;
//relay module
const int RELAY_PIN = 16;
// LDR Function
float calculateBrightness(int ldrRawValue) {
const float gama = 0.7;
const float rl10 = 50;
ldrRawValue = map(ldrRawValue, 4095, 0, 1024, 0); //mengubah nilai pembacaan sensor LDR dari nilai ADC arduino menjadi nilai ADC ESP32
float voltase = ldrRawValue / 1024.*5;
float resistansi = 2000 * voltase / (1-voltase/5);
float kecerahan = pow(rl10*1e3*pow(10,gama)/resistansi,(1/gama));
return kecerahan;
}
void setup(){
// Set software serial baud to 115200;
Serial.begin(9600);
//Starting DHT11 scanning
dht.begin();
//relay module
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
//DHT11 Scanning
float h = dht.readHumidity();
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, h, false);
//LDR Sensor Scanning
int ldrRawValue = analogRead(LdrPin);
float brightness = calculateBrightness(ldrRawValue);
//Soil Moisture
soilMoistureValue = analogRead(soilMoisturePin);
// DHT11 Output in Serial Monitor
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.println(" *C ");
// LDR Output in Serial Monitor
Serial.print("Brightness: ");
Serial.print(brightness);
Serial.println(" lux ");
Serial.print("Soil Moisture: ");
Serial.print(soilMoistureValue);
Serial.println(" cm ");
//mr, jarak syarat ifnya terlalu kecil. sedangkan nilai potentionya besar
if(soilMoistureValue>=75 && soilMoistureValue<=100){
digitalWrite(RELAY_PIN, HIGH);
Serial.println("Relay: ON");
}
else{
digitalWrite(RELAY_PIN, LOW);
Serial.println("Relay: OFF");
}
delay(2000);
}