Back to Projects
Completed

My Graduation Project - Radar Based Motorcycle Detection With İmage Processing

Çukurova Üniversitesi Bitirme Projem - Radar Tetiklemeli Motosiklet Tespit Sistemi

Technologies

STM32F411RE HB100 Doppler Radar MCP6002 Op-Amp ADC DMA - Timer Triggered Sampling CMSIS-DSP FFT UART Communication ESP32-S3 Sense YOLO11s - OpenCV Event-Driven Embedded Systems

Radar Tetiklemeli Motosiklet Tespit Sistemi


Proje Tanımı

Şehirlerde kaldırımlarda motosiklet kullanımı hem yayalar için ciddi bir güvenlik problemi oluşturuyor hem de akıllı şehir uygulamalarında önemli bir araştırma konusu olarak karşımıza çıkıyor. Bu tür ihlalleri tespit etmek için en yaygın yöntem, şehir kameralarından gelen görüntülerin sürekli olarak görüntü işleme algoritmaları ile analiz edilmesidir. Ancak şehir ölçeğinde düşünüldüğünde yüzlerce kameranın 7 gün 24 saat analiz edilmesi oldukça yüksek işlem gücü gerektirir. Sürekli çalışan GPU sunucuları, yüksek enerji tüketimi ve büyük sunucu maliyetleri bu yaklaşımın en büyük dezavantajlarıdır.  

Bu projede amacım görüntü işleme algoritmalarını tamamen ortadan kaldırmak değil, yalnızca gerçekten gerekli olduğu anda çalıştıran olay tetiklemeli (event-triggered) bir mimari geliştirmekti.

Sistem, hareketi ilk olarak düşük maliyetli bir Doppler radar ile algılıyor. Eğer radar verileri motosiklet benzeri hızlı bir hareket gösteriyorsa ancak o zaman kamera devreye giriyor ve görüntüler sunucuya gönderiliyor. Böylece görüntü işleme yalnızca birkaç saniyelik veri üzerinde çalışıyor ve sürekli video analizi yapılmasına gerek kalmıyor.


Sistemin Yapısı

Projeyi birbirinden bağımsız çalışan iki karar katmanı ve bir doğrulama katmanı olacak şekilde tasarladım.

Birinci katman, tamamen gömülü sistem tarafında çalışıyor.

Burada HB100 Doppler radar modülü çevrede oluşan hareketleri algılıyor ve analog IF (Intermediate Frequency) sinyali üretiyor. STM32 bu sinyali gerçek zamanlı analiz ederek hareketin karakteristiğini çıkarıyor.

Eğer analiz sonucunda hızlı hareket eden araç benzeri bir nesne tespit edilirse sistem ikinci aşamaya geçiyor.

İkinci katmanda ESP32-S3 Sense kısa süreli görüntü serisi yakalıyor.

Son katmanda ise Python tabanlı sunucu bu görüntüler üzerinde YOLO11s modeli çalıştırarak gerçekten motosiklet olup olmadığını doğruluyor.

Bu mimari sayesinde;

  1. Radar düşük maliyetli ön filtre görevi görüyor.
  2. Kamera yalnızca gerektiğinde aktif oluyor.
  3. Sunucu yalnızca önemli olayları analiz ediyor.
  4. Sürekli video işleme yükü büyük ölçüde azaltılıyor.


HB100 Doppler Radar ve Analog Sinyal İşleme

Bu projenin en çok zaman ayırdığım kısmı radar sinyalinin güvenilir şekilde okunabilmesini sağlayan analog taraftı.

HB100 yaklaşık 10.525 GHz frekansında çalışan bir Doppler radar modülüdür. Hareket eden cisimlerden yansıyan mikrodalga sinyallerindeki Doppler frekans kaymasını kullanarak hareket bilgisini üretir.

Ancak HB100 doğrudan hız bilgisi üretmez.

Radar yalnızca çok düşük genlikli bir analog IF sinyali üretir. Bu sinyal doğrudan STM32 ADC girişine bağlanabilecek seviyede değildir.

Bu nedenle radar ile mikrodenetleyici arasına tamamen kendim tasarladığım iki kademeli bir analog sinyal koşullandırma devresi geliştirdim.  

Bu devrede;

  1. HB100 çıkışındaki AC sinyal önce ayrıştırıldı.
  2. ADC’nin negatif voltaj okuyamaması nedeniyle sinyal VREF etrafında biaslandı.
  3. MCP6002 op-amp kullanılarak iki aşamalı yükseltme gerçekleştirildi.
  4. Potansiyometre ile ikinci kazanç kademesi ayarlanabilir hale getirildi.
  5. RC filtreleme ile yüksek frekanslı gürültü azaltıldı.
  6. Besleme tarafında decoupling kapasitörleri kullanılarak daha stabil bir analog yapı oluşturuldu.

Bu analog front-end sayesinde oldukça düşük seviyedeki radar sinyalleri STM32 tarafından güvenilir şekilde örneklenebilir hale geldi.


STM32 ile Sinyal İşleme

Analog taraftan gelen sinyal STM32F411RE üzerinde tamamen gerçek zamanlı olarak işlenmektedir.

ADC manuel olarak başlatılmıyor.

Bunun yerine TIM2 belirlenen örnekleme frekansında ADC’yi otomatik olarak tetikliyor. Böylece her örnek eşit zaman aralıklarında alınıyor. Frekans analizi yapılacağı için bu oldukça kritik bir noktadır.  

ADC sonuçları DMA Circular Mode kullanılarak belleğe aktarılıyor.

İşlemci sürekli ADC okumak yerine yalnızca DMA’nın hazırladığı veri bloklarını işliyor.

Her 256 örnek tamamlandığında DMA kesmesi oluşuyor ve yeni FFT verisi hazır hale geliyor.

Bu yapı;

  1. CPU yükünü ciddi şekilde azaltıyor.
  2. Gerçek zamanlı çalışmayı kolaylaştırıyor.
  3. Örnek kaybını engelliyor.
  4. Sabit örnekleme hızını koruyor.


FFT ile Hareket Analizi-Tespiti

Radar sinyali zaman domeninde doğrudan yorumlanabilecek bir veri değildir.

Bu nedenle her veri bloğu üzerinde CMSIS-DSP kütüphanesi kullanılarak 256 noktalı FFT uygulanmaktadır.  

FFT işleminden önce ADC verisinin ortalaması hesaplanarak DC bileşen kaldırılıyor.

Ardından FFT uygulanıyor ve frekans spektrumu elde ediliyor.

Bu spektrumdan;

  1. baskın Doppler frekansı,
  2. maksimum spektrum genliği,
  3. sinyal gücü

hesaplanıyor.

Daha sonra belirlediğim deneysel eşik değerleri kullanılarak hareket sınıflandırılıyor.

Örneğin;

  1. düşük frekans + düşük güç → çevresel gürültü
  2. düşük frekans → yaya hareketi
  3. yüksek frekans + yüksek güç → motosiklet benzeri hızlı hareket

Bu aşamada herhangi bir görüntü işleme yapılmadan yalnızca radar sinyali kullanılarak ilk karar veriliyor.


STM32 to ESP32 İletişimi

STM32 yalnızca hızlı hareket algıladığı zaman ESP32-S3 Sense kartını UART üzerinden tetikliyor.  

Normal şartlarda ESP32 sürekli kamera çalıştırmıyor.

Bu sayede;

  1. enerji tüketimi azalıyor,
  2. gereksiz görüntü oluşmuyor,
  3. Wi-Fi trafiği minimum seviyede tutuluyor.

UART haberleşmesi yalnızca olay oluştuğunda gerçekleşiyor.

Bu da sistemi tamamen event-driven hale getiriyor.


ESP32-S3 Sense ile Görüntülerin Yakalanması

ESP32 sistemin ikinci karar katmanı değildir.

Görevi yalnızca radarın oluşturduğu olayı görsel veri ile desteklemektir.

UART tetiklemesi geldikten sonra ESP32 yaklaşık üç saniye boyunca toplam 60 kare yakalıyor.

Yakalanan kareler doğrudan gönderilmiyor.

Önce PSRAM içerisine kaydediliyor.

Bu yöntem sayesinde ağ gecikmesi nedeniyle kare kaybı yaşanmıyor.

Daha sonra tüm kareler TCP bağlantısı üzerinden Python sunucuya aktarılıyor.  


Server Tarafında YOLO ile Son Doğrulama

Sunucu tarafında Python ile geliştirdiğim uygulama ESP32’den gelen görüntüleri olay bazlı klasörler halinde saklıyor.

Her olay bağımsız olarak analiz ediliyor.

YOLO11s modeli gerçek motosiklet görüntüleri ile eğitildi.

Sunucu yalnızca tek kareye bakarak karar vermiyor.

Yaklaşık 60 karenin tamamı analiz ediliyor.

Her kare için;

  1. güven skoru,
  2. tespit edilen sınıf,
  3. nesne sayısı,
  4. en iyi kare

hesaplanıyor.

Daha sonra olay seviyesinde pozitif kare oranı ve maksimum confidence değeri birlikte değerlendirilerek nihai karar oluşturuluyor. Böylece tek bir yanlış tespit yerine zamansal tutarlılık da karar mekanizmasına dahil edilmiş oluyor.  


Deneysel Videolar:

  1. Video 1 – Radar signal and system demonstration
  2. Video 2 – Radar signal and system demonstration 2
  3. Video 3 - Speed and detection test-explanation with HB100


Özet

Bu proje yalnızca bir motosiklet tespit sistemi geliştirmekten çok daha fazlasını amaçlıyor.

Temel hedefim, şehir genelinde sürekli çalışan görüntü işleme sistemlerine alternatif olabilecek düşük maliyetli bir event-triggered edge computing mimarisi geliştirmekti.

Proje boyunca analog elektronik tasarımı, gömülü yazılım geliştirme, gerçek zamanlı DSP uygulamaları, UART ve TCP haberleşmesi, bilgisayarlı görü, sunucu tarafı yazılım geliştirme ve sistem entegrasyonu gibi birçok farklı alanı tek bir sistem içerisinde bir araya getirdim.

Bu yapı, gelecekte farklı radar sensörleri, gelişmiş sinyal işleme algoritmaları veya daha güçlü yapay zekâ modelleriyle genişletilebilecek modüler bir temel sunmaktadır.