top of page

🚗 Akıllı Şehir Projesi: Kablosuz Akıllı Park Sensörü

💡 Projenin Amacı


Belirlenen bir park yerinin (örneğin bir otoparkın tek bir bölmesi) dolu mu yoksa boş mu olduğunu tespit etmek ve bu durumu Wi-Fi üzerinden merkezi bir sunucuya (buluta) anlık olarak bildirmektir.


🛠️ Gerekli Malzemeler


  1. Mikrodenetleyici: ESP32 Geliştirme Kartı (Wi-Fi bağlantısı için).

  2. Sensör: HC-SR04 Ultrasonik Mesafe Sensörü (Park yerinin üzerindeki bir cismin (arabanın) varlığını tespit etmek için).

  3. Güç Kaynağı: USB kablosu veya küçük bir pil/güç bankası.

  4. Bağlantı Elemanları: Jumper Kabloları.

  5. Ağ Geçidi: Wi-Fi ağı (Ev/ofis Wi-Fi'si test için yeterlidir).


🔌 Donanım Bağlantı Şeması (HC-SR04 Kullanarak)


Ultrasonik sensörler, ses dalgaları gönderip geri dönüş süresini ölçerek mesafeyi hesaplar.

ESP32 Pini

HC-SR04 Pini

Açıklama

3.3V / VCC

VCC

Güç Girişi (5V sensör olsa da 3.3V ile çalışabilir)

GND

GND

Toprak Bağlantısı

GPIO 22

Trig (Tetik)

Ultrasonik sinyali göndermek için kullanılır.

GPIO 23

Echo (Yankı)

Geri dönen sinyali almak için kullanılır.

👨‍💻 Yazılım ve Kodlama Mantığı


  1. Mesafe Ölçümü: ESP32, Trig pininden bir sinyal gönderir. Echo pininden geri dönüş süresini ölçer. Bu süre, sesin havadaki hızı kullanılarak mesafeye çevrilir ($Mesafe = Hız \times Süre / 2$).

  2. Durum Tespiti:

    • Boş Durum: Sensörden ölçülen mesafe, belirli bir eşik değerden (örneğin 50 cm) büyükse park yeri BOŞ kabul edilir.

    • Dolu Durum: Ölçülen mesafe eşik değerden küçükse (bir araba sensörün altındadır) park yeri DOLU kabul edilir.

  3. Kablosuz İletim: Tespit edilen durum ("DOLU" veya "BOŞ"), Wi-Fi üzerinden MQTT veya HTTP POST protokolü kullanılarak bir bulut platformuna (Thingspeak, Blynk, vb.) gönderilir.


📶 İleri Adım: Akıllı Şehir Entegrasyonu


  • Veri Görselleştirme: Bulut platformunda, gelen veriler anlık olarak bir harita üzerinde gösterilebilir. Park yerleri yeşil (boş) veya kırmızı (dolu) renkle işaretlenir.

  • Mobil Uygulama: Sürücüler, bu haritaya mobil bir uygulama veya web sitesi üzerinden erişerek en yakın boş park yerini anında görebilir.

Bu proje, bir akıllı şehrin temel hizmetlerinden biri olan akıllı park yönetimini küçük ölçekte simüle etmenizi sağlar.



#include <WiFi.h>


// Wi-Fi Bilgileri

const char* ssid = "WIFI_ADINIZ"; // Kendi Wi-Fi adınızı yazın

const char* password = "WIFI_ŞİFRENİZ"; // Kendi Wi-Fi şifrenizi yazın


// HC-SR04 Sensör Pinleri

const int trigPin = 22; // ESP32 GPIO 22'ye bağlı

const int echoPin = 23; // ESP32 GPIO 23'e bağlı


// Park Yeri Eşik Değerleri (cm cinsinden)

// Bu değerleri, sensörün monte edildiği yüksekliğe ve arabanın altına göre ayarlamanız gerekebilir.

const int BOS_PARK_MESAFESI = 50; // Bu mesafeden büyükse "BOŞ" kabul edilsin

const int DOLU_PARK_MESAFESI = 30; // Bu mesafeden küçükse "DOLU" kabul edilsin (araba var)


// Gecikme süresini (mikrosaniye cinsinden) saklamak için değişken

long duration;

// Mesafe bilgisini (cm cinsinden) saklamak için değişken

int distance;


void setup() {

Serial.begin(115200);


// HC-SR04 pinlerini ayarla

pinMode(trigPin, OUTPUT); // Trig pinini çıkış olarak ayarla

pinMode(echoPin, INPUT); // Echo pinini giriş olarak ayarla


// Wi-Fi'ye bağlan

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

}

Serial.println("");

Serial.println("WiFi Bağlandı!");

Serial.print("IP Adresi: ");

Serial.println(WiFi.localIP());

}


void loop() {

// HC-SR04'ten mesafe oku

// Trig pinine 10 mikrosaniye boyunca HIGH sinyali gönder (tetikleme)

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);


// Echo pinindeki HIGH sinyalinin süresini ölç

duration = pulseIn(echoPin, HIGH);


// Mesafeyi hesapla (ses hızı ~0.034 cm/mikrosaniye veya 340 m/s)

distance = duration * 0.034 / 2;


// Park durumunu belirle ve Seri Port'a yazdır

Serial.print("Mesafe: ");

Serial.print(distance);

Serial.println(" cm");


if (distance > BOS_PARK_MESAFESI) {

Serial.println("Park Yeri: BOŞ");

// *** BURAYA BULUTA "BOŞ" VERİSİ GÖNDERME KODU EKLENECEK ***

// sendParkStatusToCloud("BOŞ");

} else if (distance < DOLU_PARK_MESAFESI) {

Serial.println("Park Yeri: DOLU");

// *** BURAYA BULUTA "DOLU" VERİSİ GÖNDERME KODU EKLENECEK ***

// sendParkStatusToCloud("DOLU");

} else {

Serial.println("Park Yeri: BELİRSİZ (Ara değer)");

}


delay(2000); // Her 2 saniyede bir ölçüm yap

}


/*

// Örnek Buluta Veri Gönderme Fonksiyonu (HTTP POST ile)

// Kendi Bulut Servisi API'nize göre uyarlamanız gerekecektir.

void sendParkStatusToCloud(String status) {

// WiFiClient client;

// HTTPClient http;

// String serverPath = "http://your-cloud-api.com/park_status";

// http.begin(client, serverPath);

// http.addHeader("Content-Type", "application/json");


// String jsonPayload = "{\"status\":\"" + status + "\"}";

// int httpResponseCode = http.POST(jsonPayload);


// if (httpResponseCode > 0) {

// Serial.print("HTTP Yanıt Kodu: ");

// Serial.println(httpResponseCode);

// String response = http.getString();

// Serial.println(response);

// } else {

// Serial.print("HTTP İstek Hatası: ");

// Serial.println(httpResponseCode);

// }

// http.end();

}

*/




Yorumlar


bottom of page