#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DHT.h>
// Inisialisasi LCD I2C 20x4
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Inisialisasi RTC DS3231
RTC_DS3231 rtc;
// Inisialisasi sensor suhu DS18B20
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature ds18b20(&oneWire);
// Inisialisasi sensor DHT11
#define DHTPIN 5
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Placeholder untuk TDS
float tdsValue = 0;
// Konfigurasi pH Meter
float calibration_value = 21.34;
unsigned long int avgval;
int buffer_arr[10], temp;
void setup() {
// Memulai komunikasi serial
Serial.begin(115200);
// Memulai LCD
lcd.begin();
lcd.backlight();
// Memulai RTC
if (!rtc.begin()) {
Serial.println("RTC tidak terdeteksi");
while (1);
}
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Memulai sensor DS18B20
ds18b20.begin();
// Memulai sensor DHT11
dht.begin();
}
void loop() {
// Mendapatkan waktu saat ini dari RTC
DateTime now = rtc.now();
// Mendapatkan suhu dari DS18B20
ds18b20.requestTemperatures();
float temperatureDS18B20 = ds18b20.getTempCByIndex(0);
// Mendapatkan suhu dan kelembaban dari DHT11
float temperatureDHT11 = dht.readTemperature();
float humidity = dht.readHumidity();
// Membaca nilai dari sensor pH
for (int i = 0; i < 10; i++) {
buffer_arr[i] = analogRead(32); // Ganti pin sesuai dengan konfigurasi Anda
delay(30);
}
// Mengurutkan nilai buffer untuk mendapatkan rata-rata median
for (int i = 0; i < 9; i++) {
for (int j = i + 1; j < 10; j++) {
if (buffer_arr[i] > buffer_arr[j]) {
temp = buffer_arr[i];
buffer_arr[i] = buffer_arr[j];
buffer_arr[j] = temp;
}
}
}
// Menghitung rata-rata dari nilai tengah
avgval = 0;
for (int i = 2; i < 8; i++) avgval += buffer_arr[i];
float volt = (float)avgval * 5.0 / 4095 / 6;
float ph_act = -5.70 * volt + calibration_value;
// Placeholder untuk nilai TDS (dapat ditambahkan pembacaan sebenarnya)
tdsValue = 0;
// Menampilkan data di LCD
lcd.setCursor(0, 0);
lcd.print(now.day());
lcd.print("/");
lcd.print(now.month());
lcd.print("/");
lcd.print(now.year());
lcd.setCursor(10, 0);
lcd.print(now.hour());
lcd.print(":");
lcd.print(now.minute());
lcd.setCursor(0, 1);
lcd.print("T=");
lcd.print(temperatureDHT11);
lcd.print("*C H=");
lcd.print(humidity);
lcd.print("%");
lcd.setCursor(0, 2);
lcd.print("TW=");
lcd.print(temperatureDS18B20);
lcd.print("*C TDS=");
lcd.print(tdsValue);
lcd.setCursor(0, 3);
lcd.print("PH=");
lcd.print(ph_act);
// Delay sebelum pembaruan berikutnya
delay(2000);
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4
Loading
ds18b20
ds18b20