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 |
---|---|---|
1 | Arduino Uno | Uyumlu klon kullanılabilir |
1 | Breadboard | Devre dizilimi için |
1 | SW-520D Titreşim Sensörü | NO tip “shake switch” |
3 | Beyaz LED | Normal mod göstergesi |
3 | Kırmızı LED | Alarm göstergesi |
1 | Pasif Buzzer | tone() ile sürülür |
1 | Push Buton | Alarm reset |
7 | 220 Ω Direnç | LED seri dirençleri |
1 | 10K Ω Direnç | Buton pull-down |
— | Jumper Kablolar | Bağ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.