first commit

This commit is contained in:
annasalsabila 2024-07-22 10:23:14 +07:00
commit a943c61387
5 changed files with 185 additions and 0 deletions

117
FixAnnaArd/FixAnnaArd.ino Normal file
View File

@ -0,0 +1,117 @@
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#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);
}

View File

@ -0,0 +1,4 @@
/**
* Upload Code Versi Arduino
*
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 KiB

Binary file not shown.

View File

@ -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 <WiFi.h>
#include <BlynkSimpleEsp32.h>
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
}