Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

depremdedektörü etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
depremdedektörü etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

1 Mayıs 2021 Cumartesi

Arduino ve MPU-6050 Deprem Dedektörü

 

Arduino ve MPU-6050 Deprem Dedektörü


Arduino ve MPU6050 sensörünü kullanan Deprem Dedektörü: Deprem dedektörü, deprem şoklarını algılayan bir cihazdır. Araştırmaya göre bir yılda yaklaşık 800.000 deprem meydana gelir ve bu kadar çok can ölür ve binaları tahrip eder. Projemiz, deprem nedeniyle oluşan kaybın üstesinden gelmek için küçük bir çabadır. Bu dedektör, küçük şokları algılayabilir ve güvenli bir yere tahliye etmeniz için sizi uyarabilir. Bu dedektörün en önemli bileşeni daha sonra konuşacağımız MPU 6050 modülüdür. Arduino bu dedektörün beynidir, mesaj göstermek için LCD , gösterge olarak Led ve zil kullanılır.

Arduino kullanarak Blok Diyagram Deprem Dedektörü Arduino blok şemasını kullanan Deprem Dedektörü

Gerekli Bileşenler

  • ArduinoUno: Ucuz olduğu için Arduino Uno kullandık ve iki analog pime ve sekiz dijital pime ihtiyacımız olduğundan bu proje için mükemmel uyuyor. Programlaması kolaydır ve programı saklamak için hafıza kaybı vardır.
  • MPU6050: MPU6050, 6 Eksenli İvmeölçer ve jiroskoptur. Genellikle bir hareket takip cihazıdır. Aynı zamanda sıcaklığı ölçebilir. Daha az güç tüketir ve fiyatı çok ucuzdur.

İşte bazı MPU6050 özellikleri

  • Jiroskop çalışma akımı: 3.6mA.
  • İvmeölçer normal çalışma akımı: 500µA.
  • Bekleme akımı: 5µA.
  • Çalışma voltajları 2,37v ila 3,46v arasındadır
  • Geliştirilmiş düşük frekanslı gürültü performansı.
  • Dijital çıkışlı sıcaklık sensörü.

MPU6050 modülünün pin açıklaması:

  1. Vcc: Bu pime 3.3 besleme gerilimi.
  2. GND: Bu pin toprağa bağlı.
  3. SCL: I 2 C Seri Saat Pimi.
  4. SDA: I 2 C Seri Veri Pimi.
  5. XDA: I 2 C Harici bir sensör için Ana Veri pini.
  6. XCL: I 2 C Harici bir sensör için Ana Saat pimi.
  7. AD0: I 2 C Slave Adresi LSB.
  8. INT: Dijital çıkış pinini kes.
  • 16 × 2 LCD : LCD, alfasayısal karakterleri göstermek için kullanılır. Toplam 16 pimi vardır. LCD'nin kontrastını ayarlamak için üçüncü pim ile bir 10K ohm potansiyometre bağlanır. Ayrıca bir arka ışık LED'i içerir. Bu projede kullandığımız LCD 16 × 2 dir, yani 16 karakteri iki satırda görüntüleyebiliriz. Bu projede şokların tespit edilip edilmediğini göstermek için LCD kullanılmaktadır.
  • Led : Deprem şoklarının algılandığını ve kırmızı rengin de tehlikeyi temsil ettiğini belirtmek için kırmızı bir led kullanılır.
  • Buzzer: Bir zil, deprem şoklarının algılandığı kişilere alarm veren yüksek bir ses üretir.
  • Direnç ve bazı jumper kabloları

Arduino kullanan Deprem Dedektörünün Devre Şeması Arduino devre şemasını kullanan Deprem Dedektörü

Deprem Dedektörünün Arduino blok şemasını kullanarak çalışması

Arduino her şeyden önce MPU 6050'yi başlatır. Uyku modunu ve modülden bir saat sinyalini kontrol edin ve ardından değerleri okumaya başlayın. Kontrol ettiği kodda maksimum ve minimum değerler belirtilir, değerin istenilen değerden büyük veya küçük olup olmadığı daha sonra sesli uyarıyı çalıştırır, led ve LCD'de “*** Deprem ***” mesajını gösterir. Değerler normalse hiçbir şey yapmaz.

Arduino ile Deprem Dedektörünün Uygulanması

Arduino kullanan deprem dedektörü

Arduino kullanan Deprem Dedektörü için Seri Plotter

plotter

Arduino kullanarak Deprem Dedektörü Kodu

#include <LiquidCrystal.h>

#include <Wire.h>

#include <MPU6050.h>

#define minval -5

#define maxval 3

MPU6050 mpu;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()

{   lcd.begin(16, 2);

    Serial.begin(115200);

    pinMode(7,OUTPUT);

    pinMode(8,OUTPUT);

    lcd.print("   EarthQuake ");

    lcd.setCursor(0, 1);

    lcd.print("   Detector");

    delay (2000);

    lcd.clear();

  // Initialize MPU6050

  Serial.println("Initialize MPU6050");

  while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))

  { Serial.println("Could not find a valid MPU6050 sensor, check wiring!");

    delay(500);}

  mpu.setThreshold(3); 

  // Check settings

  checkSettings();

}



void checkSettings()

{

  Serial.println();



  Serial.print(" * Sleep Mode:        ");

  Serial.println(mpu.getSleepEnabled() ? "Enabled" : "Disabled");

  Serial.print(" * Clock Source:      ");

  switch(mpu.getClockSource())

  {case MPU6050_CLOCK_KEEP_RESET:     Serial.println("Stops the clock and keeps the timing generator in reset"); break;

    case MPU6050_CLOCK_EXTERNAL_19MHZ: Serial.println("PLL with external 19.2MHz reference"); break;

    case MPU6050_CLOCK_EXTERNAL_32KHZ: Serial.println("PLL with external 32.768kHz reference"); break;

    case MPU6050_CLOCK_PLL_ZGYRO:      Serial.println("PLL with Z axis gyroscope reference"); break;

    case MPU6050_CLOCK_PLL_YGYRO:      Serial.println("PLL with Y axis gyroscope reference"); break;

    case MPU6050_CLOCK_PLL_XGYRO:      Serial.println("PLL with X axis gyroscope reference"); break;

    case MPU6050_CLOCK_INTERNAL_8MHZ:  Serial.println("Internal 8MHz oscillator"); break;

  }

  Serial.print(" * Gyroscope:         ");

  switch(mpu.getScale())

  {case MPU6050_SCALE_2000DPS:        Serial.println("2000 dps"); break;

    case MPU6050_SCALE_1000DPS:        Serial.println("1000 dps"); break;

    case MPU6050_SCALE_500DPS:         Serial.println("500 dps"); break;

    case MPU6050_SCALE_250DPS:         Serial.println("250 dps"); break:}

  Serial.print(" * Gyroscope offsets: ");

  Serial.print(mpu.getGyroOffsetX());

  Serial.print(" / ");

  Serial.print(mpu.getGyroOffsetY());

  Serial.print(" / ");

  Serial.println(mpu.getGyroOffsetZ());

  Serial.println();}

void loop()

{   Vector rawGyro = mpu.readRawGyro();

  Vector normGyro = mpu.readNormalizeGyro();

  Serial.print(" Xraw = ");

  Serial.print(rawGyro.XAxis);

  Serial.print(" Yraw = ");

  Serial.print(rawGyro.YAxis);

  Serial.print(" Zraw = ");

  Serial.println(rawGyro.ZAxis); 

if(normGyro.XAxis > maxval || normGyro.XAxis < minval && normGyro.YAxis > maxval || normGyro.YAxis  < minval && normGyro.ZAxis > maxval || normGyro.ZAxis  < minval)

{ digitalWrite(7,HIGH);

  digitalWrite(8,HIGH);

  delay(300);

  digitalWrite(7,HIGH);

  digitalWrite(8,HIGH);

  delay(300);

  lcd.clear();

  lcd.print("***EarthQuake***");

  delay (1000);

  lcd.clear();}

 else{digitalWrite(7,LOW);

 digitalWrite(8,LOW);}

  Serial.print(" Xnorm = ");

  Serial.print(normGyro.XAxis);

  Serial.print(" Ynorm = ");

  Serial.print(normGyro.YAxis);

  Serial.print(" Znorm = ");

  Serial.println(normGyro.ZAxis);

  delay(10);}

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.