İSTANBUL İÇİ SAAT 16:00'A KADAR VERECEĞİNİZ 2500₺ ve ÜZERİ SİPARİŞLERİNİZ AYNI GÜN KAPINIZDA 🏍️
500 TL üzeri ücretsiz kargo
İSTANBUL İÇİ SAAT 16:00'A KADAR VERECEĞİNİZ 2500₺ ve ÜZERİ SİPARİŞLERİNİZ AYNI GÜN KAPINIZDA 🏍️
500 TL üzeri ücretsiz kargo
SW-520D Titreşim Sensörü ile Arduino Deprem Uyarı Sistemi (Adım Adım Proje)

SW-520D Titreşim Sensörü ile Arduino Deprem Uyarı Sistemi (Adım Adım Proje)

SW-520D Titreşim Sensörü ile Arduino Deprem Uyarı Sistemi (Adım Adım Proje)


SW-520D Titreşim Sensörü Nedir?


SW-520D titreşim sensörü, bir devreye mekanik titreşim veya eğilme algılandığında elektriksel sinyal üreten basit bir anahtar görevi görür. İçerisindeki metal bir silindir ve bu silindirle temas edebilen serbest bir yaydan oluşur. Sensör, hareketsizken devreyi açık tutar; herhangi bir titreşim veya sarsıntı meydana geldiğinde ise yay, metal silindire temas ederek devreyi kapatır ve sinyal çıkışı oluşur.


Projede Ne Yapacağız? Deprem Uyarı Sistemi

Bu projede SW-520D titreşim sensörü kullanarak basit bir deprem uyarı sistemi yapımını inceleyeceğiz. Sistemde titreşim yokken beyaz LED’ler yanacak, titreşim olduğunda ise kırmızı LED’ler yanıp sönerken buzzer ötüp susacaktır. Titreşim algılandıktan sonra butona basılması suretiyle sistemin normal haline döndüğünün gözlenmesiyle proje tamamlanacaktır.


Gerekli Malzemeler


Adet Parça Not
1Arduino UnoUyumlu klon kullanılabilir
1BreadboardDevre dizilimi için
1SW-520D Titreşim SensörüNO tip “shake switch”
3Beyaz LEDNormal mod göstergesi
3Kırmızı LEDAlarm göstergesi
1Pasif Buzzertone() ile sürülür
1Push ButonAlarm reset
7220 Ω DirençLED seri dirençleri
110K Ω DirençButon pull-down
Jumper KablolarBağlantılar için

Devre Şeması


Devre dizilimini bu görsel üzerinden takip edebilirsiniz.


Arduino Kodu


// Sensör, LED, buzzer ve buton pinleri tanımlanıyor
const int whiteLed1 = 2;
const int whiteLed2 = 3;
const int whiteLed3 = 4;
const int redLed1   = 5;
const int redLed2   = 6;
const int redLed3   = 7;
const int vibSensor = 8;
const int buzzer    = 9;
const int buttonPin = 10;

bool alarmActive = false; // Durum takip değişkeni

void setup() {
  // Pinleri giriş/çıkış olarak ayarla
  pinMode(vibSensor, INPUT);
  pinMode(buttonPin, INPUT); // Pull-down direnci harici
  pinMode(whiteLed1, OUTPUT);
  pinMode(whiteLed2, OUTPUT);
  pinMode(whiteLed3, OUTPUT);
  pinMode(redLed1, OUTPUT);
  pinMode(redLed2, OUTPUT);
  pinMode(redLed3, OUTPUT);
  pinMode(buzzer, OUTPUT);
  normalMode();
}

void loop() {
  int sensorState = digitalRead(vibSensor);
  int buttonState = digitalRead(buttonPin);

  if (sensorState == HIGH && !alarmActive) {
    alarmMode();
  }
  if (alarmActive && buttonState == HIGH) {
    normalMode();
  }
  if (alarmActive) {
    digitalWrite(redLed1, HIGH);
    digitalWrite(redLed2, HIGH);
    digitalWrite(redLed3, HIGH);
    tone(buzzer, 1000);
    delay(200);
    digitalWrite(redLed1, LOW);
    digitalWrite(redLed2, LOW);
    digitalWrite(redLed3, LOW);
    noTone(buzzer);
    delay(200);
  }
}

void alarmMode() {
  alarmActive = true;
  digitalWrite(whiteLed1, LOW);
  digitalWrite(whiteLed2, LOW);
  digitalWrite(whiteLed3, LOW);
}

void normalMode() {
  alarmActive = false;
  digitalWrite(whiteLed1, HIGH);
  digitalWrite(whiteLed2, HIGH);
  digitalWrite(whiteLed3, HIGH);
  digitalWrite(redLed1, LOW);
  digitalWrite(redLed2, LOW);
  digitalWrite(redLed3, LOW);
  noTone(buzzer);
}

İpuçları

  • SW-520D sensörünü kablolarken titreşim kaynaklı yalancı tetiklemeleri azaltmak için kabloları kısa tutun.
  • Buton için dahili INPUT_PULLUP da tercih edilebilir; buna göre lojik düzeyini ters çevirmek gerekir.
  • Buzzer tonunu değiştirmek için tone(buzzer, frekans) değerini güncelleyebilirsiniz.

İlgili Ürünler


Bu ve bunun gibi birçok projeyi geliştirmek için 38 Parça 185 Bileşenli Gelişmiş Maker Setini tercih edebilir veya, Arduino kartları ve farklı sensörlere göz atabilirsiniz.


Kaynak ve telif: Kirpilab. Bu içerik eğitim amaçlıdır.