Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza
Blog  ›  Projeler

Akıllı Otopark Projesi: IR Sensör, Servo ve LCD

Akıllı Otopark Projesi: IR Sensör, Servo ve LCD
Kısa cevap

Akıllı otopark projesi, her park yerine konan kızılötesi (IR) engel sensörleriyle dolu ve boş yerleri algılar, girişteki servo bariyeri yalnızca boş yer varsa açar ve boş yer sayısını 16x2 LCD ekranda gösterir. Arduino Uno ile 3 park yeri, bir giriş ve bir çıkış sensörü kullanılır.

Alışveriş merkezlerinin otoparklarında girişteki tabelada kaç boş yer kaldığı yazar ve otopark dolunca bariyer açılmaz. Bu projede aynı sistemi bir maket üzerinde kuruyoruz: her park yerinin altında bir IR sensör var, Arduino boş yerleri sayıyor, LCD ekran sonucu gösteriyor ve servo motor bariyeri açıp kapatıyor. Proje ortaokul ve lise teknoloji tasarım dersleri, TÜBİTAK 4006 bilim fuarları ve meslek lisesi bitirme ödevleri için uygundur.

Akıllı otopark sistemi nedir?

Akıllı otopark sistemi, park yerlerinin dolu ya da boş olduğunu sensörlerle algılayan, boş yer sayısını sürücülere gösteren ve girişi buna göre yöneten bir otomasyon sistemidir. Gerçek otoparklarda bu iş için tavana takılan ultrasonik sensörler, zemine gömülü manyetik sensörler ya da kameralar kullanılır.

Maketimizde sensörlerin yerini KY-032 kızılötesi engel sensörleri, bariyerin yerini SG90 servo motor, tabelanın yerini 16x2 I2C LCD ekran alır. Arduino Uno hepsini yönetir.

Hangi malzemeler gerekir?

Akıllı otopark için Arduino Uno, 5 adet IR engel sensörü, bir SG90 servo, I2C arayüzlü 16x2 LCD, breadboard ve jumper kablolar yeterlidir. Maket için bir mukavva ya da köpük levha, oyuncak arabalar ve bir dondurma çubuğu (bariyer kolu) gerekir.

Malzeme listesi

MalzemeAdetNe işe yarar?
Arduino Uno R3 (CH340, USB kablolu)1Sensörleri okur, bariyeri ve ekranı yönetir
KY-032 IR engel sensörü53 park yeri + giriş + çıkış
Tower Pro SG90 servo motor1Bariyer kolunu 0° ile 90° arasında çevirir
16x2 I2C LCD ekran1Boş yer sayısını gösterir
Terminalli 830 pin breadboard15V ve GND dağıtımı
140 parça kutulu jumper kablo seti1Sensör ve modül bağlantıları

KY-032 sensörü 3-5V ile çalışır, 2-40 cm arasındaki engeli algılar ve engel gördüğünde çıkışını LOW yapar. Modül üzerindeki iki trimpotla algılama mesafesi ayarlanır.

Devre nasıl bağlanır?

Park yeri sensörleri D4, D5 ve D6'ya, giriş sensörü D2'ye, çıkış sensörü D3'e, servo D9'a, LCD ise A4 (SDA) ve A5 (SCL) pinlerine bağlanır. Tüm modüller 5V ve GND hattından beslenir.

  1. Arduino'nun 5V pinini breadboard'un artı hattına, GND pinini eksi hattına bağlayın.
  2. Her KY-032 sensörünün + ucunu artı hattına, GND ucunu eksi hattına bağlayın. Modüldeki EN atlama teli (jumper) takılı kalmalı, EN ucu boş bırakılır.
  3. Çıkış (OUT) uçları: P1 → D4, P2 → D5, P3 → D6, giriş sensörü → D2, çıkış sensörü → D3.
  4. Servo: kahverengi → GND, kırmızı → 5V, turuncu (sinyal) → D9.
  5. LCD: GND → GND, VCC → 5V, SDA → A4, SCL → A5.
  6. Park sensörlerini her park yerinin arka duvarına, arabaya bakacak şekilde yerleştirin; giriş ve çıkış sensörlerini bariyerin iki yanına koyun.
  7. Bir arabayı sensörün önüne koyup modüldeki LED'in yandığı mesafeyi trimpotla 3-5 cm'ye ayarlayın.
Akıllı otopark bağlantı şeması: beş KY-032 IR sensörün OUT uçları Arduino Uno'ya bağlı; giriş sensörü D2'ye, çıkış sensörü D3'e, P1, P2 ve P3 park yeri sensörleri D4, D5 ve D6'ya; sensörler 5V ve GND ile besleniyor; SG90 servo bariyerin turuncu sinyal kablosu D9'a bağlı; 16x2 I2C LCD'nin SDA ucu A4'e, SCL ucu A5'e bağlı ve ekranda Bos yer: 2 ile P1:X P2:- P3:X yazıyor
Giriş D2, çıkış D3, park yerleri D4-D6 sensörlerine, servo bariyer D9'a, LCD A4 ve A5'e bağlanır; ekranda boş yer sayısı ve her yerin durumu görünür.

Sensörün maket duvarlarını görmemesi için algılama mesafesini kısa tutun. LCD'nin bağlantısı ve I2C adres bulma yöntemi 16x2 LCD ekran Arduino bağlantısı yazısında anlatılıyor.

Akıllı otopark kodu nasıl çalışır?

Kod her 100 ms'de üç park sensörünü okuyup boş yerleri sayar, sonucu LCD'ye yazar; girişte araç varsa ve boş yer kaldıysa ya da çıkışta araç varsa bariyeri açar, araç geçtikten 2 saniye sonra kapatır.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>

const byte YER[3] = {4, 5, 6};          // park yeri sensörleri
const byte GIRIS = 2, CIKIS = 3, SERVO_PIN = 9;
const int KAPALI = 0, ACIK = 90;        // bariyer açıları
LiquidCrystal_I2C lcd(0x27, 16, 2);     // ekran yoksa 0x3F deneyin
Servo bariyer;
bool acik = false;
unsigned long sonArac = 0;

bool dolu(byte pin) { return digitalRead(pin) == LOW; }  // engel = LOW

void setup() {
  for (byte i = 0; i < 3; i++) pinMode(YER[i], INPUT);
  pinMode(GIRIS, INPUT);
  pinMode(CIKIS, INPUT);
  bariyer.attach(SERVO_PIN);
  bariyer.write(KAPALI);
  lcd.init();
  lcd.backlight();
}

void loop() {
  byte bos = 0;
  lcd.setCursor(0, 1);
  for (byte i = 0; i < 3; i++) {
    bool d = dolu(YER[i]);
    if (!d) bos++;
    lcd.print('P'); lcd.print(i + 1); lcd.print(d ? ":X " : ":- ");
  }
  lcd.setCursor(0, 0);
  if (bos > 0) { lcd.print("Bos yer: "); lcd.print(bos); lcd.print("      "); }
  else lcd.print("OTOPARK DOLU    ");

  bool aracVar = (dolu(GIRIS) && bos > 0) || dolu(CIKIS);
  if (aracVar) {
    sonArac = millis();
    if (!acik) { bariyer.write(ACIK); acik = true; }
  } else if (acik && millis() - sonArac > 2000) {
    bariyer.write(KAPALI);
    acik = false;
  }
  delay(100);
}

LCD'nin ilk satırında "Bos yer: 2", ikinci satırında "P1:X P2:- P3:X" gibi bir durum görünür; X dolu, tire boş demektir. LCD Türkçe karakter gösteremediği için "Boş" yerine "Bos" yazılır. Bariyerin açılıp kapanma açılarını KAPALI ve ACIK sabitlerinden değiştirebilirsiniz.

Sistem hangi durumda ne yapar?

Sistem, giriş sensörü, çıkış sensörü ve boş yer sayısına bakarak bariyeri açar ya da kapalı tutar. Aşağıdaki tablo bütün durumları özetler.

DurumBoş yerBariyerLCD 1. satır
Araç yok1-3KapalıBos yer: 1-3
Girişte araç1-3Açılır (90°)Bos yer: 1-3
Girişte araç0Kapalı kalırOTOPARK DOLU
Çıkışta araçFark etmezAçılır (90°)Değişmez
Araç geçti-2 s sonra kapanır (0°)Yeni sayı

Servo motorun açı tutma mantığını servo motor nedir yazısında anlattık. Benzer bir bariyer mantığı kullanan otomatik kapı projesi de karşılaştırma için faydalıdır.

Maket nasıl hazırlanır?

Maket, 40x30 cm civarında bir mukavva ya da köpük levha üzerine park yerleri çizilip sensörler her yerin arka duvarına yerleştirilerek hazırlanır.

  • Park yerlerini oyuncak arabanızdan biraz geniş çizin; her yerin arka duvarına bir sensörü, ileri bakacak şekilde yapıştırın.
  • Servoyu girişin yanına sabitleyin ve koluna dondurma çubuğu yapıştırarak bariyer yapın.
  • Giriş sensörünü bariyerin dışına, çıkış sensörünü içine koyun.
  • LCD'yi girişte, sürücünün göreceği yükseklikte bir tabela gibi yerleştirin.
  • Kabloları levhanın altından geçirin; Arduino ve breadboard maketin arkasında kalsın.

Hangi güvenlik kurallarına dikkat edilmeli?

Sistem USB'den 5 V ile çalıştığı için güvenlidir; yine de şu kurallara uyun:

  • Devreyi yalnızca bilgisayarın USB çıkışından ya da USB powerbank'tan besleyin. 220V şebeke elektriğine hiçbir şey bağlamayın.
  • Projeyi öğretmen ya da yetişkin gözetiminde kurun; maket kesiminde maket bıçağını yetişkin yardımıyla kullanın.
  • Servo dönerken parmaklarınızı bariyer kolundan uzak tutun.
  • Arduino servo hareket ederken kendini yeniden başlatıyorsa servoyu 4 kalem pilden (6 V) besleyin ve pilin eksisini Arduino GND'sine bağlayın.
  • Bağlantı değiştirmeden önce USB kablosunu çıkarın.

Ödevinizi nasıl sunarsınız?

Ödevinizi, maketteki park yerlerini oyuncak arabalarla tek tek doldurup LCD'deki sayının ve bariyerin nasıl değiştiğini göstererek sunabilirsiniz.

  • Problem: "Sürücüler boş yer ararken ne kadar zaman ve yakıt harcar?"
  • Gösteri: Üç yeri sırayla doldurun, "OTOPARK DOLU" yazısını ve kapalı kalan bariyeri gösterin; sonra bir arabayı çıkarın.
  • Deney: Beyaz, kırmızı ve siyah arabalarla algılama mesafesini ölçüp tabloya yazın.
  • Rapor: Devre şemasını, kodun akış şemasını ve durum tablosunu ekleyin.
  • Geliştirme: Her yerin üstüne yeşil-kırmızı LED, giriş-çıkış sayacı ya da Wi-Fi ile telefondan izleme önerin.

Sık sorulan sorular

Siyah oyuncak araba neden algılanmıyor?

Siyah ve mat yüzeyler kızılötesi ışığı emdiği için IR sensöre daha az ışık geri döner. Bu yüzden siyah araba, beyaz arabaya göre çok daha yakından algılanır ya da hiç algılanmaz. Sensörün trimpotunu çevirerek hassasiyeti artırın veya arabanın sensöre bakan yüzüne beyaz bir etiket yapıştırın.

LCD ekranda yazı görünmüyorsa ne yapmalıyım?

LCD'de yazı görünmüyorsa önce arkasındaki I2C modülünün mavi trimpotunu çevirerek kontrastı ayarlayın. Arka ışık yanıyor ama yazı yoksa I2C adresi farklı olabilir; koddaki 0x27 değerini 0x3F yapın. LiquidCrystal_I2C kütüphanesinin kurulu olduğunu ve SDA'nın A4'e, SCL'nin A5'e bağlandığını kontrol edin.

IR sensör yerine HC-SR04 kullanılabilir mi?

Evet, HC-SR04 de kullanılabilir ve renkten etkilenmez. Ancak her HC-SR04 iki pin kullanır ve beş sensör için on pin gerekir. Ayrıca yan yana duran HC-SR04'ler birbirinin sesini duyabilir; sırayla ölçüm yapılmalıdır. Üç park yerli bir maket için IR sensörler daha basit ve daha ucuzdur.

Park yeri sayısı artırılabilir mi?

Evet, her yeni park yeri için bir sensör ve bir boş pin eklenerek sayı artırılabilir. Koddaki YER dizisine yeni pin numarasını, döngülerdeki 3 sayısının yerine yeni toplamı yazın. Arduino Uno'da D7, D8, D10-D13 ve A0-A3 pinleri boştur. Çok sayıda yer için LCD'nin ikinci satırı yetmeyeceğinden yalnızca boş yer sayısını gösterin.

Özet

  • Akıllı otopark, park yerlerini IR sensörlerle algılayıp boş yer sayısını LCD'de gösteren ve bariyeri yöneten bir sistemdir.
  • Bağlantı: park sensörleri D4-D6, giriş D2, çıkış D3, servo D9, LCD A4 (SDA) ve A5 (SCL).
  • KY-032 engel gördüğünde LOW verir; algılama mesafesi trimpotla 3-5 cm'ye ayarlanır.
  • Bariyer boş yer varsa girişte, her zaman çıkışta açılır ve araç geçtikten 2 saniye sonra kapanır.
  • Siyah ve mat arabalar IR ışığı emdiği için daha zor algılanır.
  • Devreyi yalnızca USB ile, yetişkin gözetiminde çalıştırın.

Bu yazıdaki ürünler

Diğer yazılar

11 Kasım 20266 dk okuma

Pense Çeşitleri: Yan Keski, Kargaburun ve Kombine Pense

Pense çeşitleri arasında seçim işe göre yapılır: tel ve komponent bacağı kesmek için yan keski, dar alanda tutmak ve bükmek için kargaburun,...

Devamını oku →
11 Kasım 20267 dk okuma

Işık Takip Eden Robot Yapımı: Arduino, LDR ve L298N

Işık takip eden robot, önüne takılan iki LDR ile hangi tarafın daha aydınlık olduğunu ölçüp tekerleklerini o yöne süren bir Arduino projesid...

Devamını oku →
11 Kasım 20266 dk okuma

İzoleli Tornavida ve 1000V VDE El Aletleri Nedir?

İzoleli tornavida, IEC 60900 (EN 60900) standardına göre 1000V AC ve 1500V DC gerilime kadar yalıtım için test edilmiş ve üzerinde çift üçge...

Devamını oku →
11 Kasım 20267 dk okuma

ESP8266 Hava Durumu Ekranı: NodeMCU, OLED ve Open-Meteo

ESP8266 hava durumu ekranı, NodeMCU kartının Wi-Fi ile internete bağlanıp Open-Meteo servisinden anlık sıcaklık, nem, rüzgâr ve hava durumu...

Devamını oku →
11 Kasım 20266 dk okuma

Havya Ucu Çeşitleri ve Bakımı: Konik, Keski, Bıçak

Havya ucu, lehimlenecek noktanın boyutuna göre seçilir: ince SMD ve sık bacaklar için konik (I), genel THT lehim için keski (D) ya da eğik k...

Devamını oku →
11 Kasım 20266 dk okuma

Ultrasonik Theremin Projesi: HC-SR04 ile Elle Müzik

Ultrasonik theremin, HC-SR04 sensörüyle elinizin uzaklığını ölçüp bu mesafeyi ses frekansına çeviren bir Arduino projesidir. El sensöre yakl...

Devamını oku →