Upload files to "/"

Signed-off-by: habib_andriantito <e41211051@student.polije.ac.id>
This commit is contained in:
habib_andriantito 2025-07-20 06:35:11 +07:00
commit 0cef15698c
4 changed files with 343 additions and 0 deletions

View File

@ -0,0 +1,116 @@
#include <HardwareSerial.h>
#include <WiFi.h>
#include <HTTPClient.h>
// 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
}
}

109
Sensor_JSN-SR04T.ino Normal file
View File

@ -0,0 +1,109 @@
#include <WiFi.h>
#include <HTTPClient.h>
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);
}

View File

@ -0,0 +1,81 @@
#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
}

37
database.php Normal file
View File

@ -0,0 +1,37 @@
<?php
$Servername = ",,,.,,,.,,,.,,,:,,,,";
$username = "....";
$password = ".....";
$dbname = ".......";
$conn = new mysqli($Servername, $username, $password,
$dbname);
// Check connection
if ($conn->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 . "<br>" . $conn->error;}
$conn->close();
?>