Merhaba arkadaşlar, IoT başlangıç seti serimizin 4. dersindeyiz. NodeMCU ile ısı ve nem sensörünün nasıl kullanabileceğimizi ve sensörden sensörden alınan bilgiyi blynk üzerinden telefonumuzda nasıl okuyabileceğimizi öğreneceğiz. Her derste olduğu gibi ilk önce ısı nem sensörümüz (DHT11) hakkında konuşalım.
Isı ve nem sensörü(DHT11);Ucuz maliyetinden dolayı çokça tercih edilen dijital bir ısı ve nem ölçen sensördür. iç yapısında kapasitif bir nem sensörü ve termistör bulundurmaktadır. Termistör dediğimiz şey termal bir dirençtir. Sıcaklığa göre direnç değeri değişmektedir. 0 ile 50°C sıcaklık arasında + – 2°C hata payı olup, 20-90% nem arasında + – 4% hata payı vardır. Bunları göz önünde bulundurarak projelerinize dahil edebilirsiniz. Biz şimdi devre kurulumuna geçelim.
Eveeet devre kurulumumuz bu kadar. Yukarıda görmüş olduğunuz sensör modülsüz olduğundan 4 bacaklı haldedir tek bacağı boşta kalması gerekir. Modüllü olanlarda zaten 3 bacak bulunmakta onlarda şöyle; VCC,GND ve DATA. VCC yi NodeMCU üzerinde 3.3V pinine, GND yi herhangi bir GND ye, DATA yı da NodeMCU üzerinde dijital pinler arasında bulunan D2 pinine bağlıyoruz. Siz eğer başka bir pine bağlamak istiyorsanız dijital pinler arasından herhangi birine bağlayabilirsiniz. Ama NodeMCU pin out şemasına bakarak yapmanızı öneririm.
Nodemcu ile Isı ve Nem Sensörü Kullanımı Kodları
#include <dht11.h> // dht11 kütüphanesini kodlarımıza dahil ediyoruz.
int DhtPin=D2; // DhtPin olarak D2 pinini belirliyoruz.
dht11 dht_sensor; // dht_sensor adında bir DHT11 nesnesi oluşturduk.
void setup()
{
Serial.begin(9600); // Seri iletişimi başlatıyoruz.
Serial.println("*********************");
}
void loop()
{
// Sensör konrol ediliyor.
int chk = dht_sensor.read(DhtPin);
// Sensörden okunan değerleri serial ekranda yazdırıyoruz.
Serial.print("Nem Orani (%): ");
Serial.println((float)dht_sensor.humidity, 2);
Serial.print("Sicaklik (Celcius): ");
Serial.println((float)dht_sensor.temperature, 2);
// Veriler her 1 saniyede bir veriler ekrana yazdırılacak.
delay(1000);
}
Eğer çiğ noktası ve kelvin olarak sıcaklık ölçmek istiyorsanız kodun içerisine şu şekilde belirtmelisiniz.
- // Çiğ noktası- DHT11.fahrenheit()
- // Kelvin – DHT11.kelvin()
- // Çiğ noktası – DHT11.dewPoint()
Yukarıda görselde seri ekran portundan görebildiğimiz değerler bulunmakta. Şimdi bunu telefon ekranımızda blynk üzerinden nasıl görebileceğimize bakalım.
Blynk kodu;
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <dht11.h> // dht11 kütüphanesini ekliyoruz.
#define DHT11PIN D2 // DHT11PIN olarak Dijital 2"yi belirliyoruz.
dht11 DHT11;
int sicaklik, nem;
char auth[33] = "*********************"; //mailinize gelen token ı girin
char ssid[33] = "*************"; //internet adınız
char pass[33] = "*************"; //internet şifrenizi girin
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
}
BLYNK_READ(V0) {
DHT11.read(DHT11PIN);
sicaklik = DHT11.temperature;
Serial.println("Sıcaklık: " + String(sicaklik));
Blynk.virtualWrite(V0, sicaklik);
}
BLYNK_READ(V1) {
DHT11.read(DHT11PIN);
nem = DHT11.humidity;
Serial.println("Nem: " + String(nem));
Blynk.virtualWrite(V1, nem);
}
Blynk üzerinden iki adet labeled value seçiyoruz kodda belirtmiş olduğumuz virtualden V0 ı sıcaklık için seçiyoruz daha sonra ikincisi için yine virtualden V1 i seçiyoruz. Refresh interval de push değil kaç saniyede bir veri alınmasını uygun görüyorsak ona göre seçiyoruz. Ve sonra bağlantıyı kurup değerleri almaya başlayabiliriz.
Diğer ölçüm verilerinide almak istiyorsanız widget sayısını çoğaltıp verileri gözlemleyebilirsiniz. Umarım yararlı olmuştur bu yazı. Nodemcu ile ısı ve nem sensörü kullanımı hakkında sorularınız olursa yorumlara bırakabilirsiniz. 🙂
IoT başlangıç seti serimizin önceki yazılarına ve daha fazlasına göz atmak için Robolink Akademi‘yi, Eğer kompanentler hakkında bilgi almak yada satın almak istiyorsanız Robolink Market‘i ziyaret edebilirsiniz.
Herkese iyi çalışmalar. Bol projeler. 🙂
Blink:1:10: fatal error: dht11.h: No such file or directory
1 | #include // dht11 kütüphanesini kodlarımıza dahil ediyoruz.
| ^~~~~~~~~
compilation terminated.
exit status 1
dht11.h: No such file or directory
derleme sırasında böyle bir hata çıkıyor, nasıl düzeltebilirim?
internet üzerinden dht11 kütüphanesi bulup rar olarak indirilir. (İnternet üzerinde genellikle Arduino örnek içerisinde mevcut rar şeklinde dosya var.) Bu dosya açılır. Devamında örnek harici diğer dosyalar ilk olarak zip yapılır. Arduino programı açılır. Sketch —> Add Library —> Add Zip library den bu zip dosyası seçilir. Artık include komutu dht11 için çalışır 🙂
dht11.h kütüphane bulunamadı hatası alıyorum. Çözümü nasıldır? Kütüphane üzerinden ESP için Dht11 i de ekledim ama sonuç değişmedi.