Bir proje yazısında daha sizlerleyiz. Bu sefer sizinle birlikte mutfak veya banyoda kullanılabilecek bir doğalgaz alarmı yapmayı öğreneceğiz.
Doğalgazın Kimyasal Yapısı
Doğalgaz, petrol türevi bir gazdır. İçeriğinin çoğunluğunu (%70-%90 kadarını) metan gazı (CH4) oluşturur. Metan gazının yanı sıra etan (C2H6), propan(C3H8), bütan (C4H10) gazlarını da içermektedir. Bu gazlar, doğalgazın yanıcı özelliğini sağlamaktadır. Bunların yanı sıra karışım içerisinde eser miktarlarda karbon dioksit (CO2), hidrojen sülfür (H2S) ve azot (N2) gibi gazlar da bulunur. Bu gazlardan hidrojen sülfür, çürük yumurta kokusuna sahiptir ve 10-750 ppm seviyesinde zehirleyici özellik göstermektedir.
İnsan burnu, hidrojen sülfür gazının 0.1-0.3 ppm seviyelerinde kokusunu alabilmektedir. 20ppm seviyesinde gözde ve burunda rahatsızlıkların başlamasına sebep olan hidrojen sülfür, 100ppm seviyesine ulaştığında koku duygusunu bastırmaya başlamaktadır. Bu sebeple doğalgazın içerisine yapay olarak çürük yumurta/sarımsak kokusuna benzer keskin koku verecek bir madde eklenmektedir.
Doğalgaz zehirlenmesinin belirtileri şu şekilde olur: mide bulantısı, baş ağrısı, soluk almada güçlükler, dudak ve yanakların kırmızı/mor bir renk alması. Eğer mutfak/banyo gibi doğalgaz hattının geçebileceği yerlerde buna benzer belirtiler görüyorsanız vakit kaybetmeden tıbbi destek almanız gereklidir.
Bizim bu projedeki amacımız, havadaki doğalgazın belirli bir seviyenin üzerine geçmesi durumunda sesli ve görsel alarm verecek bir devre tasarlamaktır. Bu işlem için MQ-4 gaz sensörü kartı ve Arduino kullanacağız.
MQ-4 Metan Gazı Sensörü
MQ serisi gaz sensörleri, ucuz fiyatları, uyumlulukları ve kolay kullanımları sayesinde Arduino projelerinde sıkça tercih edilmektedir. Projemizde kullanacağımız MQ-4 doğalgaz/metan sensörü, havada 300ppm ve 10000ppm seviyelerinde bulunan metan gazını algılamakta kullanılır. Sensör, havadaki gazın yoğunluğuna orantılı olacak şekilde analog gerilim çıkışı verir. Hassas seviyede gaz ölçümleri için kullanılmak istenildiğinde, datasheet’inden faydalanarak kalibrasyon yapılabilir; fakat bizim kullanacağımız projede gaz seviyesinin bizim belirleyeceğimiz bir eşik değerinin üzerine çıkıp çıkmadığını algılamak için kullanacağımızdan bu kadar detaylı bir kullanıma gerek duymamaktayız.
MQ Serisi Gaz Sensörleri Nasıl Çalışır?
MQ serisi gaz sensörleri içerisinde alıglanacak gaza duyarlı bir tel, ısıtıcı eleman ve bir yük direnci bulunur.
Isıtıcının etkisiyle ısınan metan gazı, sensör telinin üzerinden geçerek telin direncinin değişmesine sebep olur. Dirençteki değişimin, istediğimiz aralık olan 0-5V arasında olması için bir yük direnci kullanılır. Bu direnç üzerindeki gerilimi mikrokontrolcümüzün analog pinine bağlayabiliriz.
MQ tipi sensörler çoğunlukla, daha pratik bir kullanım sağlaması açısından genellikle bu gerekli harici devre elemanları ve analog çıkışın yanı sıra trimpot vasıtasıyla tetik noktası belirlenen bir dijital çıkış ile birlikte taşıyıcı kartlar ile birlikte sunulmaktadır.
Biz projemizde kart üzerindeki analog çıkış pinini kullanacağız.
Kullanacağımız malzemelerimiz:
Arduino – MQ-4 Gaz Sensörü Bağlantı Şeması
Devremizi aşağıdaki şemaya göre kuruyoruz:
Devrenin pratik olması ve istenildiğinde kolayca bir kutu içerisine taşınabilmesi için Arduino Nano tercih ettim. Siz isterseniz Arduino UNO da kullanabilirsiniz. Kurduğumuz devrenin bizim belirlediğimiz bir seviyede gaz algıladığında görsel ve sesli bir alarm vermesini istiyoruz. Bunun için bir RGB LED ve buzzer kullandık.
Buzzer ve RGB LED’i de kartlı tercih etmemin sebebi yine modülerlik. Eğer siz bu modüller yerine devre elemanlarını teker teker kullanmak isterseniz burada yer alan buzzer yazısına ve burada yer alan RGB LED yazısına başvurarak devre bağlantılarını gerçekleştirebilirsiniz.
Arduino’ya yükleyeceğimiz kodumuz aşağıda. Kopyalamada sorun yaşıyorsanız alternatif olarak bu adresten de koda erişmeniz mümkün: https://zerobin.net/?19438f989e566022#JwwN/FRcJbds6u05GhofAGzgKKP6QedrEOZohf0IG9w=
/* `://////////////////////////////-` -/////////::////////////:://///////- ://///-` `://////:` `-/////: :////..:///:. `////`.:///:. .////: :////:///////- ////////////- ////: :///++///////: `////////////- `////: ://///-.////-`.//////.-////-`-/////: :////////::-:///////////::-:///////: -//////////////////////////////////- -////////////////////////////////- `------::////////////////////////////::------` :/--////////////////////////////////////////--/- `:/:://::::::://////////////////////::::::://::/:` ./////- `////////////////////////` -/////. ./////- `//////////////////////////` -/////. ./////- `////////////////////////////` -/////. ///////: `//////////////////////////////` ://///// ////////`////////////////////////////////`//////// ////////////////////////////////////////////////// ---.---.//////////////////////////////////.---.--- .://////////////////////////////:. `-:///////:::::::::::::..:::::::::::::///////:-` ://////////////////////////////////////////////: ://////////////////////////////////////////////: ://////////////////////////////////////////////: .//////////////////////:://////////////////////. Bu kod, 09/08/2017 tarihinde maker.robotistan.com için hazırlanmıştır. */ //Sensör pinlerimizi tanımlıyoruz: #define sensor_pin A0 #define buzzer_pin 9 //RGB LED'imizin çıkış pinlerini tanımlıyoruz: #define led_r 5 #define led_g 6 #define led_b 7 //Sensörün çalışması için gerekli ön ısıtma süresini 5sn olarak belirliyoruz #define preheat_time 5000 //Alarmın çalması için gerekli eşik değerini 300 olarak belirliyoruz. #define threshold 300 void setup() { //Alarm için kullanacağımız buzzer ve LED'leri çıkış olarak tanımlıyoruz pinMode(buzzer_pin, OUTPUT); pinMode(led_r, OUTPUT); pinMode(led_g, OUTPUT); pinMode(led_b, OUTPUT); //Varsayılan olarak LED'in sönük kalmasını sağlıyoruz digitalWrite(led_r, HIGH); digitalWrite(led_g, HIGH); digitalWrite(led_b, HIGH); //Sensör değerini seri monitörden görebilmemiz için seri haberleşmeyi başlatıyoruz: Serial.begin(9600); //İlk 5sn boyunca sensörün ısınmasını bekliyoruz. Bu esnada LED mavi renkte yanıyor: Serial.println("Sensor isitiliyor..."); digitalWrite(led_b, LOW); delay(preheat_time); //Isıma işlemi için gereken 5sn süre tamamlandığında mavi LED'i söndürüyoruz: digitalWrite(led_b, HIGH); delay(1000); } void loop() { //analogRead() fonksiyonu ile sensör değerini ölçüyoruz ve bir değişken içerisinde tutuyoruz: int sensorValue = analogRead(sensor_pin); //Sensör değeri belirlediğimiz eşik değerinden yüksek ise alarm() fonksiyonunu çağırıyoruz: if (sensorValue >= threshold) alarm(100); //Alarmın çalmadığı durumda LED'in yeşil yanmasını istiyoruz: else digitalWrite(led_g, LOW); //Sensör değerini bilgisayarımızdan görebilmek için seri monitöre yazıyoruz: Serial.println(sensorValue); delay(1); } //Alarm fonksiyonumuzu tanımlıyoruz. Bu fonksiyon parametre olarak buzzerın ötüp ve LED'in yanıp söneceği süreyi almakta. void alarm(unsigned int duration) { //Buzzer'ın 440Hz'te (la notası) ses üretmesini istiyoruz: tone(buzzer_pin, 440); //Normal durumda yeşil yanmakta olan LED'i söndürüp kırmızı renkte yakıyoruz: digitalWrite(led_r, LOW); digitalWrite(led_g, HIGH); delay(duration); noTone(buzzer_pin); digitalWrite(led_r, HIGH); digitalWrite(led_g, HIGH); delay(duration); }
Bu kurmuş olduğumuz devrenin duman dedektörü olmadığını hatırlatmak isterim. MQ-4 sensörü havadaki metan gazını algılar. İsterseniz MQ-4 sensör kartını söküp farklı sensör kartları kullanmanız da mümkündür. Bu kartların çoğunun pin dizilimi aynıdır, doğrudan farklı sensör kartları takarak, örneğin MQ-2 sensörü takarak devreyi çok basit bir şekilde duman dedektörüne dönüştürebilirsiniz. Bir diğer dikkat etmeniz gereken nokta ise kodda bulunan threshold değerini sizin belirlemeniz gerektiğidir. Bu işlemi sensörü kullanmak istediğiniz yere koyup deneyerek yapabilirsiniz.
bi sorum olacak ben devre elemanlarını bu siteden sipariş verdim ve devreyi yaptım çok güzel calıştı fakat ilk devreye gaz verip çalıştırmamdan sonra hep alarm çalmaya ve led yanmaya devam etti usb çıkarıp yenıden taksam bile 5-6 saniye sonra devre alarmı çalmaya devam ediyor ama ben çaldıktan sonra durmasını ve gaz ne zaman verirsem alarmın devreye girmesini istiyorum nasıl yardımcı olursunuz bana
Programın üst satırlarında yer alan threshold değerini arttırabilirsiniz.
değeri değiştirip 1000 yapıyorum ne kadar gaz verseniz de alarm çalışmıyor,1000 in altında bir değer verdiğimde ise ise her türlü kırmızı yanıyor ve alarm çalışıyor.
Aynı sorun bendede oluyor. Buna bir cözüm yokmu ?
Arkadaşlar sensör kartının arkasındaki potansiyometreden ayarlama yapın oluyor.
Kerem Bey merhaba alttaki kodları yazarak lcd li MQ4 gas kontrol devresi yaptım bu konuda yeniyim 1. sorum I2C-driver li LCD kullanacağım library sini bulamadım
2. sizin programdaki sensör ısınma katını sistemime eklemek istiyor ve ilk açılışta LCD ekranımda verilen 5sn. değerde ” sensör ısınıyor” yazısını görmek istiyorum..
sonra tekrar lcd clear ile ana menüde ölçüm yapmayı nasıl yaparım bana aşağıdaki programa gereken satırları ekleyebilir misiniz ?
alakanıza teşekkürler….
#include
int mq4 = A0; // GAS sensörü analog giriş pini
int buz = 10; // Buzzer çıkış pini
int led = 9; // Led çıkış pini
int d; // dig. çıkış değeri sensör den 4.62V = POTENZ=AD/9.48
float p; // sensör referans değeri 4.62 (ADC) (GERİLİM DÜŞÜMÜ)
LiquidCrystal lcd (12, 11, 9, 8, 7, 6); // LCD bağlantıları
lcd.clear(); // ekran temizle
void setup(){
pinMode(rel, OUTPUT);
pinMode(buz, OUTPUT);
pinMode(led, OUTPUT);
digitalWrite(rel, LOW);
digitalWrite(buz, LOW);
digitalWrite(led, LOW);
lcd.begin(16, 2); // 16 karakter 2 satır LCD
}
void loop(){
lcd.clear(); // ekran temizle
d = analogRead(mq4); // sensörü oku
lcd.setCursor(0,0); // cursoru pozisyonla
lcd.print(“CNG,LPG,METANGAZ”); // yazdır
if (d = 20)
{
digitalWrite(rel, LOW);
digitalWrite(buz, HIGH);
delay (500);
digitalWrite(buz, LOW);
delay (500);
digitalWrite(led, HIGH);
delay (500);
digitalWrite(led, LOW);
delay (500);
lcd.clear();
lcd.setCursor(2,0);
lcd.print(“GAZ SEViYESi”);
lcd.setCursor(3,1);
lcd.print(“TEHLiKELi !”);
}
else
{
digitalWrite(rel, HIGH);
digitalWrite(buz, LOW);
digitalWrite(led, LOW);
}
delay(1000);
lcd.clear();
}
aynı devreye mQ-5 bağlansa ne olu bir sorun olurmu ?olursa neler yapmalıyız ?
Bu projeyi s4 a scratchte nasıl tanımlayabiliriz
Yazınız için çok teşekkür ederim ama bir sorunum var.Oled ekranımız ile bmp180 sensörümüz a4 ve a5’i kullanıyor.Bizim bunların ikisini aynı yere takmamız halinde sizce sorun çıkarmı, çıkarsada nasıl bir yol izlemeliyiz?
Her ikisi de I2C hattından haberleştiği için sorun olmaz. A4 yerine SDA pinini, A5 yerine ise SCL pinini kullanabilirsiniz.
herşeyi dediğiniz gibi yaptık ama çalışmadı neden
Aynı devreyi MQ-9 sensörü ile kursamda çalışırmı kodları değiştirmem gerekirmi
Yazıda ve videoda da belirttiğimiz gibi MQ serisi kartlı sensör modüllerinin tümüyle bu projeyi gerçekleştirmeniz mümkündür.
merhaba, bu devre üzerine birde servo eklemek istiyorum. gaz algılandığında servo çalışacak. Yardımlarınız için çok teşekkürler.
if (sensorValue >= threshold) satırından sonra alarm() fonksiyonunu çağırmak yerine servo ile ilgili komutları yazarak bu işlemi gerçekleştirebilirsiniz. Servo yazımızı da okumayı ihmal etmeyin: Arduino Dersleri 13: Servo Motor Kontrolü
normal buzzer kullandım bı sıkıntı olur mu ?
Buzzer’a seri olarak 100 ohm civarında bir direnç bağladığınız sürece hiçbir problem olmaz. Buzzer modülü kullanmamızın tek sebebi daha pratik olmasıdır.
Ardunio olarak nano değilde https://www.robotistan.com/arduino-uno-r3-klon-usb-kablo-hediyeli-usb-chip-ch340 kullansak devre çalışır mı?
Tubitak projesi için bu malzemeleri alacağım ama aynı hatadan problem yaşayan çok arkadaş var . Nedeni nedir acaba ?
Çalışır. Hangi hatadan bahsediyorsunuz?
buse : bi sorum olacak ben devre elemanlarını bu siteden sipariş verdim ve devreyi yaptım çok güzel calıştı fakat ilk devreye gaz verip çalıştırmamdan sonra hep alarm çalmaya ve led yanmaya devam etti usb çıkarıp yenıden taksam bile 5-6 saniye sonra devre alarmı çalmaya devam ediyor ama ben çaldıktan sonra durmasını ve gaz ne zaman verirsem alarmın devreye girmesini istiyorum nasıl yardımcı olursunuz bana
yasin :değeri değiştirip 1000 yapıyorum ne kadar gaz verseniz de alarm çalışmıyor,1000 in altında bir değer verdiğimde ise ise her türlü kırmızı yanıyor ve alarm çalışıyor.
Yukarıdaki hatalardan bahsediyorum. Çünkü daha önceden ardunio ile çalışmadım. Aynı problem karşıma çıkar mı diye düşüncelerim var ?
pinMode(buzzer_pin, OUTPUT); void setup dan silince bu komutu ses sorunu ortadan kalkacakdır.
pinMode(buzzer_pin, OUTPUT); satırını sildiğimiz zaman gaz algıladığında buzzer kesik kesik çalmaya başlıyor gazı kesilince düz bir şekilde çalmaya devam ediyor. resetleyinceye kadar. gaz kesilince buzzer ın düz bir şekilde çalmasını nasıl engelleyebilirim ?
Buzzer’ın bağlı olduğu pini çıkış pini olarak tanımlamak zorundasınız, aksi taktirde bu pini çıkış pini olarak tanımlamadığınız için hatalar ile karşılaşırsınız.
Arduino:1.8.5 (Windows 10), Kart:”Arduino/Genuino Uno”
Çalışmanız programın 3172 bayt (9 %) saklama alanını kullandı. Maksimum 32256 bayt.
Global değişkenler belleğin 231 byte kadarını (11%) kullanıyor. Yerel değişkenler için 1817 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xf8
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xf8
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xf8
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xf8
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xf8
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xf8
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xf8
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xf8
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xf8
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xf8
Karta yüklenirken sorun oluştu. Tavsiyeler için http://www.arduino.cc/en/Guide/Troubleshooting#upload adresine göz atabilirsiniz.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
HATASINI ALIYORUM NE YAPMALIYIM
Bu hatanın 3 temel sebebi olabilir:
1) Arduino’nuzun RX ve TX pinlerine (0 ve 1 numaralı dijital pinler) harici bir bağlantı yapılıdır.
2) Doğru COM portu Arduino IDE’den seçilmemiştir.
3) Sürücüleriniz ile ilgili bir sorun mevcuttur.
1 ve 2 numaralı sebeplerin çözümü basittir. Sürücülerinizi orijinal Arduino kullanıyorsanız Arduino IDE’yi tekrar yükleyerek, CH340 çipli klon Arduino kullanıyorsanız buradaki rehberimizden faydalanarak tekrar yüklemeniz mümkündür.
kesin com hatası başka flash yerlerine tak ve COM u değiğtir
Merhaba bu projeyi nasıl geliştirebiliriz.Mesela android bağlantısı, pushetta gibi. Yardımcı olursanız çok sevinirim.
Bir ESP8266 modülü kullanarak projenize Pushetta bağlantısı eklemek için ESP8266 ile Hırsız Alarmı isimli yazımızı inceleyebilirsiniz.
Her şey iyi güzel proje çalışıyor fakat tek sıkıntımız Buzzer ın sürekli çalışması.
Devreye enerji verdiğimizde buzzer sürekli çalıyor. Gaz verdiğimizde alarm şeklinde çalıyor. Alarm bitince düz bir şekilde çalıyor.
Bu problemi nasıl çözebiliriz ?
Devre kartlı buzzer kullanıyorsanız 10k veya 1k ohm değerinde bir pull-down direncini sinyal pinine bağlamayı deneyebilirsiniz.
Evet Devre kartı buzzer kullanıyorum ama elektronik ile hiç uğraşmadım daha önce. Daha ayrıntılı (Sinyal pini ve pull – down) anlatabilirmisiniz videonuzda olduğu gibi.
//Sensör pinlerimizi tanımlıyoruz:
#define sensor_pin A0
#define buzzer_pin 10
//RGB LED’imizin çıkış pinlerini tanımlıyoruz:
#define led_r 5
#define led_g 6
#define led_b 7
//Sensörün çalışması için gerekli ön ısıtma süresini 5sn olarak belirliyoruz
#define preheat_time 5000
//Alarmın çalması için gerekli eşik değerini 300 olarak belirliyoruz.
#define threshold 500
void setup()
{
//Alarm için kullanacağımız buzzer ve LED’leri çıkış olarak tanımlıyoruz
pinMode(led_r, OUTPUT);
pinMode(led_g, OUTPUT);
pinMode(led_b, OUTPUT);
//Varsayılan olarak LED’in sönük kalmasını sağlıyoruz
digitalWrite(led_r, HIGH);
digitalWrite(led_g, HIGH);
digitalWrite(led_b, HIGH);
//Sensör değerini seri monitörden görebilmemiz için seri haberleşmeyi başlatıyoruz:
Serial.begin(9600);
//İlk 5sn boyunca sensörün ısınmasını bekliyoruz. Bu esnada LED mavi renkte yanıyor:
Serial.println(“Sensor isitiliyor…”);
digitalWrite(led_b, LOW);
delay(preheat_time);
//Isıma işlemi için gereken 5sn süre tamamlandığında mavi LED’i söndürüyoruz:
digitalWrite(led_b, HIGH);
delay(1000);
}
void loop()
{
//analogRead() fonksiyonu ile sensör değerini ölçüyoruz ve bir değişken içerisinde tutuyoruz:
int sensorValue = analogRead(sensor_pin);
//Sensör değeri belirlediğimiz eşik değerinden yüksek ise alarm() fonksiyonunu çağırıyoruz:
if (sensorValue >= threshold)
alarm(300);
//Alarmın çalmadığı durumda LED’in yeşil yanmasını istiyoruz:
else
digitalWrite(led_g, LOW);
//Sensör değerini bilgisayarımızdan görebilmek için seri monitöre yazıyoruz:
Serial.println(sensorValue);
delay(1);
}
//Alarm fonksiyonumuzu tanımlıyoruz. Bu fonksiyon parametre olarak buzzerın ötüp ve LED’in yanıp söneceği süreyi almakta.
void alarm(unsigned int duration)
{
//Buzzer’ın 440Hz’te (la notası) ses üretmesini istiyoruz:
tone(buzzer_pin, 440);
//Normal durumda yeşil yanmakta olan LED’i söndürüp kırmızı renkte yakıyoruz:
pinMode(buzzer_pin, OUTPUT);
digitalWrite(led_r, LOW);
digitalWrite(led_g, HIGH);
delay(duration);
noTone(buzzer_pin);
digitalWrite(led_r, HIGH);
digitalWrite(led_g, HIGH);
delay(duration);
}
Bu kodu kullan verimli çalışıyor,fakat alarmdan sonra arduino ya reset atman lazım.
devre kartlı kulllanıyorum öne yeşil yanıyor sonra beyaz çakmağı tuttuğumda buzzer ötmüyor kırmızı ışıkta yanmıyor pull down nasıl bağlıcaz sinyal pini hangisi
Kodu atsana kompile birde arduino hangi surum bide kodları atsana yaltığjn devrenin
Gayet güzel çaşışıyor lakin tek sıkıntı buzzer’ın sürekli ötmesi.Bunu düzeltebilirmiyiz?
Bu çalışmanın fotoğrafı var mı bağlantılarını yapamadım yanlış bağlıyorum sanırım
Selamun Aleykum.
Arkadaşlar Buzzer’ın sürekli ötmesine çözüm buldum.Kodları aşağıdaki gibi düzelttiğiniz zaman sadece Gazı algıladığında ötecektir.Ayrıca
Buzzer’ın sesinide değiştirdim.İlk defa Arduino ile bir proje yapmaya kalkan biri olarak kendimi Bilgisayarı bulmuş gibi hissettim 🙂
Yeni Kodlar:
//Sensör pinlerimizi tanımlıyoruz:
#define sensor_pin A0
#define buzzer_pin 9
//RGB LED’imizin çıkış pinlerini tanımlıyoruz:
#define led_r 5
#define led_g 6
#define led_b 7
//Sensörün çalışması için gerekli ön ısıtma süresini 5sn olarak belirliyoruz
#define preheat_time 5000
//Alarmın çalması için gerekli eşik değerini 300 olarak belirliyoruz.
#define threshold 300
void setup()
{
//Alarm için kullanacağımız buzzer ve LED’leri çıkış olarak tanımlıyoruz
pinMode(led_r, OUTPUT);
pinMode(led_g, OUTPUT);
pinMode(led_b, OUTPUT);
//Varsayılan olarak LED’in sönük kalmasını sağlıyoruz
digitalWrite(led_r, HIGH);
digitalWrite(led_g, HIGH);
digitalWrite(led_b, HIGH);
//Sensör değerini seri monitörden görebilmemiz için seri haberleşmeyi başlatıyoruz:
Serial.begin(9600);
//İlk 5sn boyunca sensörün ısınmasını bekliyoruz. Bu esnada LED mavi renkte yanıyor:
Serial.println(“Sensor isitiliyor…”);
digitalWrite(led_b, LOW);
delay(preheat_time);
//Isıma işlemi için gereken 5sn süre tamamlandığında mavi LED’i söndürüyoruz:
digitalWrite(led_b, HIGH);
delay(1000);
}
void loop()
{
//analogRead() fonksiyonu ile sensör değerini ölçüyoruz ve bir değişken içerisinde tutuyoruz:
int sensorValue = analogRead(sensor_pin);
//Sensör değeri belirlediğimiz eşik değerinden yüksek ise alarm() fonksiyonunu çağırıyoruz:
if (sensorValue >= threshold)
alarm(40);
//Alarmın çalmadığı durumda LED’in yeşil yanmasını istiyoruz:
else
digitalWrite(led_g, LOW);
//Sensör değerini bilgisayarımızdan görebilmek için seri monitöre yazıyoruz:
Serial.println(sensorValue);
delay(1);
}
//Alarm fonksiyonumuzu tanımlıyoruz. Bu fonksiyon parametre olarak buzzerın ötüp ve LED’in yanıp söneceği süreyi almakta.
void alarm(unsigned int duration)
{
//Buzzer’ın 440Hz’te (la notası) ses üretmesini istiyoruz:
tone(buzzer_pin, 1000);
//Normal durumda yeşil yanmakta olan LED’i söndürüp kırmızı renkte yakıyoruz:
digitalWrite(led_r, LOW);
digitalWrite(led_g, HIGH);
delay(duration);
noTone(buzzer_pin);
digitalWrite(led_r, HIGH);
digitalWrite(led_g, HIGH);
delay(duration);
pinMode(buzzer_pin, INPUT);
}
merhabalar bende bu projeyi MQ9 la yaptım ama çalışmıyor. ne yaptıysam olmadı yardım eder misiniz
Yaşadığınız sorunu daha açık bir şekilde yazarsanız yardımcı olabiliriz.
iyi günler. bu proje ye fan eklemek için ne yapmamız gerekir? yeni başlıyorum da yardımcı olursanız sevinirim.
if (sensorValue >= threshold){ satırının altına bir digitalWrite(pin, HIGH) satırı ekleyerek ve ilgili pine bir röle kartı bağlayarak fanı röle aracılığıyla açıp kapatabilirsiniz.
twşwkkürler
Fanın çalışması için fana 9vluk pil bağlanmalı?
Arduino nano yerine Arduino Uno R3 kullansam olurmu
Arduino Nano ile UNO üzerindeki mikrokontrolcüler birebir aynı olduğu için sorunsuzca birbirleri yerine kullanabilirsiniz.
cevap verdiğiniz için teşekkür ederim
#define sensor_pin A0
#define buzzer_pin 9
#define led_r 5
#define led_g 6
#define led_b 7
#define preheat_time 5000
#define threshold 300
#define trek 550
void setup()
{
pinMode(led_r, OUTPUT);
pinMode(led_g, OUTPUT);
pinMode(led_b, OUTPUT);
digitalWrite(led_r, HIGH);
digitalWrite(led_g, HIGH);
digitalWrite(led_b, HIGH);
Serial.begin(9600);
Serial.println(“Ulaaa SENSÖR Yaniyaa…”);
digitalWrite(led_b, LOW);
delay(preheat_time);
digitalWrite(led_b, HIGH);
delay(1);
}
void loop()
{
pinMode(buzzer_pin, LOW);
int sensorValue = analogRead(sensor_pin);
if (sensorValue >= threshold)
alarm(90);
else
digitalWrite(led_g, LOW);
Serial.println(sensorValue);
delay(1);
if (sensorValue >= trek)
alarm(1000);
}
void alarm(unsigned int duration)
{
tone(buzzer_pin, 9000);
digitalWrite(led_r, LOW);
digitalWrite(led_g, HIGH);
delay(duration);
noTone(buzzer_pin);
digitalWrite(led_r, HIGH);
digitalWrite(led_g, HIGH);
delay(duration);
}
BU KOD SORUN SUZ ÇALIŞMAK DA DIR,
bu siteden alcamda 3 Renkli RGB Led Modülü – 10 mm RGB Led bu stokta kalmamış stokda olursa sevinirim
3 Renkli RGB Led Modülü – 10 mm RGB Led stokda kalmamış stokda olsun yoksa yapamıcam
Alternatif olarak bu ürünü kullanabilirsiniz.
sadece onu direk koycaz
yoksa direnç lle mi yapcam
Direnç bağlamanız gereklidir. Bu dersimizdeki devrede yer alan RGB LED bağlantısını kullanabilirsiniz.
iyi günler hocam bu devreye alarm çaldıgı zaman çalışacak 5v lik fanı nasıl bağlabilirim
Sayın Buğra ve Sayın Oğulcan ne yazık ki paylaştığınız kodlarınızın serial.println satırlarında
exit status 1
stray ‘\342’ in program
hatası vermekte.Bilginiz olsun.
Kopyala-yapıştır yapmak yerine kendiniz yazmayı deneyin. Aldığınız hata bu sebepten kaynaklı olabilir.
aynı hata bendede oluyor
Çalışmanız programın 3.132 bayt (10 %) saklama alanını kullandı. Maksimum 30.720 bayt.
Global değişkenler belleğin 229 byte kadarını (11%) kullanıyor. Yerel değişkenler için 1.819 byte yer kalıyor. En fazla 2.048 byte kullanılabilir.
avrdude: ser_open(): can’t open device “\\.\COM3”: Semafor zaman aşımı süresi geçildi.
Karta yüklenirken sorun oluştu. Tavsiyeler için http://www.arduino.cc/en/Guide/Troubleshooting#upload adresine göz atabilirsiniz.
hatasını veriyor ne yapmam gerekiyor
Yanlış COM portu seçtiğinizden dolayı böyle bir hata almaktasınız. Bilgisayarınızda “Aygıt Yöneticisi”ni açarak “Bağlantı Noktaları” başlığı altındaki cihazlara bakarak doğru COM portunu görebilirsiniz. Kartınızın “USB-SERIAL CH340” veya “Arduino UNO” olarak görünmesi gereklidir.
Bir kere en başta yayınlanan kodlar yanlış tanımlanmış, bazı akıllılar da kodları kafalarına göre düzenlemişler az kendiniz de uğraşın. Başlangıçta ledleri tanımladıktan sonra sönük kalması gereken yerde ilk yayınlanan kod dahil hatalı, değer HIGH verilmiş, akılları sıra hatayı düzeltenler de aynı hatayı copy-paste işlemiyle sunmuşlar bunun gibi hataları düzeltince sistem çalışacaktır sistemi başlangıç seviyesine göre yeniden kendimce şekillendirdim
// donanımda hata yapmazsanız sistem sorunsuz çalışacaktır 🙂
const int analogInPin = A0;
const int led_r = 5;
const int led_g = 6;
const int led_b = 7;
int buzzer_pin = 2;
int veri = 0;
void setup() {
Serial.begin(9600);
pinMode(led_r, OUTPUT);
pinMode(led_g, OUTPUT);
pinMode(led_b, OUTPUT);
pinMode(buzzer_pin,OUTPUT);
digitalWrite(buzzer_pin, LOW);
digitalWrite(led_b, HIGH);
delay(5000);
digitalWrite(led_b, LOW);
}
void loop() {
veri = analogRead(analogInPin);
if (veri >= 300);
{ digitalWrite(led_g, LOW);
digitalWrite(led_b, LOW);
digitalWrite(led_r, HIGH);
digitalWrite(buzzer_pin, HIGH);
}
else
{ digitalWrite(led_g, HIGH);
digitalWrite(led_b, LOW);
digitalWrite(led_r, LOW);
digitalWrite(buzzer_pin, HIGH);
}
Serial.print(“Okunan Değer = ” );
Serial.println(veri);
delay(750);
}
Kodda hata yok, dikkatli bakacak olursanız kullandığımız LED ortak anot yapıya sahip. Bu sebeple LED’leri yakmak için LOW vermemiz gerekiyor.
Evet ancak bir bütünlük söz konusu olmayacaktır yani dediğinizi yaptıgım zaman da mavi yesil kırmızı hepsi beraber parça parça yanıyor yakılmak istenen renk yanıyor ama tam verimle yanmamakta.
Çalışmanız programın 3172 bayt (10 %) saklama alanını kullandı. Maksimum 30720 bayt.
Global değişkenler belleğin 231 byte kadarını (11%) kullanıyor. Yerel değişkenler için 1817 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
Taslak yüklenirken bir hata oluştu
BÖLE HATA VERİYOR YÜKLENİRKEN SADECE DERLEMDE SIKINTI YOK YÜKLERKEN SIKINTI OLUYOR SORUNU NEDİR ALLAH AŞKINA YARDIM
Bu yazımıza başvurabilirsiniz: Arduino’da Hata Mesajı Aldıysan Bu Sayfa Senin İçin – Hata Yaptıkça Gel.
merhabalar devreyi kurdum yeşil yanıyor sonra beyaza dönüyor çakmağı basılı tutuğumda birşey olmuyor buzzerda ötmüyor sorunu nedir acaba
merhabalar devreyi kurdum yeşil yanıyor sonra beyaza dönüyor çakmağı basılı tutuğumda birşey olmuyor buzzerda ötmüyor sorunu nedir acaba lütfen ALLAH RIZASI İÇİN CEVAP
Arduino IDE’den Dosya -> Örnekler -> 01.Basics -> AnalogReadSerial örneğini yükleyip sensörün doğru çalışıp çalışmadığını kontrol edin. Eğer gaz algılandığında değer değişiyor ise sensörünüz ile ilgili bir sorun yoktur, LED ve buzzer modülleriniz ile ilgili bir sorun var demektir.
mq-4 sensörü çakmak gazı algılar mı,ya da metan gazını nasıl temin ettiniz, sensör mü değiştirmeliyim yoksa
Merhabalar gaz ölçümü sırasında aşırı ısınma ile karşılaşıyorum.mq-8 sensörü ile çalışıyorum acaba yardım edebilir misiniz?
Merhaba. Öncelikle değerli bilgileriniz için teşekkürler. Ben pu projeye ESP8266 Wireless modülü ekleyerek Pushetta uygulamasıyla bildirim göndermesini istiyorum (Buradaki gibi:https://maker.robotistan.com/esp8266-ile-hirsiz-alarmi). Lakin kodum diretk derleme hatası veriyor. Kart bilgisayara bağlı değil. Yardımcı olursanız sevinirim.
Merhaba. Buna benzer bir sistem yapıp seramdaki karbondioksit miktarını ölçmek istiyorum. Karbon diokait belirlediğim ppm miltarından yüksek ise fanları çalıştırıp serana temiz hava girişini sağlamak istiyorum. Acaba hangi sensörü önerirsiniz? Sanırım bu sensörü kullanamıyorum istediğim veriler için.
bende ardunio uno var nasıl yaparım acill yardım
Merhaba ben bu kodları c diline nasıl uyarlayabilirim yardımcı olur musunuz
ACİL YARDIM MQ4 SENSÖRÜMÜN ISIKLARI YANMIYOR SENSÖRÜN AYAKLARI SIRAYLA BÖYLE VCC A0UT D0UT GND
Devreyi kuran arkadaşlar üstten bir fotoğraf atabilir misiniz ben kuramadım devreyi yanlış bağlıyorum sanırım. Devreyi videoya göre kurdum ama olmadı devre şemasınıda anlayamadım.
benim aldığım rgb led ortak katot(-) yapıya sahip. bunu bu projeye nasıl uygulayabilirim.
merhaba
Arduino ile hem gaz alarmı hemde android kontrollü ışık sensörü yaptım fakat ikisini aynı anda çalıştıramıyorum kodları nasıl aynı anda çalıştıracağım?
Merhabalar, bu projeye rfid ekleyerek kartı okutunca alarmın kesilmesini sağlamaya çalışıyorum, bağlantılar ve kodlarda neler yapmam yapmam lazım yardımcı olursanız çok sevinirim
RGB Led Kartı kullanmasak ne olur ? Çünkü 45 lira ve eğer elzem değilse kullanmak istemiyorum . Teşekkürler..
Kerem Bey merhaba alttaki kodları yazarak lcd li MQ4 gas kontrol devresi yaptım bu konuda yeniyim 1. sorum I2C-driver li LCD kullanacağım library sini bulamadım
2. sizin programdaki sensör ısınma katını sistemime eklemek istiyor ve ilk açılışta LCD ekranımda verilen 5sn. değerde ” sensör ısınıyor” yazısını görmek istiyorum..
sonra tekrar lcd clear ile ana menüde ölçüm yapmayı nasıl yaparım bana aşağıdaki programa gereken satırları ekleyebilir misiniz ?
alakanıza teşekkürler….
#include
int mq4 = A0; // GAS sensörü analog giriş pini
int buz = 10; // Buzzer çıkış pini
int led = 9; // Led çıkış pini
int d; // dig. çıkış değeri sensör den 4.62V = POTENZ=AD/9.48
float p; // sensör referans değeri 4.62 (ADC) (GERİLİM DÜŞÜMÜ)
LiquidCrystal lcd (12, 11, 9, 8, 7, 6); // LCD bağlantıları
lcd.clear(); // ekran temizle
void setup(){
pinMode(rel, OUTPUT);
pinMode(buz, OUTPUT);
pinMode(led, OUTPUT);
digitalWrite(rel, LOW);
digitalWrite(buz, LOW);
digitalWrite(led, LOW);
lcd.begin(16, 2); // 16 karakter 2 satır LCD
}
void loop(){
lcd.clear(); // ekran temizle
d = analogRead(mq4); // sensörü oku
lcd.setCursor(0,0); // cursoru pozisyonla
lcd.print(“CNG,LPG,METANGAZ”); // yazdır
if (d = 20)
{
digitalWrite(buz, HIGH);
delay (500);
digitalWrite(buz, LOW);
delay (500);
digitalWrite(led, HIGH);
delay (500);
digitalWrite(led, LOW);
delay (500);
lcd.clear();
lcd.setCursor(2,0);
lcd.print(“GAZ SEViYESi”);
lcd.setCursor(3,1);
lcd.print(“TEHLiKELi !”);
}
else
{
digitalWrite(rel, HIGH);
digitalWrite(buz, LOW);
digitalWrite(led, LOW);
}
delay(1000);
lcd.clear();
}
Arduino: 1.8.9 (Windows Store 1.8.21.0) (Windows 10), Board: “Arduino/Genuino Uno”
^
sketch_sep06a:1:1: error: ‘Arduino’ does not name a type
Arduino: 1.8.9 (Windows Store 1.8.21.0) (Windows 10), Board: “Arduino/Genuino Uno”
^
exit status 1
too many decimal points in number
bU HATAYI VERİYOR
Arduino: 1.8.9 (Windows Store 1.8.21.0) (Windows 10), Board: “Arduino/Genuino Uno”
Sketch uses 992 bytes (3%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
Serial port not selected.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
arduino unoyla bu proje yapılabilirmi
bu koda ikinci bir sensör nasıl ekleriz
beyler bayanlar buzzerın sürekli ötmesine çözüm buldum sadece sensöre gaz tuttuğunuzda kırmızı ledle beraber ötüyor sonra kesiliyor
#define sensor_pin A0
#define buzzer_pin 9
#define led_r 5
#define led_g 6
#define led_b 7
#define preheat_time 5000
#define threshold 300
void setup()
{
// put your setup code here, to run once:
pinMode (buzzer_pin, OUTPUT);
pinMode (led_r, OUTPUT);
pinMode (led_g, OUTPUT);
pinMode (led_b, OUTPUT);
digitalWrite (buzzer_pin, HIGH);
digitalWrite (led_r, LOW);
digitalWrite (led_g, LOW);
digitalWrite (led_b, LOW);
Serial.begin(9600);
Serial.print(“sensor isitiliyor…”);
digitalWrite (led_b, HIGH);
delay(preheat_time);
digitalWrite (led_b, LOW);
delay (1000);
}
void loop() {
// put your main code here, to run repeatedly:
int sensorValue = analogRead(sensor_pin);
if (sensorValue >= threshold)
alarm(100);
else
digitalWrite(led_g, HIGH);
digitalWrite(buzzer_pin, HIGH);
Serial.print(sensorValue);
delay(1);
}
void alarm(unsigned int duration)
{
digitalWrite (led_r, HIGH);
digitalWrite (buzzer_pin, LOW);
digitalWrite (led_g, LOW);
delay(duration);
digitalWrite(led_r, LOW);
digitalWrite(buzzer_pin, HIGH);
digitalWrite(led_g, LOW);
delay(duration);
}
Arduino:1.8.13 (Windows 10), Kart:”Arduino Uno”
Çalışmanız programın 3166 bayt (9 %) saklama alanını kullandı. Maksimum 32256 bayt.
Global değişkenler belleğin 227 byte kadarını (11%) kullanıyor. Yerel değişkenler için 1821 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
Taslak yüklenirken bir hata oluştu
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
bana bu hata veriyor ne yapmam gerekiyor yardım eder misiniz kerem bey lutfen
Merhaba. Aynı proje içinde tek arduino ile MQ-2, MQ-6, MQ-9 ve MQ-135 sensörlerini kullanmak mümkün mü acaba?
Teşekkür ederim.
Tabii.
dc motor bağlamak istiyorum yazılım kısmına ne yazmalıyım
Selamlar. DC motor kontrolü yazılımını bulup gerekli yere yapıştırmanız gerekiyor. Eğer bunu yapamayacak düzeydeseniz lütfen sıfırdan bir eğitim almayı deneyiniz.