Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

STM32 Akıllı Yangın Algılama ve Acil Durum Tahliye Sistemi

STM32F407 tabanlı, duman sensörü ile ortamı sürekli izleyen, tehlike anında servo motoru otomatik olarak acil pozisyona getiren ve buzzer ile uyaran tam otomatik yangın güvenlik sistemi.

Mimari: Tek Dosya — 4 Agent

Tüm sistem Core/Src/main.c içinde 4 mantıksal agent olarak modüler şekilde ayrılmıştır.

# Agent Sorumluluk
1 HARDWARE delay_us, LCD sürücüsü, servo PWM, buzzer ton üretimi
2 SENSOR ADC okuma + 3 kademeli gürültü filtresi
3 ACTUATOR LCD ekran (yalnızca değişince güncelleme)
4 LOGIC Durum makinesi, edge-detect debounce'lu butonlar

Pin Haritası

Bileşen Pin Mod
LCD RS PD0 Output
LCD EN PD1 Output
LCD D4-D7 PD2-PD5 Output
Servo PWM PB6 TIM4_CH1 (AF2)
Buzzer PE11 Output (passive, ton GPIO toggle ile)
Alarm LED PE10 Output
Manuel LED PE9 Output
Ana şalter PA0 Input pull-down, active-HIGH
Manuel + PE7 Input pull-down, active-HIGH
Manuel − PE8 Input pull-down, active-HIGH
Duman sensörü PA5 ADC1_CH5

Çalışma Akışı

  1. Başlatma — PA0'a basılır → sistem aktifleşir, servo 90°'ye konumlanır.
  2. İzleme — 250 ms'de bir ADC üzerinden duman okunur.
  3. Filtreleme — Eşik > 500 art arda 3 kez aşılırsa tehlike onaylanır.
  4. Alarm — Buzzer kısa burst çalar, alarm LED yanar, LCD Hava: KIRLI!.
  5. Manuel — PE7/PE8 ile servo açısı her 15 ms'de 2°'lik adımlarla değişir.
  6. Kapanma — Tekrar PA0 → tüm çıkışlar pasif, LCD Sistem Kapandi.

Optimizasyon Notları

  • Non-blocking ana döngü — ana şalter dahil hiçbir buton için HAL_Delay ya da while(button) busy-wait yok. Edge-detect + 50 ms timestamp debounce.
  • LCD diff update — servo açısı veya alarm durumu değişmedikçe LCD'ye yazılmıyor (titreme ve I/O yükü minimum).
  • Servo write guard — Servo_Ayarla() aynı açıya gelirse CCR'a yazmıyor.
  • DWT cycle counter — delay_us() HAL'dan bağımsız, donanım sayaç.
  • Tek dosya — tüm sürücüler ve mantık main.c içinde; harici header gerekmez.

Keil Projesi Ayarları

  • Source Group: Core/Src/main.c (tek dosya yeterli, lcd.c kullanılmıyor)
  • Servo kablosu: PB6'ya bağlanmalı (PD12 LCD_RS ile çakışırdı).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages