#include <WiFi.h>
#include <ThingSpeak.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Kredensial WiFi
const char* ssid = "BarraIbnuHasan";
const char* password = "barraibnuhasan12";
// ThingSpeak
unsigned long myChannelNumber = 2717691;
const char* myWriteAPIKey = "HE4RLIL98RPXARXX";
// Sensor DHT
#define DHTPIN 15
#define DHTTYPE DHT22 // Menggunakan DHT22
// LCD I2C
LiquidCrystal_I2C lcd(0x27, 20, 4);
// LED Pins
#define WIFI_LED 2
#define THINGSPEAK_LED 4
// Informasi Pribadi
const char* nama = "Eko Desyan S";
const char* nim = "4122110102";
WiFiClient client;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
// Inisialisasi LCD
lcd.init();
lcd.backlight();
// Inisialisasi LED
pinMode(WIFI_LED, OUTPUT);
pinMode(THINGSPEAK_LED, OUTPUT);
// Tampilkan informasi pribadi
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Nama: ");
lcd.print(nama);
lcd.setCursor(0, 1);
lcd.print("NIM : ");
lcd.print(nim);
// Koneksi WiFi
WiFi.begin(ssid, password);
lcd.setCursor(0, 2);
lcd.print("Connecting WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
lcd.print(".");
}
digitalWrite(WIFI_LED, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Nama: ");
lcd.print(nama);
lcd.setCursor(0, 1);
lcd.print("NIM : ");
lcd.print(nim);
lcd.setCursor(0, 2);
lcd.print("WiFi Connected");
lcd.setCursor(0, 3);
lcd.print("IP: ");
lcd.print(WiFi.localIP());
delay(3000);
ThingSpeak.begin(client);
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Gagal membaca dari sensor DHT!");
lcd.setCursor(0, 2);
lcd.print("Sensor Error ");
lcd.setCursor(0, 3);
lcd.print(" ");
delay(2000);
return;
}
Serial.print("Suhu: ");
Serial.print(t);
Serial.print(" °C, Kelembaban: ");
Serial.print(h);
Serial.println(" %");
// Tampilkan di LCD
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Monitoring Suhu");
lcd.setCursor(1, 1);
lcd.print("& Kelembaban Ruang");
lcd.setCursor(0,2);
lcd.print("Suhu:");
lcd.print(t); // Menampilkan suhu
lcd.print((char)223); // Simbol derajat Celsius
lcd.print("C"); // Menambahkan 'derajat C'
lcd.setCursor(0,3);
lcd.print("Kelembaban:");
lcd.print(h);
lcd.print("% ");
ThingSpeak.setField(1, t); // Mengirim suhu ke field pertama
ThingSpeak.setField(2, h); // Mengirim kelembaban ke field kedua
// Kirim ke ThingSpeak
digitalWrite(THINGSPEAK_LED, HIGH);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) {
Serial.println("Channel update berhasil.");
} else {
Serial.println("Gagal update channel. HTTP error code " + String(x));
}
digitalWrite(THINGSPEAK_LED, LOW);
delay(20000); // Tunggu sebelum pembaruan berikutnya
}