commit a943c6138729431c5510f79f8204ce5ef974ad16 Author: annasalsabila Date: Mon Jul 22 10:23:14 2024 +0700 first commit diff --git a/FixAnnaArd/FixAnnaArd.ino b/FixAnnaArd/FixAnnaArd.ino new file mode 100644 index 0000000..ba089a8 --- /dev/null +++ b/FixAnnaArd/FixAnnaArd.ino @@ -0,0 +1,117 @@ +#include +#include +#include "GravityTDS.h" + +// Set the LCD number of columns and rows +int lcdColumns = 16; +int lcdRows = 2; + +// Initialize LCD +LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows); + +// Sensor turbidity +int pinTurb = A0; +float V; +float kekeruhan; +float VRata2; +float VHasil; +float ParameterKekeruhan = 5; // Sesuaikan dengan parameter kekeruhan yang diinginkan + +// Sensor TDS +#define TdsSensorPin A1 +GravityTDS gravityTds; +float temperature = 500, tdsValue = 0; +float ParameterPPM = 500; // Sesuaikan dengan parameter ppm yang diinginkan + +// LED +const int ledMerah = 8; // Pin untuk LED merah +const int ledHijau = 9; // Pin untuk LED hijau + +void setup() { + // Initialize LCD + lcd.init(); + // Turn on LCD backlight + lcd.backlight(); + + Serial.begin(9600); + Serial.println("SENSOR KEKERUHAN AIR"); + delay(2000); + + pinMode(ledMerah, OUTPUT); + pinMode(ledHijau, OUTPUT); + + // Initialize turbidity sensor + gravityTds.setPin(TdsSensorPin); + gravityTds.setAref(5.0); //reference voltage on ADC, default 5.0V on Arduino UNO + gravityTds.setAdcRange(1024); //1024 for 10bit ADC;4096 for 12bit ADC + gravityTds.begin(); //initialization +} + +void loop() { + // Read turbidity sensor + V = 0; + for (int i = 0; i < 800; i++) { + V += ((float)analogRead(pinTurb) / 1023) * 5; + } + + VRata2 = V / 800; + VHasil = roundf(VRata2 * 10.0f) / 10.0f; + + if (VHasil < 2.5) { + kekeruhan = 5; + } else { + kekeruhan = -1120.4 * square(VHasil) + 5742.3 * VHasil - 4353.8; + } + + // Read TDS sensor + gravityTds.setTemperature(temperature); // set the temperature and execute temperature compensation + gravityTds.update(); //sample and calculate + tdsValue = gravityTds.getTdsValue(); // then get the value + + // Print to LCD + lcd.clear(); + if (tdsValue > ParameterPPM) { + lcd.setCursor(0, 0); + lcd.print("Kaporit Berlebih"); + } else { + lcd.setCursor(0, 0); + lcd.print("Kaporit Normal"); + } + lcd.print("TDS: "); + lcd.print(tdsValue); + lcd.print(" ppm"); + + // lcd.setCursor(0, 1); + // lcd.print("Turbidity: "); + // lcd.print(kekeruhan); + + // Control LED based on ppm and turbidity + if (tdsValue > ParameterPPM || kekeruhan > ParameterKekeruhan) { + digitalWrite(ledMerah, HIGH); // LED merah menyala + digitalWrite(ledHijau, LOW); // LED hijau mati + } else { + digitalWrite(ledMerah, LOW); // LED merah mati + digitalWrite(ledHijau, HIGH); // LED hijau menyala + } + + if (kekeruhan > ParameterKekeruhan) { + lcd.setCursor(0, 1); + lcd.print("Air Keruh"); + } else { + lcd.setCursor(0, 1); + lcd.print("Air Tidak Keruh"); + } + + // Print to serial monitor + Serial.print("TDS: "); + Serial.print(tdsValue); + Serial.print(" ppm"); + + Serial.print("\tTurbidity: "); + Serial.println(kekeruhan); + // Send data to ESP32 + Serial.print(kekeruhan); + Serial.print(","); + Serial.println(tdsValue); + delay(200); +} diff --git a/FixAnnaArd/Pnyesuaian.ino b/FixAnnaArd/Pnyesuaian.ino new file mode 100644 index 0000000..4e19a38 --- /dev/null +++ b/FixAnnaArd/Pnyesuaian.ino @@ -0,0 +1,4 @@ +/** + * Upload Code Versi Arduino + * + */ diff --git a/FixAnnaArd/WhatsApp Image 2024-06-26 at 18.32.22_d0a88adc.jpg b/FixAnnaArd/WhatsApp Image 2024-06-26 at 18.32.22_d0a88adc.jpg new file mode 100644 index 0000000..7e43b1e Binary files /dev/null and b/FixAnnaArd/WhatsApp Image 2024-06-26 at 18.32.22_d0a88adc.jpg differ diff --git a/FixAnnaArd/data/LiquidCrystal_I2C-1.1.2.zip b/FixAnnaArd/data/LiquidCrystal_I2C-1.1.2.zip new file mode 100644 index 0000000..2c74095 Binary files /dev/null and b/FixAnnaArd/data/LiquidCrystal_I2C-1.1.2.zip differ diff --git a/FixAnnaEsp32Rec/FixAnnaEsp32Rec.ino b/FixAnnaEsp32Rec/FixAnnaEsp32Rec.ino new file mode 100644 index 0000000..7a5806f --- /dev/null +++ b/FixAnnaEsp32Rec/FixAnnaEsp32Rec.ino @@ -0,0 +1,64 @@ +#define BLYNK_TEMPLATE_ID "TMPL6wIKYMxbe" +#define BLYNK_TEMPLATE_NAME "WaterTester" +#define BLYNK_AUTH_TOKEN "v-1Offttn2hvVofsSGHiiz1jDcSTrfUm" + +#define BLYNK_PRINT Serial + +#include +#include + +char auth[] = BLYNK_AUTH_TOKEN; // Auth Token +char ssid[] = "yuhu"; +char pass[] = "AnnaSalsabila"; + +float ParameterKekeruhan = 0-5; // Parameter kekeruhan +float ParameterTDS = 0.2-0.5; // Parameter TDS + +float lastKekeruhan = 0; // Nilai terakhir kekeruhan +float lastTDS = 0; // Nilai terakhir TDS + +BlynkTimer timer; + +// Callback function untuk pengiriman data sensor ke Blynk +void sendSensor() { + if (Serial.available()) { // Jika data tersedia di buffer serial + String dataReceived = Serial.readStringUntil('\n'); // Baca data hingga karakter newline + float kekeruhan = dataReceived.substring(0, dataReceived.indexOf(',')).toFloat(); // Parse data kekeruhan + float tdsValue = dataReceived.substring(dataReceived.indexOf(',') + 1).toFloat(); // Parse data TDS + + // Jika data yang diterima valid (bukan 0) + if (kekeruhan != 0 && tdsValue != 0) { + lastKekeruhan = kekeruhan; // Simpan nilai terakhir kekeruhan + lastTDS = tdsValue; // Simpan nilai terakhir TDS + } + } + + // Kirim data terakhir ke Blynk + Blynk.virtualWrite(V0, lastKekeruhan); // Kirim data kekeruhan terakhir ke Virtual pin V0 di Blynk + Blynk.virtualWrite(V1, lastTDS); // Kirim data TDS terakhir ke Virtual pin V1 di Blynk + + // Kirim status kekeruhan terakhir ke Blynk + if (lastKekeruhan > ParameterKekeruhan) { + Blynk.virtualWrite(V2, "Air Keruh"); + } else { + Blynk.virtualWrite(V2, "Air Tidak Keruh"); + } + + // Kirim status TDS terakhir ke Blynk + if (lastTDS > ParameterTDS) { + Blynk.virtualWrite(V3, "Kaporit Tinggi"); + } else { + Blynk.virtualWrite(V3, "Kaporit Normal"); + } +} + +void setup() { + Serial.begin(9600); // Baud rate serial monitor + Blynk.begin(auth, ssid, pass); // Mulai Blynk + timer.setInterval(20L, sendSensor); // Set interval timer untuk pengiriman data 20ms +} + +void loop() { + Blynk.run(); // Menjalankan Blynk + timer.run(); // Menjalankan timer +}