Upload files to "/"
Signed-off-by: habib_andriantito <e41211051@student.polije.ac.id>
This commit is contained in:
commit
0cef15698c
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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
|
||||||
|
}
|
|
@ -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();
|
||||||
|
?>
|
Loading…
Reference in New Issue