#include <WiFi.h>
#include <HTTPClient.h>
#include <ESP32Servo.h>
// WiFi credentials
const char* ssid = "Apple";
const char* password = "88888888";
// Server URL
const char* serverUrl = "http://192.168.43.83:5000/trainData";
// Ultrasonic sensor pins
#define TRIG_PIN 5
#define ECHO_PIN 18
// Servo pin
#define SERVO_PIN 13
Servo brakeServo;
void setup() {
Serial.begin(115200);
// Initialize WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Initialize ultrasonic sensor pins
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// Initialize servo motor
brakeServo.attach(SERVO_PIN);
}
void loop() {
float distance = getDistance();
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (distance < 100) { // Threshold distance in cm
activateBrakes();
sendDataToServer(distance, "Brakes Activated");
} else {
deactivateBrakes();
sendDataToServer(distance, "Normal Operation");
}
delay(1000);
}
float getDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
return (duration * 0.0343) / 2;
}
void activateBrakes() {
brakeServo.write(0); // Simulate brake activation
}
void deactivateBrakes() {
brakeServo.write(90); // Simulate brake deactivation
}
void sendDataToServer(float distance, const char* status) {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = String(serverUrl) + "?distance=" + String(distance) + "&status=" + status;
http.begin(url);
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println("Server Response: " + response);
} else {
Serial.println("Error in sending GET request");
}
http.end();
} else {
Serial.println("WiFi not connected");
}
}