top of page
Katman 0 Karesi - Kopya (2).png
Yazarın fotoğrafıAtakan Ekşi

MPU6050 sensörüyle deprem alarmı yapıp deprem anında mail gönderme


Projeyi yapmak için gerekli olan eşyalar: NodeMCU

MPU6050

Buzzer

Led

MPU6050 sensörüyle bir cismin uzaydaki durumunu ve bu durumu ne kadar ivmeyle değiştirdiğini öğrenebiliriz. Bende bu özellikten yararlanarak herhangi bir sarsıntıda ses veren, ışık yakan ve mail gönderen kod yazdım.


Mail göndermek için https://ifttt.com/create sitesini kullandım. Site pek çok algoritmaya izin veriyor. Ben webhooks ve gmail ile projeyi tamamladım. Şimdi sırasıyla yukardaki linke tıkladıktan sonra ne yapılması gerektiğini yazacağım: if -> webhooks -> receive the web request -> (event adına daha sonra kullanacağımız adı yazıyoruz ben deprem yazdım) -> then&that -> gmail -> send yourself an email -> (google izni verdikten sonra önümüze gelen sekmede subject ve body kısmına bize nasıl mail gelmesini istiyorsak onları yazıyoruz ben subject kısmına dikkat deprem body kısmına da dikkat sallantı farkedildi evden dışarı çıkın yazdım).

Şimdi sırada arduino kodumuza yazmamız gereken bilgileri öğrenmemiz lazım, bunun için soldaki resimde oklarla gösterdiğim webhooks simgesine tıklıyoruz. Çıkan sekmede documentation butonuna tıkladığımız zaman bilgileri alacağımız sekme karşımıza gelmiş oluyor. Karşımıza gelen sekmede Make a POST or GET web request to:yazan satırın altındaki linki (https://maker.ifttt.com/trigger/deprem/with/key/eevGD4z4bTWnS) kopyalıyoruz, parantez içindeki linki örnek olsun diye yazdım herkes kendi linkini kopyalamalı, bu linki daha sonra arduino kodumuza yapıştıracağız.

İfttt sitesinde yapmamız gerekenleri yaptık şimdi sırada NodeMCU kartımıza kodumuzu yüklemek var.


#include <ESP8266WiFi.h>//esp8266 kütüphanesini kodumuza ekliyoruz


const char* ssid = "ornek123";//wifi adi

const char* password = "ornek123";//wifi sifresi

const char* host = "maker.ifttt.com";

#include <MPU6050.h>//Mpu6050 kütühanesini libraryden indirip kodumuza ekliyoruz

#include <Wire.h>


MPU6050 sensor;


int16_t ivmeX , ivmeY , ivmeZ , GyroX , GyroY , GyroZ;

int16_t basX,basY,basZ,bgx,bgy,bgz;//mpu'dan çektiğimiz degerleri bu integerlara atayacağız

int pfark=150,nfark=-150;//hassaiyet ayarını yapıyoruz

//hassaiyeti arttırmak isterseniz bu sayıları daha küçük yazın


void setup() {


Serial.begin(115200);//115200 baud kullanıyoruz

//eger serial monitördeki degerlere bakmak isterseniz 115200 baud yazdığına emin olun

WiFi.begin(ssid, password);//wifi için bilgileri gönderdik


while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

}//wifiya baglandik

Wire.begin();

sensor.initialize();

pinMode(13,OUTPUT);

pinMode(15, OUTPUT);//buzzer ve led pinlerini aktif hale getirdik

digitalWrite(13, LOW);

digitalWrite(15, LOW);//buzzer ve led pinlerinin voltajlarını kestik

delay(3000);

sensor.getAcceleration(&basX, &basY, &basZ);

sensor.getRotation(&bgx, &bgy, &bgz);//mpu'dan gerekli bilgileri aldık

}


void loop() {

WiFiClient client;

const int httpPort = 80;

if (!client.connect(host, httpPort)) {

Serial.println("connection failed");

return;

}//ifttt sitesyle iletişimde miyiz kontrol ettik


sensor.getAcceleration(&ivmeX, &ivmeY, &ivmeZ);

sensor.getRotation(&GyroX, &GyroY, &GyroZ);//mpu'dan gerekli bilgileri tekrar aldik

//sensor.getMotion6(&ivmeX, &ivmeY, &ivmeZ, &GyroX, &GyroY, &GyroZ);


Serial.print("ivme X = ");

Serial.println(ivmeX);


Serial.print("ivme Y = ");

Serial.println(ivmeY);


Serial.print("ivme Z = ");

Serial.println(ivmeZ);


Serial.print("Gyro X = ");

Serial.println(GyroX);


Serial.print("Gyro Y = ");

Serial.println(GyroY);


Serial.print("Gyro Z = ");

Serial.println(GyroZ);

delay(10);

if ( pfark < bgx-GyroX || nfark > bgx-GyroX || pfark < bgy-GyroY || nfark > bgy-GyroY || pfark < bgz-GyroZ || nfark > bgz-GyroZ){

//eger setupda ölçtüğümüz değerler voidde ölçtüğümüz degerlerden farklıysa hareket veya sallantı //olduğunu anlarız bu yüzden bu fark belli bir degeri geçerse (150 diye belirledik) alarmımızı aktif //hale getiren bir if komutu yazdık

for(int i=0; i<50; i++){

digitalWrite(13,HIGH);

digitalWrite(15,HIGH);

delay(50);

digitalWrite(13,LOW);

digitalWrite(15,LOW);

delay(50);//led ve buzzerımızı uyarı için 50 kere kapatıp açtık

}

String url = "/trigger/deprem/json/with/key/eevGD4z4bTWnS";//buraya yukarıda //anlattığım iftt sitesinden kopyaladaıgımız linki yapıştırıyoruz (event kismina kendi etiketinizi yazın)


client.print(String("GET ") + url + " HTTP/1.1\r\n" +

"Host: " + host + "\r\n" +

"Connection: close\r\n\r\n");//kendimize mail gönderiyoruz

delay(5000);

}

delay(100);

}


Kodumuz hazır, şimdi bu kodu NodeMCU kartımıza yüklüyoruz ve deprem sensörümüz HAZIR!!!


Bu kodu NodeMCU kartımıza yükledikten sonra projemizin çalışması gerekir.

Eğer devremiz istediğimiz gibi çalışmıyorsa sırasıyla şunları kontrol edin:

Pin bağlantıları doğru yapıp kodumuzda doğru pinlerden output vermemiz lazım.

Doğru link kopyalayıp yapıştırmamız lazım.

Wire.h ESP8266WiFi.h MPU6050.h kütüphanelerinin yüklü olması lazım.

Karta ilk güç verdiğimiz zaman (kart setup kısmını derlerken) kartımızı hareket ettirmememiz lazım.

Son olarak wifi adınız veya şifreniz özel karakter içeriyorsa nodemcu wifiya bağlanamayabilir, bunları değiştirip tekrar denemenizi öneririm.




Yukarıda projenin bitmiş halini izleyebilirsiniz.

325 görüntüleme0 yorum

Son Yazılar

Hepsini Gör

Comments


bottom of page