Merhaba arkadaşlar, bu yazımızda gaz kaçağı alarmı yapacağız birlikte. Bu proje için gerekli malzemeler;
Daha önce NodeMCU ile gaz sensörünü ve rgb ledi ayrı ayrı kullanmıştık. Daha detaylı bilgi için onlara bakabilirsiniz.
RGB led yazısı için https://akademi.robolinkmarket.com/iot-baslangic-seti-5-nodemcu-ile-rgb-led-kontrolu/
Gaz sensörü yazısı için, https://akademi.robolinkmarket.com/iot-baslangic-seti-3-nodemcu-ile-gaz-sensoru/
İsterseniz devre kurulumuna geçeli daha sonra kodlara bakalım.
Nodemcu ile Gaz Alarmı Kodları
//Sensör pinlerimizi tanımlıyoruz:
#define sensor_pin A0
#define buzzer_pin 5
//RGB LED'imizin çıkış pinlerini tanımlıyoruz:
#define kirmizi_led 14
#define yesil_led 12
#define mavi_led 13
void setup()
{
//Alarm için kullanacağımız buzzer ve LED'leri çıkış olarak tanımlıyoruz
pinMode(buzzer_pin, OUTPUT);
pinMode(kirmizi_led, OUTPUT);
pinMode(yesil_led, OUTPUT);
pinMode(mavi_led, OUTPUT);
//Varsayılan olarak LED'in sönük kalmasını sağlıyoruz
digitalWrite(kirmizi_led, HIGH);
digitalWrite(yesil_led, HIGH);
digitalWrite(mavi_led, HIGH);
Serial.begin(9600); //seri port ekranı veri alımı için haberleşme sağlanıyor.
digitalWrite(mavi_led, LOW); // 7 saniye sensörün ısınmasını beklerken mavi ışık yanmakta
delay(7000);
digitalWrite(mavi_led, HIGH); //7 saniye sonra mavi ledi söndürecdek
delay(1000);
}
void loop()
{
//analogRead() fonksiyonu ile sensör değerini ölçüyoruz ve bir değişken içerisinde tutuyoruz:
int sensorDeger = analogRead(sensor_pin);
//Sensör değeri belirlediğimiz eşik değerinden yüksek ise alarm() fonksiyonunu çağırıyoruz:
if (sensorDeger >= 300) //sensör değeri 300ü geçince alarm fonksiyonunu çağrıyoruz
alarm(100);
//Alarmın çalmadığı durumda LED'in yeşil yanmasını istiyoruz:
else
digitalWrite(yesil_led, LOW);
Serial.println(sensorDeger); //seri port ekranında değerleri görmek için yazdırıyoruz.
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)
{
tone(buzzer_pin, 493); //Buzzer 493Hz de si notası çıkaracaktır.
//normal durumda yeşil yanmaktaydı alarm durumuna geçerken yeşil ledi söndürüp kırmızı ledi yakıyoruz.
digitalWrite(kirmizi_led, LOW);
digitalWrite(yesil_led, HIGH);
delay(duration);
noTone(buzzer_pin);
digitalWrite(kirmizi_led, HIGH);
digitalWrite(yesil_led, HIGH);
delay(duration);
}
RGB ledinizin PWM pinlerine bağladığınızdan emin olun ve ortak anot mu, ortak katot mu olduğuna karar verip ona göre devrenize bağlayın. eğer hangisi olduğunu bilmiyorsanız ortak ucu bir GND ye bağlayarak deneyin olmuyorsa güç pinine bağlayın. Biraz da deneme yanılma yapalım yani. 🙂
Gaz sensörünüz kartlı ise D0 pinini boş bırakabilirsiniz. Fakat A0 çıkışını nodeMCU üzerindeki analog pine bağlamanız önemli çünkü verileri bu pin üzerinden alıp okuyacağız.
Buzzera geçersek (-) ucunu GND ye, (+) ucunu da nodeMCU üzerinden digital pinlerden birine bağlayabilirsiniz.
Siz eğer buzzerınızın başka notalarda ötmesini istiyorsanız aşağıya bırakacağım nota değerlerini kullanabilirsiniz.
- DO : 262
- RE : 294
- Mİ : 330
- FA : 349
- SOL : 392
- LA : 440
- Sİ : 493
- DO : 523
Projemizin çalışma şekli kod içerisinde belirlediğimiz eşik değerine göre, değerin altındaysa yeşil ışık yanmaktadır. Ama değerin eşiğin üzerine çıkmasıyla alarm durumu devreye girer ve buzzzer ile led birlikte çalışıp kırmızı ışık yanar.
İşte Nodemcu ile gaz alarmı projemiz hazır artık. 🙂 İstediğiniz gibi kullanabilirsiniz.
Bu proje ve çok daha fazlası için Robolink Akademi‘yi, devrelerde kullanılan kompanentler içinde Robolink Market‘i ziyaret edebilirsiniz.
Herkese iyi çalışmalar dilerim. 🙂