TIF_NGANJUK_E41211051/Sensor_Water_Pressure_SKU_S...

82 lines
2.6 KiB
C++

#include <WiFi.h>
#include <HTTPClient.h>
// Ganti dengan kredensial WiFi Anda
const char* ssid = "...";
const char* password = ".....";
// URL endpoint
const char* serverName = "http://...............:.../...";
const char* deviceName = "";
const float OffSet = 0.50;
float V, P; // Tegangan dan Tekanan
unsigned long previousMillis = 0; // Variabel untuk melacak waktu
const long resetInterval = 600000; // 10 menit
// Koefisien untuk filter low-pass
float alpha = 0.1; // Konstanta filter (0.0 - 1.0), sesuaikan dengan kebutuhan
float filteredVoltage = 0; // Tegangan yang sudah difilter
void setup() {
Serial.begin(9600);
Serial.println("/** Water Pressure Sensor Data **/");
// Menghubungkan ke WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi");
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= resetInterval) {
Serial.println("Resetting device...");
ESP.restart(); // Reset ESP32 setelah 10 menit
}
int sensorValue = analogRead(34);
V = sensorValue * 3.3 / 4095; // Mengonversi nilai ADC ke tegangan (3.3V, 12-bit)
// Filter low-pass untuk menstabilkan pembacaan tegangan
filteredVoltage = (alpha * V) + ((1 - alpha) * filteredVoltage);
// Menghitung tekanan berdasarkan tegangan yang sudah difilter
P = (filteredVoltage - OffSet) * 400; // Mengonversi tegangan ke tekanan (KPa)
float P_bar = P / 100.0; // Konversi tekanan ke bar
// Menampilkan hasil di Serial Monitor
Serial.print("Filtered Voltage: ");
Serial.print(filteredVoltage, 3);
Serial.println(" V");
Serial.print("Pressure: ");
Serial.print(P_bar, 3);
Serial.println(" bar");
Serial.println();
// Mengirim data ke server menggunakan GET
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = String(serverName) + "?device=" + String(deviceName) + "&voltage=" + String(filteredVoltage, 3) + "&pressure=" + String(P_bar, 3);
http.begin(url);
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println("Response code: " + String(httpResponseCode));
Serial.println("Response: " + response);
} else {
Serial.println("Error in HTTP request: " + String(httpResponseCode));
}
http.end(); // Menutup koneksi
} else {
Serial.println("Error in WiFi connection");
}
delay(2000); // Tunggu 2 detik sebelum pengiriman berikutnya
}