diff --git a/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135/Connection.h b/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135/Connection.h new file mode 100644 index 0000000..266261a --- /dev/null +++ b/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135/Connection.h @@ -0,0 +1,20 @@ +WiFiClient net; +CoreX corex; + +void setupCorex() { + Serial.println("CoreX IoT https://corex.id"); + Serial.println("Menghubungkan ke WiFi"); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nTerhubung ke WiFi!"); + Serial.print("Menghubungkan ke server"); + while (!corex.connect()) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nTerhubung ke server!"); +} diff --git a/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135.ino b/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135.ino new file mode 100644 index 0000000..30fbcbd --- /dev/null +++ b/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135.ino @@ -0,0 +1,85 @@ +#include +#include +#include "Connection.h" +// Definisikan pin sensor MQ-135 +const int MQ135_PIN = 36; // Pin VP pada ESP32 (GPIO 36) + +// Konstanta untuk kalibrasi +const float RLOAD = 10.0; // Beban resistor dalam kohm +const float RZERO = 76.63; // Nilai resistansi pada 100 ppm CO2 +const float PARA = 116.6020682; // Konstanta untuk perhitungan +const float PARB = 2.769034857; // Konstanta untuk perhitungan +// Fungsi untuk membaca nilai resistansi dari sensor +float readSensorResistance(int pin) { + int sensorValue = analogRead(pin); + Serial.print("Analog Value: "); + Serial.println(sensorValue); + float voltage = sensorValue * (3.3 / 4095.0); + float resistance = (3.3 - voltage) * RLOAD / voltage; + return resistance; +} +// Fungsi untuk menghitung konsentrasi CO2 dalam ppm +float calculatePPM(float resistance) { + float ratio = resistance / RZERO; + float ppm = PARA * pow(ratio, -PARB); + return ppm; +} +// Fungsi untuk menghitung nilai RZERO +float calculateRZero(float resistance) { + return resistance / pow((400.0 / PARA), (1.0 / -PARB)); // Misal 400 ppm CO2 di udara bersih +} +// Ubah nilai auth_token dan device anda. +const char* AUTH_TOKEN = "PGM8oemWd6gh8GA"; +const char* DEVICE_ID = "RlcaGvevt"; + +CoreXTimer timer; // Gunakan timer agar dapat mengeksekusi perintah setiap sekian milidetik tanpa blocking. + +// Ubah nilai berikut sesuai jaringan Anda. +const char ssid[] = "indihomeokeh"; +const char pass[] = "sepakbola123"; + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, pass); + corex.begin(net); + analogReadResolution(12); // Set resolusi ADC ke 12 bit (0-4095) + // Kalibrasi manual, tempatkan sensor di lingkungan yang diketahui memiliki CO2 rendah + float resistance = readSensorResistance(MQ135_PIN); + float RZERO = calculateRZero(resistance); + timer.setInterval(1000, send); // Lakukan send setiap 1000 milidetik. + + setupCorex(); +} + +void loop() { + timer.run(); + delay(10); + + // Periksa apakah perangkat masih terhubung. + if (!corex.connected()) { + setupCorex(); + } +} + +void send() { + float resistance = readSensorResistance(MQ135_PIN); + + // Validasi hasil resistance + if (resistance <= 0) { + Serial.println("Invalid resistance value. Check sensor connection."); + return; + } + + float ppm = calculatePPM(resistance); + + // Validasi hasil ppm + if (ppm < 0 || ppm > 1000) { // Biasanya, ppm di bawah 1.000 adalah batas wajar + Serial.println("Invalid CO2 concentration. Check calibration."); + } else { + Serial.print(" kohms, CO2 Concentration: "); + Serial.print(ppm); + Serial.println(" ppm"); + } + delay(2000); // Tunggu 2 detik sebelum pembacaan berikutnya + corex.send("TugasAkhirMebs", ppm); +} diff --git a/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135/Wiring_MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135.png b/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135/Wiring_MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135.png new file mode 100644 index 0000000..740f4e1 Binary files /dev/null and b/MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135/Wiring_MenampilkanNilaiCarbonDioksidaMenggunakan_MQ-135.png differ