Arduino ile Gaz Sensörü ve LCD Ekran Kullanımı

Arduino ile Gaz Sensörü kullanımı, bir çok akıllı ev projesinde kullanabileceğiniz yapması basit ve eğlenceli bir projedir. Bu yazımızda LCD ekran kullanımında kullanacağımız kodu diğer yazılarımızda olduğu gibi hem I2C için hem de I2C olmayan ekranlar için hazırladık. Eğer bu farkı bilmiyorsanız ve LCD ekran kullanacaksanız bu yazımıza göz atmanızı öneriyoruz.

Öncelikle uygun devre şemasını yaptığınızdan emin olun, basit bir şekilde özetlemek gerekirse, eğer LCD Ekranınızın arkasında I2C modülü varsa, en az kablolu şemayı seçmelisiniz, eğer kablo sayısı fazlaysa, I2C modülü olmayan şemayı seçmelisiniz. Ayrıca, LCD ekran olmadan kullanım yapmak isteyenler için, seri ekran üzerinden çalışan program kodunuda paylaşıyoruz.

Ayrıca, gaz sensörü hakkında detaylı bilgi almak ve 7-segment display ile kullanımına bakmak için bu bağlantıya tıklayabilirsiniz.

I2C Devresi Olan LCD Ekran

Öncelikle gerekli olan kütüphaneleri inidirin. Eğer kütüphane kurulumunu bilmiyorsanız, bu yazımıza bakabilirsiniz. Bu kütüphaneleri doğrudan Arduino IDE üzerinden de indirebilirsiniz.

MQ2 Gaz Sensörü kütüphanesi

I2C LCD Ekran Kütüphanesi

Devre Şeması

Arduino ile Gaz Sensörü ve LCD Ekran Kullanımı arduino ile gaz sensörü,arduino ile gaz sensörü kullanımı,arduino ile gaz alarmı yapımı

Proje Kodu

#include <MQ2.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); //LCD EKRAN BOYUTUNA GORE AYARLAYIN
int Analog_Input = A0;
int lpg, co, smoke;

MQ2 mq2(Analog_Input);

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.backlight();
  mq2.begin();
}
void loop() {
  float* values = mq2.read(true); 
  
  lpg = mq2.readLPG();
  
  co = mq2.readCO();

  smoke = mq2.readSmoke();
  lcd.setCursor(0, 0);
  lcd.print("LPG:");
  lcd.print(lpg);
  lcd.print(" CO:");
  lcd.print(co);
  lcd.setCursor(0, 1);
  lcd.print("Duman:");
  lcd.print(smoke);
  lcd.print(" PPM");
  delay(1000);
}

I2C Devresi Olmayan LCD Ekran

Burada ekstra olarak buzzer ve LED kullanıldı, gaz tespiti olduğu zaman buzzerdan’dan ses çıkacak ve LED yanacaktır.

Devre Şeması

Arduino ile Gaz Sensörü ve LCD Ekran Kullanımı arduino ile gaz sensörü,arduino ile gaz sensörü kullanımı,arduino ile gaz alarmı yapımı

Proje Kodu

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define buzzerPin 8
#define gasPin A0

void setup() {

  Serial.begin(9600);

  lcd.begin(16, 2);
  pinMode(buzzerPin, OUTPUT);
  lcd.setCursor(0, 0);
  lcd.print("Kalibrasyon");

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

    if (i == 4)

    {

      lcd.setCursor(0, 1);

      lcd.print(".");

    }

    else lcd.print(".");

    delay(500);

  }

  lcd.setCursor(5, 1);

  lcd.print("tamamlandi");

  delay(1000);

  lcd.clear();

  lcd.setCursor(1, 0);
  lcd.print("SENSOR ACIK");

  delay(1500);

  lcd.clear();

}

void loop() {

  int gasSensor = analogRead(gasPin);

  if (gasSensor > 350)

  {

    digitalWrite(buzzerPin, HIGH);
    lcd.setCursor(0, 0);
    lcd.print("Deger : ");
    lcd.print(gasSensor);
    Serial.print(gasSensor);
    Serial.print("\t");
    lcd.setCursor(0, 1);
    Serial.println("Gaz Tespiti");
    lcd.print("Gaz Tespiti");
    delay(300);
    lcd.clear();

  }

  else if (gasSensor < 350)

  {

    digitalWrite(buzzerPin, LOW);
    lcd.setCursor(0, 0);
    lcd.print("Deger : ");
    lcd.print(gasSensor);
    Serial.print(gasSensor);
    Serial.print("\t");
    lcd.setCursor(0, 1);
    Serial.println("Gaz seviyesi dusuk");
    lcd.print("Gaz seviyesi dusuk");

    delay(300);

  }

}

LCD Ekran Olmadan Kullanım

Devre Şeması

Arduino ile Gaz Sensörü ve LCD Ekran Kullanımı arduino ile gaz sensörü,arduino ile gaz sensörü kullanımı,arduino ile gaz alarmı yapımı

Proje Kodu

int LED = 13; // arduino uno üzerindeki LED
int analog_IN = A0;  // Sensörün baglanacagi yer

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(analog_IN, INPUT);
  Serial.begin(9600);
  
}

void loop() {

  int Value = analogRead(analog_IN);  
  Serial.print("Analog degeri: ");
  Serial.println(Value);  

  if(Value < 300)
  {
    digitalWrite(LED,HIGH);
  }
  else
  {
    digitalWrite(LED,LOW);
  }  
  delay(200);
}