TKK_E32211537/Kode Program Arduino/fixxxxx.ino

155 lines
4.7 KiB
C++

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <DHT.h>
#define DHTPIN D3 // Pin data DHT22 ESP1 (D4) ESP2 (D3)
#define DHTTYPE DHT22 // Tipe sensor DHT22
#define RELAY_LAMP D7 // Pin relay untuk lampu
#define RELAY_FAN D6 // Pin relay untuk kipas
#define RELAY_ON 0
#define RELAY_OFF 1
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Inisialisasi LCD I2C dengan alamat 0x28 dan ukuran 16x2
// Konfigurasi WiFi
const char* ssid = "GalaxyA52";
const char* password = "12341234";
const char* server = "192.168.253.79";
unsigned long previousMillisRelay = 0;
unsigned long previousSendMillis = 0;
const long relayInterval = 2000; // Interval 2 detik untuk relay
const long sendInterval = 1000; // Interval 1 detik untuk pengiriman data
void setup() {
Serial.begin(9600);
Serial.println("DHT22 test!");
dht.begin();
lcd.init();
lcd.backlight();
pinMode(RELAY_LAMP, OUTPUT); // Atur pin relay lampu sebagai output
pinMode(RELAY_FAN, OUTPUT); // Atur pin relay kipas sebagai output
digitalWrite(RELAY_LAMP, RELAY_OFF); // Matikan relay lampu
digitalWrite(RELAY_FAN, RELAY_OFF); // Matikan relay kipas
WiFi.hostname("NodeMCU");
WiFi.begin(ssid, password);
// Cek koneksi WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
lcd.println("haloo");
delay(2000);
lcd.clear();
// Tampilkan pesan "sayang" di LCD selama 1 detik
lcd.setCursor(0, 0);
lcd.print("haloo");
delay(3000); // Tambahkan delay 1 detik untuk menampilkan "sayang"
// Tampilkan pesan "" di LCD selama 1 detik
lcd.print(" haloo");
delay(3000); //
lcd.clear();
}
void loop() {
unsigned long currentMillis = millis();
float temp = dht.readTemperature();
int hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("Gagal membaca sensor!");
lcd.setCursor(0, 0);
lcd.print("Error");
return;
}
// Tampilkan di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("KELEMBABAN: ");
lcd.print(hum);
lcd.println(" %");
lcd.setCursor(0, 1);
lcd.print("SUHU: ");
lcd.print(temp);
lcd.print((char)223); // Simbol derajat Celsius
lcd.print("C");
// Tampilkan di Serial Monitor
Serial.print("Suhu: ");
Serial.print(temp);
Serial.print(" C, Kelembaban: ");
Serial.print(hum);
Serial.println(" %");
// Kontrol relay berdasarkan suhu dan kelembaban
if (currentMillis - previousMillisRelay >= relayInterval) {
previousMillisRelay = currentMillis;
if (temp > 32) {
if (hum > 75) {
digitalWrite(RELAY_FAN, RELAY_ON); // Hidupkan kipas
digitalWrite(RELAY_LAMP, RELAY_ON); // Hidupkan lampu
Serial.println("Kipas ON, Lampu ON (Suhu > 32, Kelembaban > 70)");
} else {
digitalWrite(RELAY_FAN, RELAY_ON); // Hidupkan kipas
digitalWrite(RELAY_LAMP, RELAY_OFF); // Matikan lampu
Serial.println("Kipas ON, Lampu OFF (Suhu > 32, Kelembaban <= 70)");
}
} else if (temp < 28) {
if (hum < 70) {
digitalWrite(RELAY_FAN, RELAY_ON); // Hidupkan kipas
digitalWrite(RELAY_LAMP, RELAY_ON); // Hidupkan lampu
Serial.println("Kipas ON, Lampu ON (Suhu < 28, Kelembaban < 70)");
} else {
digitalWrite(RELAY_FAN, RELAY_OFF); // Matikan kipas
digitalWrite(RELAY_LAMP, RELAY_ON); // Hidupkan lampu
Serial.println("Kipas OFF, Lampu ON (Suhu < 28, Kelembaban >= 70)");
}
} else {
if (hum > 75) {
digitalWrite(RELAY_FAN, RELAY_OFF); // Matikan kipas
digitalWrite(RELAY_LAMP, RELAY_ON); // Hidupkan lampu
Serial.println("Kipas OFF, Lampu ON (28 <= Suhu <= 32, Kelembaban > 70)");
} else if (hum < 70) {
digitalWrite(RELAY_FAN, RELAY_ON); // Hidupkan kipas
digitalWrite(RELAY_LAMP, RELAY_OFF); // Matikan lampu
Serial.println("Kipas ON, Lampu OFF (28 <= Suhu <= 32, Kelembaban < 70)");
} else {
digitalWrite(RELAY_FAN, RELAY_OFF); // Matikan kipas
digitalWrite(RELAY_LAMP, RELAY_OFF); // Matikan lampu
Serial.println("Kipas OFF, Lampu OFF (28 <= Suhu <= 32, 70 <= Kelembaban <= 70)");
}
}
}
// Kirim data setiap detik
if (currentMillis - previousSendMillis >= sendInterval) {
previousSendMillis = currentMillis;
WiFiClient wClient;
String url;
HTTPClient http;
url = "http://" + String(server) + "/web-ta/public/simpansatu/" + String(temp) + "/" + String(hum);
http.begin(wClient, url);
int httpCode = http.GET();
if (httpCode > 0) {
Serial.println("Data terkirim ke server.");
} else {
Serial.println("Gagal mengirim data!");
}
http.end();
}
delay(1000); // Tambahkan delay 1 detik pada loop
}