NodeMCU ile DHT11 Kullanarak Web Üzerinden Sıcaklık ve Nem Değeri Okuma

Merhaba, ben Mehmet SÜTCÜ.

Bu yazıda ünü her yere yayılmış olan bir sensörü, DHT11’i NodeMCU ile nasıl kullanacağımızı anlatmaya çalışacağım. DHT11’in adını hiç duymamış olanlara kısaca bilgi verelim; DHT11, basitçe sıcaklık ve nem ölçümleri yapan bir sensördür. Uzun süreli çalışmalarda kararlı bir veri akışı gerçekleştirebilen DHT11, 8 bitlik bir mikroişlemci içeriyor. 0 ile 50°C arasında ±2°C hata payı ile sıcaklığı, 20-90% RH arasında ±5% RH hata payı ile de nemi ölçebiliyor.

Öncelikle ihtiyacımız olan malzemeler şunlar:

  • 1 adet NodeMCU DevKit
  • 1 adet DHT11
  • 1 adet Breadboard
  • Eğer DHT11’iniz modül halinde değil ise 1 adet 1K Ohm Direnç
NodeMCU DevKit

Peki, neden NodeMCU kullanıyoruz? Cevabı çok basit, çünkü NodeMCU küçük, ucuz ve güçlü bir cihaz. Yaklaşık 25-30 TL gibi bir fiyatı var. Öntanımlı olarak 80 Mhz hızında çalışıyor, ancak istenirse 160 Mhz hızında da çalışma kapasitesine sahip. Karşılaştırma yapmak gerekirse Arduino Uno’da bulunan Atmega328’de ise bu rakam 16 Mhz. Ve en büyük özelliklerinden biri ise gömülü gelen WiFi modülü.

Böylesine güzel bir cihazın dezavantajlarından da bahsetmeden geçmek olmaz tabii. Mesela pin sayısı az, ancak küçük boyutlara inince pin sayısından feragat etmek kaçınılmaz oluyor. Ve yine küçük boyuttan dolayı kartta kısa devre koruması yok. Bu da demek oluyor ki yanlış bir bağlantı yaptığınızda veya
vücudunuzda oluşması muhtemel olan statik elektrikten dolayı kartın kalıcı olarak arızalanması son
derece olası. Bu nedenle devre kurulumu esnasında mümkün olduğunca dikkatli olmanızda fayda var.
Önemli Not: Kesinlikle enerji altındayken devre kurmaya çalışmayın!

Malzeme listemizi hazırladıktan ve NodeMCU hakkında bir kaç şey öğrendikten sonra artık başlamaya hazırız. İlk olarak NodeMCU’yu Arduino IDE’si ile birlikte kullanmak için bazı işlemler yapmamız gerekiyor. Bunlarla başlayalım. Tabii bu aşamaları önceki yazılarda yapmış olanların yapmasına gerek yok. Yalnızca Aşama 3’te anlatmış olduğum güncelleme işlemine bir göz atmanız faydalı olacaktır.

Aşama 1

Arduino IDE’sini NodeMCU ile kullanabilmek için öncelikle GNU/Linux dışındaki işletim sistemlerini kullanıyorsanız https://goo.gl/hhkua7 adresinden NodeMCU sürücülerini kurmanız gerekiyor. GNU/Linux kullananlar bu konuda avantajlı, güncel dağıtımların hepsinde takar takmaz sistem tanıyor ve kullanıma hazır hale geliyor.

Windows kullanıcılarının karşısına şu aşamada böyle bir ekran geliyor. INSTALL yazan butona tıklarsanız program sürücüleri kuracaktır.

Aşama 2

Bir önceki aşamada bilgisayarımıza NodeMCU’yu nasıl tanıtacağımızı öğrendik, şimdi ise Arduino IDE’sine nasıl tanıtacağımızı öğreneceğiz. Bunun için ilk olarak kurulu değilse Arduino IDE’sini https://www.arduino.cc/en/Main/Software adresinden sisteminize uygun olanı indirmelisiniz. Kurulumu biraz uzun sürüyor. Kurulum tamamlandığında ise Dosya > Tercihler kısmına girin. Karşınıza şöyle bir ekran gelecektir.

Eğer sıfır kurulum yaptıysanız muhtemelen sizde “Satır numaralarını göster” kısmı işaretli olmayacaktır, ayrıca “Ek Devre Kartları Yöneticisi URL’leri” kısmı da bomboş olacaktır. Satır numaralarının gösterilmesi, işinizi çok kolaylaştıracağından tavsiyem o kutucuğu işaretlemeniz yönünde. Ek Devre Kartları Yöneticisi URL’leri kısmına da “http://arduino.esp8266.com/stable/package_esp8266com_index.json” linkini yazıp Tamam’a basarsanız artık bir kaç işlemden sonra NodeMCU ve Arduino IDE’si birbirlerini tanımaya başlayacaktır.

Aşama 3

Şimdi ise Araçlar > Kart > Kart Yöneticisi kısmına girip en alta inin. Görselde görüldüğü gibi ben daha önceden kurdum. Siz de “Kur” butonuna basarak kurulumu gerçekleştirebilirsiniz. İnternet bağlantınızın hızına bağlı olarak bu sürecin uzunluğu değişebilir.

Önemli! Eğer daha önceden kurulum yaptıysanız yine aynı yolu izleyip “Güncelle” butonuna basmanız gerekiyor. Aksi halde NodeMCU’ya program atamıyorsunuz. Ancak bu güncelleme ile gelen özellikler gerçekten çok hoş. Mesela artık ekstra kod yazmadan ESP’nin içindeki flash’ı kısmen veya tamamen temizleyebiliyoruz. Böylece istersek daha önceden kayıtlı ağ bilgileri dahil her şeyi silebiliyor ve NodeMCU’muzu ilk günkü
haline döndürebiliyoruz. Bir nevi format gibi 🙂

Güncelleme tamamlandıktan sonra ise görseldeki gibi bir görüntü görmeniz gerekiyor.

Aşama 4

Şimdi ise kartımızı seçip kodu atmaya hazır hale getirmeli ve gerekli konfigürasyonu yapmalısınız. Bunun için Araçlar > Kart kısmına girip NodeMCU 1.0 kartını seçmelisiniz. Daha sonra ise resmin alt kısmında ve birazdan kodun üst kısmında da göreceğiniz gibi ayarları düzenlemelisiniz. NodeMCU varsayılan olarak 80 Mhz frekansında çalışır, istendiği takdirde 160 Mhz frekansına ayarlanabilir. Bu parametreyi değiştirerek daha fazla performans elde edebilirsiniz. Ancak frekansı artırmak aynı zamanda güç tüketiminde de artışa sebep olacaktır. Isınma sorunundan endişe ediyorsanız, etmeyin. Şu ana kadar bir çok projede kullanmama ve cihazı günlerce açık bırakmama rağmen bir ısınma söz konusu olmadı.

Konfigürasyon Menüsü

Aşama 5

Şimdi gerekli olan kütüphaneleri kuralım ve kodumuzu atalım. İlk olarak Taslak > library ekle > libraryleri düzenle yolunu izleyerek Library yöneticisini açalım. Daha sonra görselde görüldüğü üzere “dht sensor library”yi arama kutucuğuna yazın ve aratın. En üstte çıkacak olan Adafruit’in dağıttığı library’yi sisteminize kurun. Ben daha önceden kurmuştum.

Daha sonra ise Adafruit_Sensor adlı bir kütüphane kurmamız gerekiyor. Ancak bunu Library yöneticisi aracılığıyla kuramıyoruz. İnternetten dosyaları indirip elle kurmamız gerekiyor.

Öncelikle https://goo.gl/FkTVX5 adresini ziyaret ediyoruz. Görselde gözüktüğü üzere ilk olarak sağ taraftaki yeşil “Clone or download” yazan butona, daha sonra da açılan kutucuktaki “Download ZIP” butonuna tıklıyoruz. İnen dosyayı açıp içindeki dosyaları çıkartıyoruz. İçinden çıkacak olan klasörün adını “Adafruit_Sensor-master” yerine “Adafruit_Sensor” olarak değiştiriyoruz. (Tırnak işaretleri yok.) Son olarak bu adını değiştirdiğimiz klasörü kopyalayıp sisteminizin “Belgeler” veya “Ev Dizini” klasöründe bulunan Arduino klasörünün içindeki “libraries” klasörünün içine yapıştırıyoruz. Eğer böyle bir klasör yoksa o zaman biz açıyoruz. Böylece kütüphanenin kurulumu tamamlanmış oluyor.

Şimdi ise kodumuzu derleyip yükleyelim 🙂 Kodu indirmek için: https://goo.gl/YNcEEf

Aşama 6

Şimdi ise devremizi kuralım 🙂 Devre şemasını görselde çizdim.

Devre Şeması

Devre şemasında dikkat etmeniz gereken bir detay var, o da modülsüz devredeki DHT11’in soldan 3. pininin boşta durması. Onu hiç bir yere bağlamıyoruz. Ayrıca +5V’u OUT pinine 1K’lık bir direnç üstünden veriyoruz. Ancak burada yine önemli bir detay var, bilgiyi direncin üstünden değil, direkt olarak pinden almamız gerekiyor. Bu nedenle ilk önce OUT, D4’e; daha sonra +5V’a bağlı.

Seri portu açıp baud rate’i 115200 baud’a ayarlarsanız gelen veriler anlamlı bir şekilde ekranınızda gözükmeye başlayacaktır.

Şimdi ise kartımızın aldığı IP’ye girelim ve web üzerinden verileri okumaya başlayalım. Benim kartım 192.168.0.108 IP’sini aldı. Bu IP’yi seri portu açtığınızda en başta görebilirsiniz. Göremiyorsanız bağlantı bilgilerini kontrol edin ve kart üzerindeki “RST” tuşuna basın.

Aşama 7

Bir yazının daha sonuna geldik. Umarım faydalı olabilmişimdir.

Sorularınız ve/veya önerileriniz varsa info@mehmetsutcu.com adresine mail atarsanız en kısa sürede geri dönüş sağlayacağımdan emin olabilirsiniz. Ayrıca bir çok sosyal mecrada “prdsmehmetstc” diye aratırsanız kişisel hesabımı bulabilir, bu yolla da iletişime geçebilirsiniz.

Çırak Dergisi (6. Sayı) için yazılmıştır. www.cirakdergi.com