TIF_NGANJUK_E41211051/Sensor_JSN-SR04T.ino

110 lines
3.1 KiB
C++

#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);
}