Tech Gyan Set
Published © MIT

ESP32 Smart Parking Detection System

An ESP32-based smart system that detects available parking spaces in real time and helps drivers find parking quickly. πŸš—πŸ“‘

BeginnerFull instructions provided8 hours119
ESP32 Smart Parking Detection System

Things used in this project

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

πŸš— ESP32 Smart Parking Detection System - Complete ESP32 Code

C/C++
#include <WiFi.h>
#include <PubSubClient.h>

// ----------- Pin Configuration -----------
#define TRIG_PIN 5
#define ECHO_PIN 18
#define GREEN_LED 19
#define RED_LED 21

// ----------- WiFi Credentials -----------
const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";

// ----------- MQTT Server -----------
const char* mqtt_server = "broker.hivemq.com";
const char* topic_status = "smartparking/status";

WiFiClient espClient;
PubSubClient client(espClient);

// Parking threshold distance (cm)
int parkingThreshold = 15;


// ----------- WiFi Setup -----------
void setup_wifi() {

  Serial.println("Connecting to WiFi...");

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nWiFi Connected");
}


// ----------- MQTT Reconnect -----------
void reconnect() {

  while (!client.connected()) {

    Serial.println("Connecting to MQTT...");

    if (client.connect("ESP32Parking")) {
      Serial.println("MQTT Connected");
    } else {
      delay(2000);
    }
  }
}


// ----------- Ultrasonic Distance Function -----------
float getDistance() {

  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);

  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);

  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH);

  float distance = duration * 0.034 / 2;

  return distance;
}


// ----------- Setup -----------
void setup() {

  Serial.begin(115200);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  pinMode(GREEN_LED, OUTPUT);
  pinMode(RED_LED, OUTPUT);

  setup_wifi();

  client.setServer(mqtt_server, 1883);
}


// ----------- Loop -----------
void loop() {

  if (!client.connected()) {
    reconnect();
  }

  client.loop();

  float distance = getDistance();

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");


  // -------- Parking Logic --------

  if(distance < parkingThreshold) {

    // Car Detected
    digitalWrite(RED_LED, HIGH);
    digitalWrite(GREEN_LED, LOW);

    Serial.println("Parking Occupied");

    client.publish(topic_status, "Occupied");

  }
  else {

    // Slot Free
    digitalWrite(GREEN_LED, HIGH);
    digitalWrite(RED_LED, LOW);

    Serial.println("Parking Free");

    client.publish(topic_status, "Free");

  }

  delay(2000);
}

Credits

Tech Gyan Set
28 projects β€’ 10 followers
Tech Gyan Set | IoT & Embedded Systems Creator | Arduino, ESP32, GSM & NodeMCU Projects | Smart Home & Real-Life Automation Tutorials
Thanks to Tech Gyan Set .

Comments