back to top

ESP8266 Kart Ve DHT11 İle Oda Sıcaklık-Nem Ölçümü

Merhaba arkadaşlar , bu gün sizlerle DHT11 sıcaklık-nem sensör kullanarak odamızın sıcaklık ve nem oranının okumasını yapacağız.

Projemizden sizlere kısaca bahsetmek istiyorum. Projemizi hayata geçirirken https://app.remoteme.org/ sayfasından yararlanacağız. RemoteMe bize şöyle bir kolaylık sağlıyor, kod kısmını hazırda verirken çok kısa bir sürede server kurmamızı sağlıyor. Bu server sayesinde istediğimiz yerden telefon tablet vs. araçları kullanarak okuttuğumuz verileri görmemizi sağlıyor.

Bu proje ile odanızı akıllı hale getirip sıcaklığını ve nem değerlerini görüp yine aynı sistem üzerinden tetiklemelerle projenizi şekillendirip değiştirebilirsiniz.

Projemizi sizlerle görsel bir şekilde anlatmaya çalışacağım.

Projemizin alt katagorileri şu şekilde olacaktır:

  1. RemoteME sayfa anlatımı
  2. Server kurulumu
  3. Devre kısmı
  4. Kod kısmı

şeklinde olacaktır.

Projemiz için gerekli malzemeler de şu şekilde olacaktır.

  1. ESP8266 kart
  2. DHT11 sensör
  3. Breadboard
  4. Jumper kablolar (D-E)
  5. 10 K direnç

1- REMOTEME SAYFA ANLATIMI

Sayfamıza https://app.remoteme.org/ ‘dan ulaşabilirsiniz. Linke giriş yaptıktan sonra karşımıza çıkan sayfada hızlıca üye olduktan sonra giriş yapmamız gerekiyor.

Sayfamıza giriş yaptıktan sonra ,

Sol kısımda bulunan Variables kısmına gelmemiz gerekiyor burada sıcaklık ve nem olmak üzere iki tane Variable oluşturacağız. Variables kısmına geldikten sonra sağ üst kısımda bulunan +Add kısmına basıyoruz.

Karşımıza çıkan bu pencerede ilk olarak Nem değerimiz için bir Variable oluşturuyoruz.

İsim kısmı size kalmış ben Nem olarak belirldim.

Daha sonra Mode kısmını Local  olarak ayarlıyoruz.

Type kısmına geldiğimizde daha önceki projemizde Boolean yapmıştık fakat burada bizim Type kısmımız Integer olarak ayarlıyoruz ve Submit’ e basıyoruz.

Bu işlemleri yaptıktan sonra sayfamız tekrar başa gelecektir tekrardan +Add kısmına basmamız gerekiyor. Bu sefer aynı işlemleri Sıcaklık Variable oluşturmak için yapacağız.

+Add bastıktan sonra açılan pencerede name kısmına sicaklik olarak yazıyoruz. (Sizler dilediğiniz gibi seçebilirsiniz.)

Daha sonra mode kısmımızı Local olarak ayarlıyoruz.

Ve yine Type kısmımızı Integer olarak belirleyip , Submit ’e basıyoruz.

Adım adım işlemlerimizi yaptıktan sonra karşımıza çıkacak ekran şu şekilde olacaktır.

Bu ekrana geldikten sonra sol tarafta bulunan Devices kısmına geleceğiz. Bu kısımda ESP8266 kartımızı tanımlayıp kod alma işlemlerimizi halledeceğiz.

Devices kısmına tıklıyoruz.

Açılan sayfada sağ tarafta bulunan + New Device kısmına tıklıyoruz.

Açılan bu pencerede New Network Device (ESP)  kısmına basıyoruz.

Açılan bu sayfada Type kısmını Arduino olarak ayarlıyoruz.

Name olarak ben burada DHT11 olarak belirledim. Bu bizim proje adımız olacaktır. Siz kendi proje adınızı verebilirsiniz.

Daha sonra bir işlem yapmadan Submit ’e basıyoruz.

Açılan bu sayfada görüldüğü gibi bir pencere açılacaktır. Sol tarafındaki turuncu işaret bize ESP8266 kartımızın takılı olmadığını göstermektedir.

Bu işlemleri hallettiğimize göre kod alma kısmımıza geçebiliriz.

Bu sayfada oluşturduğumuz pencerenin sağ kısmında bulunan üç çizgi simgesine kod basıyoruz.

Daha sonra açılacak olan bu pencerede Code Generator Wizard kısmına basıyoruz.

 

Bu karşımıza çıkan ilk sayfada daha öncesinde belirlediğimiz Variables’larımızı görüyoruz.

Burada kod alma işlemlerimizi alacağımız için Variable değerlerimizi seçmemiz gerekiyor seçtikten sonra Next’ e basıp bir sonraki adıma geçiyoruz.

Bu adımda karşımıza şöyle bir sayfa çıkacak,

bu sayfa da server bağlantıları ve ESP8266 kartımızın internet bağlantısı için kendi wi-fi adınızı ve şifrenizi giriyoruz.

Daha sonra Next’e basıyoruz. 3. Adıma devam ediyoruz.

3. sayfaya geçtiğimizde, bu projemiz için burada değişiklik yapmamıza gerek duymuyoruz ve direkt Next’ e basıyoruz.

4. sayfaya geçtiğimizde kaşımıza açılan pencere bizim haberleşme hızımızı ayarlamamıza sağlayacak olan adımdır.

Haberleşme hız ayarını yaptığımıza göre tekrar Next’e basıp asıl kod alma yerimiz olan 5. Adıma geçiyoruz.

Bu adımda gördüğümüz seçeneklerden View kısmına basarak kodumuzu görüyoruz.

Görselde gördüğünüz wifi adı, şifresi gibi bilgileri 2. Adımımızda girdiğimiz bilgiler olacaktır. Token kısmında ise sizin hesabınızın bir Token‘i olacaktır. Görselde görüldüğü gibi değil sizin girdiğiniz bilgiler gözükecektir.

Bu adımda verilen kodu Arduino programımıza kopyalama yapıyoruz.

Burada eksiksiz kopyalandığına dikkat etmemiz gerekiyor.

Kodumuzu şimdilik kopyalayıp yapıştırdıktan sonra bırakıyoruz, bu kod işlemlerine kod kısmında detaylı anlatacağım.

Hadi devam edelim.

Close basıp sayfamızı kapatıyoruz. Ve karşımıza şu ekran gelecek:

Buraya kadar her adımı eksiksiz yapmanız gerekmektedir hata yapıldıysa geri dönüp düzenleseniz daha iyi olacaktır.

İşler karışık hal alırsa her şeyi silip baştan yapmanızı tavsiye ederim.

Bu adımları eksiksiz hallettiğimize artık Server Kurulumu kısmına geçebiliriz.

2- SERVER KURULUMU

Bu sayfada sağ taraftaki +New Device kısmına basarak devam ediyoruz.

Açılan pencerede New Web Page kısmına basmamız gerekiyor.

Bu işlemi yaptıktan sonra kaşımıza bir pencere açılacaktır.

Burada isim kısmına yine istediğimiz bir adı verebilirsiniz.

Burada sadece isim verme işlemimiz olacaktır Device kısmında penceresini oluşturduktan sonra asıl server işlemlerine geçecektir.

Name” ‘imizi belirleyip Submit’ basıyoruz.

Görüldüğü üzere device sayfamızda belirlediğimiz iki Device vardır.

İşlemlerimize devam edebilmek için web olarak belirlediğimiz pencereye tıklıyoruz.

Açılan bu sayfada index.html‘ e basıyoruz.

index.html ‘ e bastığımızda açılacak pencere de Edit With Wizard seçeneğine basıyoruz.

 

Açılan bu pencerede sol üstte bulunan “Insert Component” kısmına basıyoruz.

Açılacak sayfada ilk başta bulunan Component kısmında okuma yaptığımız değerleri göstermek üzere Gauge seçiyoruz.

Gauge seçtiğimizde penceremiz bu şekli alacaktır. Bu sayfada componentimizin şeklini sağ altta, sağ üstte html server kodlarımızı ve sol taraftaki pencerede aralık değerlerimizi ve neredeki bilgileri okuyacağımızı seçtiğimiz pencereler gözükmektedir.

Burada Name kısmının sağ kısmında bulunan mercek imlecine tıklayıp Variable kısmında belirlediğiniz değerleri göreceksiniz.

Buradan bir tanesini seçmemiz gerekiyor.

Ben nemi seçiyorum.

Daha sonra aralık değerlerimizi belirledikten sonra sağ altta bulunan Insert’e basıyoruz.

Gördüğünüz gibi belirlediğimiz Gauge burada belirdi.

Bu bizim nem için olan göstergemiz , devam edip sıcaklık değerlerimiz içinde bir Gauge belirlememiz gerekiyor.

Bunun için tekrar Insert Component kısmına basarak devam ediyoruz.

Bir kez daha açılan sayfada Component kısmına Gauge seçtikten sonra Name kısmında belirlediğimiz sicaklik Variable seçmemiz gerekiyor.

Daha sonra aralıklarınızı dilediğiniz gibi ayarlayıp sağ altta bulunan Insert kısmına basıyoruz.

Gauge ve server içeriğimizi bu şekilde ayarlamış olduk.

Ayarlarınızı yaptıktan sonra sağ altta bulunan Close kısmına basıyoruz ve Device sayfamıza geri dönüyoruz.

3- DEVRE KURULUMU

Wemos kartımızın da pinleri bu şekilde olacaktır.

DHT11 sensörümüzü sağladıktan sonra Dişi-Erkek Jumper kablolarımızı alıp ESP8266 kart üzerinden bağlantımızı gerçekleştiriyoruz.

VCC hattını ESP8266 kart üzerindeki sol alt kısmındaki VIN hattına bağlıyoruz.

DHT11 sensörün GND bacağını yine  Dişi-Erkek Jumper kullanarak ESP kart üzerinde GND pinine bağlantısını sağlıyoruz.

Daha sonra DHT11 sensörümüzün data ayağı olan 2. bacağından yine Dişi-Erkek Jumper kaplo yardımıyla okuma yapacağınız pine bağlıyoruz.

Ben pinimi 5 olarak bağladım buda Wemos ESP8266 kart üzerindeki D1 pini anlamına gelecektir.

Kart üzerinde D1,D2.. şeklinde yazmasın karşılık biz kod kısmında sayı olarak yazacağız.

Örneğin : D1 yerine 5 yazacağız.

Pin bağlantılarımızı yaptıktan sonra artık kod kısmına geçebiliriz.

Görselde görülen “**********” şeklindeki yerlerde siz kod alma işlemini yaptığınızda sizin kendi bilgileriniz olacaktır.

4- KOD KISMI

Kısmına detaylı bir şekilde geçmeden önce hatırlayacağınız gibi zaten yazımızın RemoteMe kısmında kod alma işlemlerini gerçekleştirmiştik.

Tekrar Arduino sayfamızı açıyoruz.

Kodumuz bu şekilde gözükecektir. Biz sadece burada ufak değişiklerle istediğimiz düzene sokacağız.

Sizin de göreceğiniz gibi DHT11 kütüphanelerimiz ve pin belirleme komutlarımız burada yazmamaktadır.

O yüzden bunları kurmamız ve yüklememiz gerekiyor.

ESP8266 kart ve kütüphane yükleme işlemlerini hallettikten sonra , RemoteMe sayfamızın kütüphanelerini yüklememiz gerekmektedir.

Bunun için ,

Araçlar  >>  Kütüphaneleri Yönet kısmına gelerek açılan pencerede arama kısmına RemoteMe yazarak aratıyoruz.

 

Bu iki kütüphaneyi de kurmamız gerekmektedir.

Bu işlemleri doğru bir şekilde yaptıysanız hemen hızlıca devam edelim.

#define WIFI_NAME "************"
#define WIFI_PASSWORD "*************"
#define DEVICE_ID 1
#define DEVICE_NAME "DHT11"
#define TOKEN "******************"

#include <RemoteMe.h>
#include <RemoteMeSocketConnector.h>
#include <ESP8266WiFi.h>

#include "DHT.h"
#define DHTPIN 5
#define DHTTYPE DHT11   

DHT dht(DHTPIN, DHT11);

RemoteMe& remoteMe = RemoteMe::getInstance(TOKEN, DEVICE_ID);

inline void setNem(int32_t h) {remoteMe.getVariables()->setInteger("nem", h); }
inline void setSicaklik(int32_t t) {remoteMe.getVariables()->setInteger("sicaklik", t); }

void onNemChange(int32_t h) {
}
void onSicaklikChange(int32_t t) {
}

void setup() {

  WiFi.begin(WIFI_NAME, WIFI_PASSWORD);

  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
  }

  remoteMe.getVariables()->observeInteger("nem" ,onNemChange);
  remoteMe.getVariables()->observeInteger("sicaklik" ,onSicaklikChange);

  remoteMe.setConnector(new RemoteMeSocketConnector());
  remoteMe.sendRegisterDeviceMessage(DEVICE_NAME);
}

void loop() {
  remoteMe.loop();
  setNem(dht.readHumidity());
  
  setSicaklik(dht.readTemperature());
}

Kod kısmında kodlarımız bu şekilde gözükecektir. #include komutlarımızla DHT kütüphanelerizi ekliyoruz ve #define komutlarımız ile de DHT pinimizi belirliyoruz. Ben burada 5 olarak yani D1 pinini seçtim.

DHT11 pinimizin çalışması için ayrı olarak yine #define komutu kullanarak type belirlememiz gerekmektedir.

Setup kısmına geçmeden DHT fonksiyon şeklinde dht(pinadını,DHT type ); olmak üzere bir komut yazmamız gerekiyor. Bu bizim okuma yapmamızı sağlayacak komut olacaktır.

Daha sonra setup kısmında serial haberleşme başlatmamız gerekmektedir. Bu haberleşme sayesinde okuma bilgilerinizi serial monitörden kontrol edebilirsiniz.

Bu serial haberleşme hızmızı zaten RemoteMe kod alma kısmında 4. Adımda belirlemiştik.

Daha sonra okuma başlatmak için dht.begin(); şeklinde bir komut yazarak sıcaklık ve nem okuma başlatıyoruz.

Daha sonra kodumuzda ilerlediğimizde karşımıza çıkan hazır komutlar üzerinde Loop kısmında değişiklik yapmamız gerekiyor.

Loop kısmına geldiğimizde ,

setNem(dht.readHumidity());

setSicaklik(dht.readTemperature());

iki komut eklememiz gerekiyor.

Dikkat etmeniz gereken bir durumda şu olacaktır. Benim paylaştığım kodlar benim aldığım kodlar için geçerlidir, yani siz setNem yerine RemoteMe sayfa anlatımı kısmında Variables olarak ne beklirlediyseniz o isim yazması gerekmektedir. Buna dikkat etmeniz gerekiyor. Aksi taktirde kodunuz çalışmayacaktır.

Kod detaylarını aşağıda paylaştığım dosyadan inceleye bilirsiniz.

Akıllı ev sistemleri kapsamında hazırladığım bir projemizin de sonun geldik. Artık dileğiniz yerin, dilediğiniz yerden sıcaklık ve nem ölçerek kendi  projelerinizi yapabilirsiniz.

Peki sizler ESP8266 kart ve DHT11 sensör hakkında neler biliyorsunuz ?

ESP8266 ile akıllı ev sistemleri kapsamında bir projemizin daha sonuna geldik bir diğer projelerim olan çiçek sulama ( https://maker.robotistan.com/esp8266-ile-cicek-sulama/) ve Google asistan ile lamba kontrol projeme de linklerden ulaşabilirsiniz.

Bir diğer akıllı ev projelerimizde görüşmek üzere , hoşça kalın. 🙂

Son Çıkan Yazılar

15 YORUMLAR

  1. Arduino:1.8.12 (Windows Store 1.8.33.0) (Windows 10), Kart:”Olimex MOD-WIFI-ESP8266(-DEV), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 2MB (FS:64KB OTA:~992KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200″

    arduino:8:22: fatal error: RemoteMe.h: No such file or directory

    compilation terminated.

    exit status 1
    RemoteMe.h: No such file or directory

    Merhaba. Önce yazılarınız için teşekkür ederim.

    RemoteMe.h dosyasını nereden bulup nasıl yükleyeceğiz.

  2. Selam Fehmi Bey,
    Ben robotistan ekibinden değilim. Sizin gibi kullanıcıyım. Öncelikle bu sistemi kuranın emeğine sağlık, ama bir kaç yanlış var açıklamalarda. İzah etmeye çalışayım:
    1)Yukarıda pin bağlantısı DHT 11’in ortasında gösteriliyor.Yani data bağlantısı. Oysaki robotistanın göderdiği sensörde Data ortada değil sol tarafta. Yani vcc’nin olduğu yerde. Vcc yani + bağlantı ise ortada.
    2)Sizin sorunuza cevap vereyim; Yukarıda anlatıldığı şekilde DHT11 sensörünün olduğu bağlantıyı yani uca bir jumperın dişi ucunu ve esp 8266 ‘ya lehimlediğiniz pim gurubunda (yazıda bahsedilmemiş esp pin gurubuna lehimsiz olarak geliyor) gnd ucunada dişi ucu bağlayacaksınız. Bir yanlışta yukarıda böyle var. Dişi erkek değil dişi dişi jumper gerekiyor üç tane. Daha sonra Esp 8266 ‘nın üzerinde D1 yazan pini (5 numaralı pin) dht 11 sensörünün sol tarafına ve Vın yazan (ki robotistanın linkinden çıkan vemos 8266’yı aldım, hiçbir yerinde vın falan yazmıyor) Dht11’in ortasındaki uca dişi dişi şeklinde bağlayacaksınız.
    3) bütün yüklemeleri doğru yapsanız ve sistemi çalıştırsanız bile sonunda verileri nerden ve nasıl okuyacağımızı açıklamamışlar.İzah edeyim. Remote me sayfasına girip açtığınız web uygulamasının yanındaki apple veya android logolarından telefonunuza uygun olanı seçip çıkan scan kodu taratmanız veya linki telefonunuza kopyalayıp tarayıcıdan açmanız gerekiyor. İşte bütün bunları başarırsanız o zaman değerleri görebileceksiniz.
    Saygılarımla….

  3. Yukarıda yazdıklarıma bir ek ve bir düzeltme yapmak istedim. Bütün bu bağlantıları esp 8266 ‘yı pin uçlarından bir breadboard’a batırarak, dişi erkek jumper kablo ile yapmakta mümkün.hatta daha doğru. Çünkü dht11 ‘in data ucu D1( 5 numaralı pine) bağlandıktan sonra, önüne 10k direnç ekleyip direnç ucundan da VIN’ a(esp 8266 üzerindeki) bir bağlantı yapmak şart. Bunu breadboard kullanmadan yapmaya kalkarsanız aynı VIN’ye hem VCC hemde direncin önündeki bağlantı gideceğinden lehim yapmanız gerekir. Aslında kurduğum devrenin fotoğrafını ekleyecektim ama yorum kısmı izin vermiyor.

    • Selamlar,

      Evet, yapılabilir. ESP8266 serisinden bir kart olduğu için bir şey değiştirmeye gerek kalmayacaktır. Kod yükleme yaparken Arduino UNO’ya bağlayarak yüklemeniz gerekiyor. Bu kısıma oldukça dikkat etmelisiniz.

      İyi çalışmalar dileriz 🙂

  4. Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), Kart:”Generic ESP8266 Module, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, Only Sketch, 115200″

    In file included from C:\Users\Unlub\OneDrive\Belgeler\Arduino\libraries\DHT_sensor_library\DHT_U.cpp:15:0:

    C:\Users\Unlub\OneDrive\Belgeler\Arduino\libraries\DHT_sensor_library\DHT_U.h:36:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1

    Generic ESP8266 Module kartı için derleme hatası.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    hatası veriyor ne yapmalıyım

  5. In file included from C:\Users\LENOVO\Documents\Arduino\libraries\RemoteMe\src/RemoteMe.h:27:0,

    “RemoteMe.h” için birden fazla library bulundu
    from C:\Users\LENOVO\Desktop\esp_dht11\esp_dht11.ino:8:

    Kullanılıyor: C:\Users\LENOVO\Documents\Arduino\libraries\RemoteMe
    C:\Users\LENOVO\Documents\Arduino\libraries\RemoteMe\src/Variables.h:4:10: fatal error: list: No such file or directory

    #include

    ^~~~~~

    compilation terminated.

    exit status 1
    Arduino/Genuino Uno kartı için derleme hatası.
    bu hatayaı nasul çözebiliriö

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz