commit 0cef15698c65b7bd1d469f87b1079a2ab20436df Author: habib_andriantito Date: Sun Jul 20 06:35:11 2025 +0700 Upload files to "/" Signed-off-by: habib_andriantito diff --git a/Sensor_A01ANYUB_V2_Waterproof_Ultrasonic.ino b/Sensor_A01ANYUB_V2_Waterproof_Ultrasonic.ino new file mode 100644 index 0000000..57a0748 --- /dev/null +++ b/Sensor_A01ANYUB_V2_Waterproof_Ultrasonic.ino @@ -0,0 +1,116 @@ +#include +#include +#include + +// Ganti dengan kredensial WiFi Anda +const char* ssid = ""; +const char* password = ""; + +// URL endpoint +const char* serverName = "http://..............:../..."; + +// Nama perangkat +const char* deviceName = "....."; // Nama perangkat yang akan dikirim + +HardwareSerial mySerial(1); + +// Variabel untuk mengelola waktu pembacaan sensor +unsigned long previousMillis = 0; +const long interval = 10000; // Interval pengukuran dalam milidetik (5 detik) +const long resetInterval = 20000; // Interval reset dalam milidetik (20 detik) +const float maxDistance = ...; + +void setup() { + Serial.begin(115200); + mySerial.begin(9600, SERIAL_8N1, 16, 17); + + WiFi.begin(ssid, password); + Serial.print("Connecting to WiFi"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(); + Serial.println("Connected to WiFi"); +} + +void loop() { + unsigned long currentMillis = millis(); + + // Mengambil nilai millis saat ini + if (currentMillis - previousMillis >= interval) { + previousMillis = currentMillis; // Reset waktu sebelumnya + + // Memastikan data tersedia pada serial sensor + if (mySerial.available() >= 4) { // Pastikan 4 byte tersedia sebelum dibaca + // Membaca data dari sensor + uint8_t data[4]; + mySerial.readBytes(data, 4); + + // Debugging: Tampilkan data yang diterima dari sensor + Serial.print("Data received: "); + for (int i = 0; i < 4; i++) { + Serial.print(data[i], HEX); + Serial.print(" "); + } + Serial.println(); + + // Memeriksa apakah byte pertama valid (misalnya, 0xFF sebagai start byte) + if (data[0] == 0xFF) { + // Menggabungkan byte 1 dan byte 2 untuk mendapatkan jarak dalam milimeter + uint16_t distance_mm = (data[1] << 8) | data[2]; + + // Mengonversi jarak dari mm ke cm + float distance_cm = distance_mm / 10.0; + + // Batasi jarak maksimal hingga 330 cm + if (distance_cm > maxDistance) { + distance_cm = maxDistance; + } + + // Membalikkan jarak: semakin dekat objek, semakin besar nilainya + float invertedDistance = maxDistance - distance_cm; + + Serial.print("JARAK: "); + Serial.println(invertedDistance); + Serial.println(" cm"); + + // Jika terhubung ke WiFi, kirim data jarak ke server + if (WiFi.status() == WL_CONNECTED) { + HTTPClient http; + + // Membuat URL dengan parameter jarak terbalik dan nama perangkat + String url = String(serverName) + "?device=" + String(deviceName) + "&distance=" + String(invertedDistance, 3); + http.begin(url); + + // Melakukan HTTP GET request + int httpResponseCode = http.GET(); + + // Mengecek apakah request berhasil + 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"); + } + } else { + Serial.println("Invalid start byte received."); + } + } else { + Serial.println("Not enough data available to read."); + } + } + + // Periksa apakah waktu reset telah berlalu + if (currentMillis % resetInterval == 0) { + Serial.println("Restarting"); + delay(10000); // Tunggu 10 detik + ESP.restart(); // Mereset ESP32 + } +} diff --git a/Sensor_JSN-SR04T.ino b/Sensor_JSN-SR04T.ino new file mode 100644 index 0000000..396971e --- /dev/null +++ b/Sensor_JSN-SR04T.ino @@ -0,0 +1,109 @@ +#include +#include + +const int trigPin = 5; // Pin Trig +const int echoPin = 18; // Pin Echo + +const char* ssid = ""; +const char* password = ""; + +const char* serverName = "http://...............:.../..."; + +const char* deviceName = "....."; // Nama perangkat + +// Waktu untuk restart (1 jam dalam milidetik) +const unsigned long restartInterval = 3600000; // 1 jam = 3600000 ms +unsigned long previousMillisRestart = 0; // Waktu sebelumnya untuk restart + +const long maxDistance = 125; // Jarak maksimal dalam cm + +void setup() { + // Inisialisasi Serial Monitor + Serial.begin(115200); + + // Mengatur pin Trig sebagai output + pinMode(trigPin, OUTPUT); + // Mengatur pin Echo sebagai input + pinMode(echoPin, INPUT); + + // Menghubungkan ke WiFi + WiFi.begin(ssid, password); + Serial.print("Connecting to WiFi"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(); + Serial.println("Connected to WiFi"); +} + +void loop() { + unsigned long currentMillis = millis(); + + // Mengirimkan pulse 10us ke pin Trig + digitalWrite(trigPin, LOW); + delayMicroseconds(2); + digitalWrite(trigPin, HIGH); + delayMicroseconds(10); + digitalWrite(trigPin, LOW); + + // Membaca durasi pulse pada pin Echo + long duration = pulseIn(echoPin, HIGH); + + // Menampilkan durasi pulse untuk debugging + Serial.print("Duration: "); + Serial.print(duration); + Serial.println(" microseconds"); + + // Menghitung jarak dalam cm + if (duration > 0) { + long distance = (duration / 2) / 29.1; + + // Batasi jarak maksimal hingga 250 cm + if (distance > maxDistance) { + distance = maxDistance; + } + + // Membalikkan jarak: semakin dekat objek, semakin besar nilainya + long mappedDistance = map(distance, 0, maxDistance, maxDistance, 0); + + Serial.print("Mapped Distance: "); + Serial.print(mappedDistance); + Serial.println(" cm"); + + // Jika terhubung ke WiFi, kirim data jarak ke server + if (WiFi.status() == WL_CONNECTED) { + HTTPClient http; + + // Membuat URL dengan parameter jarak yang sudah dipetakan dan nama perangkat + String url = String(serverName) + "?device=" + String(deviceName) + "&distance=" + String(mappedDistance); + http.begin(url); + + // Melakukan HTTP GET request + int httpResponseCode = http.GET(); + + // Mengecek apakah request berhasil + 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"); + } + } else { + Serial.println("No pulse detected."); + } + + // Cek apakah waktu 1 jam sudah berlalu untuk restart + if (currentMillis - previousMillisRestart >= restartInterval) { + Serial.println("Restarting system after 1 hour..."); + delay(1000); // Tunggu 1 detik sebelum restart + ESP.restart(); // Restart ESP32 + } + delay(1000); +} diff --git a/Sensor_Water_Pressure_SKU_SEN0257.ino b/Sensor_Water_Pressure_SKU_SEN0257.ino new file mode 100644 index 0000000..8e5b954 --- /dev/null +++ b/Sensor_Water_Pressure_SKU_SEN0257.ino @@ -0,0 +1,81 @@ +#include +#include + +// 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 +} diff --git a/database.php b/database.php new file mode 100644 index 0000000..54ef2af --- /dev/null +++ b/database.php @@ -0,0 +1,37 @@ +connect_error) { +die("Connection failed: " . $conn->connect_error); +} +// Retrieve data from GET request and allow null values +$voltage = isset($_GET['voltage']) ? $_GET['voltage'] : +null; +$pressure = isset($_GET['pressure']) ? $_GET['pressure'] +: null; +$device = isset($_GET['device']) ? $_GET['device']:null; +$distance = isset($_GET['distance']) ? $_GET['distance'] +: null; +$now = date('Y-m-d H:i:s'); // Get current timestamp +// Convert null values to 'NULL' for SQL insertion +$voltage = $voltage !== null ? "'$voltage'" : "NULL"; +$pressure = $pressure !== null ? "'$pressure'" : "NULL"; +$device = $device !== null ? "'$device'" : "NULL"; +$distance = $distance !== null ? "'$distance'" : "NULL"; +// Insert data into the database, allowing null values +$sql = "INSERT INTO sensor_data (voltage, pressure, +device_name, distance, created_at, updated_at) +VALUES ($voltage, $pressure, $device, $distance, '$now', +'$now')"; +if ($conn->query($sql) === TRUE) { +echo "New record created successfully"; + +} else { +echo "Error: " . $sql . "
" . $conn->error;} +$conn->close(); +?> \ No newline at end of file