Bu proje, YOLOv8 yapay zeka modeli kullanarak gerçek zamanlı insan tespiti yapan ve kişilere olan mesafeyi hesaplayarak çarpışma riski oluşmadan önce uyarı veren bir güvenlik sistemidir.
Sistem, bir kamera aracılığıyla çevreyi izler, yaklaşan kişileri tespit eder ve mesafeye göre üç seviyeli bir alarm sistemi ile kullanıcıyı uyarır:
- 🔴 Tehlike Bölgesi (0-100 cm): Sesli ve görsel alarm
- 🟡 Dikkat Bölgesi (100-200 cm): Görsel uyarı
- 🟢 Güvenli Bölge (200+ cm): Normal durum
| Alan | Açıklama |
|---|---|
| 🦯 Görme Engelli Bireylere Yardımcı Teknoloji | Çevredeki insanları algılayarak sesli uyarı verir |
| 🚗 Otonom Araçlar | Park sensörü ve yaya tespiti |
| 🤖 Robotik Sistemler | Çevre farkındalığı ve engel algılama |
| 🔐 Güvenlik Sistemleri | Kısıtlı alanlara yetkisiz giriş tespiti |
| 😷 Sosyal Mesafe Takibi | Pandemi döneminde mesafe kontrolü |
| 🏭 Endüstriyel Güvenlik | İş makinelerinde operatör güvenliği |
- ✅ Gerçek Zamanlı AI Tespiti: YOLOv8 ile ~30 FPS hızında insan algılama
- ✅ Mesafe Hesaplama: Kamera tabanlı görüntü işleme ile 30-300 cm arası ölçüm
- ✅ Kablosuz İletişim: Bluetooth üzerinden Arduino ile veri aktarımı
- ✅ Üç Seviyeli Alarm: Mesafeye göre kademeli uyarı sistemi
- ✅ LCD Ekran: Anlık mesafe ve durum göstergesi
- ✅ Sesli Uyarı: Buzzer ile kritik mesafelerde alarm
- ✅ Görsel Uyarı: LED ile durum gösterimi
- ✅ Canlı Görüntüleme: Bilgisayar ekranında tespit sonuçları
- ✅ Düşük Güç Tüketimi: Powerbank ile taşınabilir kullanım
| # | Bileşen Adı | Adet | Açıklama |
|---|---|---|---|
| 1 | Arduino Uno R3 | 1 | Mikrodenetleyici (ATmega328P) |
| 2 | HC-05 Bluetooth Modülü | 1 | Kablosuz seri iletişim |
| 3 | LCD Ekran 16x2 | 1 | Karakter tabanlı görüntüleme ekranı |
| 4 | USB Web Kamera | 1 | Görüntü yakalama (En az 720p önerilir) |
| 5 | Buzzer (Piezo) | 1 | Pasif veya aktif buzzer (5V) |
| 6 | LED | 1 | 5mm LED - Herhangi bir renk |
| 7 | Potansiyometre | 1 | 10kΩ - LCD kontrast ayarı için |
| 8 | Breadboard | 1 | Full+ veya 830 pin |
| 9 | Jumper Kablolar | 20-25 | Erkek-Erkek bağlantı kabloları |
| 10 | Powerbank | 1 | 5V/2A çıkışlı |
| 11 | USB Kablosu | 1 | Arduino bağlantısı için (Tip A - Tip B) |
- Windows 10/11, Linux, macOS
- 🐍 Python: 3.8 veya üzeri
- 🔧 Arduino IDE: 1.8.19 veya üzeri
opencv-python
ultralytics
pyserial| LCD Pin No | Pin İsmi | Arduino Bağlantısı | Açıklama |
|---|---|---|---|
| 1 | VSS | GND (Breadboard) | Topraklama |
| 2 | VDD | 5V (Breadboard) | Güç girişi |
| 3 | V0 | Potansiyometre Orta Uç | Kontrast ayarı |
| 4 | RS | Digital Pin 12 | Register Select |
| 5 | RW | GND (Breadboard) | Read/Write (Write modu) |
| 6 | E | Digital Pin 11 | Enable sinyali |
| 11 | D4 | Digital Pin 5 | Veri hattı 4 |
| 12 | D5 | Digital Pin 4 | Veri hattı 5 |
| 13 | D6 | Digital Pin 3 | Veri hattı 6 |
| 14 | D7 | Digital Pin 2 | Veri hattı 7 |
| 15 | A (LED+) | 5V (Breadboard) | Arka ışık pozitif |
| 16 | K (LED-) | GND (Breadboard) | Arka ışık negatif |
Not: LCD 4-bit modunda çalışır (D0-D3 pinleri kullanılmaz).
| Potansiyometre Pin | Arduino Bağlantısı | Açıklama |
|---|---|---|
| Sol Bacak (Pin 1) | GND (Breadboard) | Topraklama |
| Orta Bacak (Pin 2) | LCD Pin 3 (V0) | Kontrast çıkışı |
| Sağ Bacak (Pin 3) | 5V (Breadboard) | Güç girişi |
| HC-05 Pin | Arduino Bağlantısı | Açıklama |
|---|---|---|
| VCC | 5V (Breadboard) | Güç girişi (3.3V-6V) |
| GND | GND (Breadboard) | Topraklama |
| TXD | Digital Pin 8 (Arduino RX) | Veri gönderimi |
| RXD | Digital Pin 7 (Arduino TX) | Veri alımı |
Önemli Not: HC-05'in TXD pini Arduino'nun RX pinine (D8), RXD pini ise Arduino'nun TX pinine (D7) bağlanmalıdır.
| Buzzer Pin | Arduino Bağlantısı | Açıklama |
|---|---|---|
| + (Uzun Bacak) | Analog Pin A0 | Sinyal pini |
| - (Kısa Bacak) | GND (Breadboard) | Topraklama |
| LED Pin | Arduino Bağlantısı | Açıklama |
|---|---|---|
| + (Uzun Bacak/Anode) | Analog Pin A1 | Sinyal pini |
| - (Kısa Bacak/Cathode) | GND (Breadboard) | Topraklama |
Not: İsteğe bağlı olarak LED'in ömrünü uzatmak için 220Ω'luk bir direnç eklenebilir.
| Arduino Pin | Bağlı Bileşen | Fonksiyon |
|---|---|---|
| 5V | Breadboard + Hattı | Güç kaynağı |
| GND | Breadboard - Hattı | Topraklama |
| D2 | LCD D7 | Veri |
| D3 | LCD D6 | Veri |
| D4 | LCD D5 | Veri |
| D5 | LCD D4 | Veri |
| D7 | Bluetooth RXD | Veri alımı (TX) |
| D8 | Bluetooth TXD | Veri gönderimi (RX) |
| D11 | LCD E | Enable |
| D12 | LCD RS | Register Select |
| A0 | Buzzer (+) | Ses çıkışı |
| A1 | LED (+) | Işık çıkışı |
-
Breadboard Hazırlığı: Arduino 5V pinini breadboard'un (+) hattına, GND pinini ise (-) hattına bağlayarak güç hatlarını oluşturun.
-
Potansiyometre Bağlantısı: Potansiyometreyi breadboard'a yerleştirin ve güç, toprak ve çıkış pinlerini ilgili yerlere bağlayın.
-
LCD Ekran Bağlantısı: LCD'nin güç, kontrast, kontrol ve veri pinlerini şemaya uygun şekilde Arduino ve breadboard'a bağlayın.
-
Bluetooth Modülü Bağlantısı: HC-05 modülünün VCC, GND, TXD ve RXD pinlerini bağlayın.
-
Buzzer Bağlantısı: Buzzer'ın pozitif bacağını Arduino A0'a, negatif bacağını GND'ye bağlayın.
-
LED Bağlantısı: LED'in pozitif bacağını Arduino A1'e, negatif bacağını GND'ye bağlayın.
-
Son Kontroller: Tüm bağlantıların doğru ve sağlam olduğundan emin olun. Kısa devre olup olmadığını kontrol edin.
git clone https://github.com/basaranbaran/AI-Powered-Distance-Alert-With-Arduino.git
cd AI-Powered-Distance-Alert-With-ArduinoSanal ortam oluşturun (önerilir):
# Windows
python -m venv venv
venv\Scripts\activate
# Linux/macOS
python -m venv venv
source venv/bin/activateGerekli kütüphaneleri yükleyin:
pip install -r requirements.txt- Arduino IDE'yi indirip kurun
- Arduino'yu USB ile bilgisayara bağlayın
- Tools > Board > Arduino Uno seçeneğini belirleyin
- Tools > Port menüsünden doğru COM portunu seçin
arduino-real/arduino-real.inodosyasını açın ve Arduino'ya yükleyin
- Windows ayarlarından "Bluetooth ve Cihazlar" bölümüne gidin
- "Cihaz Ekle" seçeneği ile HC-05 modülünü bulun ve eşleştirin
- Varsayılan şifre:
1234veya0000
- Varsayılan şifre:
- Aygıt Yöneticisi'nden HC-05'e atanan Giden (Outgoing) COM port numarasını not edin
arduino-ai.pydosyasını açın vearduino_portdeğişkenini kendi COM portunuzla güncelleyin:
arduino_port = 'COM8' # Kendi COM portunuzu yazın (örn: 'COM3', 'COM5')Doğru mesafe ölçümü için cm_constant değerini ayarlamanız gerekebilir:
- Kamera önünde bilinen bir mesafede durun (örn: 100 cm)
- Programın ekranda gösterdiği mesafeyi not alın (örn: 85 cm)
- Formülü uygulayın:
Yeni cm_constant = Eski_constant × (Gerçek_Mesafe / Görünen_Mesafe)
Örnek: 40000 × (100 / 85) = 47058
arduino-ai.pydosyasındakicm_constantdeğerini güncelleyin:
cm_constant = 47058 # Hesapladığınız yeni değeri yazın- Arduino'yu powerbank ile besleyin
- Kamerayı bilgisayara bağlayın
- Bluetooth bağlantısının aktif olduğundan emin olun
python arduino-ai.py✅ Bağlantı Başarılı
🎥 Kamera başlatıldı. Çıkmak için 'q' tuşuna basın.
Programı kapatmak için kamera penceresinde 'q' tuşuna basın.
Kamera görüntüsünden insan tespiti yapılır. Tespit edilen kişinin ekrandaki sınırlayıcı kutusunun genişliğine göre mesafe hesaplanır:
Mesafe (cm) = cm_constant / kutu_genişliği
| Mesafe | Durum | Buzzer | LED | LCD Ekran | Kamera Rengi |
|---|---|---|---|---|---|
| 0-100 cm | 🔴 ÇARPIŞMA | ✅ AÇIK | ✅ AÇIK | "TEHLIKE!" | Kırmızı Kutu |
| 100-200 cm | 🟡 DİKKAT | ❌ KAPALI | ✅ AÇIK | "DIKKAT!" | Sarı Kutu |
| 200+ cm | 🟢 GÜVENLİ | ❌ KAPALI | ❌ KAPALI | "GUVENLI" | Yeşil Kutu |
| Sorun | Çözüm |
|---|---|
| LCD Ekran Boş | • Potansiyometre ile kontrast ayarı yapın • Güç bağlantılarını kontrol edin |
| Bluetooth Bağlanmıyor | • Python kodundaki COM portunun doğru olduğundan emin olun • Modülü yeniden eşleştirin |
| Arduino'ya Kod Yüklenmiyor | • Kod yüklerken Bluetooth modülünü geçici olarak devreden çıkarın • D0/D1 pinleri USB iletişimi ile çakışabilir |
| Mesafe Değerleri Yanlış | • cm_constant değerini yeniden kalibre edin |
| Kamera Açılmıyor | • cv2.VideoCapture(0) satırındaki 0 değerini 1 veya 2 olarak değiştirin |
| Özellik | Değer |
|---|---|
| Tespit Hızı | ~30 FPS (YOLOv8n modeli) |
| Mesafe Aralığı | 30 cm - 300 cm |
| Hassasiyet | ±10 cm |
| İletişim Gecikmesi | ~100 ms (Bluetooth dahil) |
| Güç Tüketimi | ~500 mA @ 5V |
| Pil Ömrü | 4-6 saat (10000mAh powerbank ile) |
| Tespit Açısı | Kamera FOV'ye bağlı (~70°) |
