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ının yüklenme işlemlerini –>> https://maker.robotistan.com/esp8266-karti-ile-akilli-ev-sistemleri/ yazımdan öğrene bilirsiniz.

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 ( https://maker.robotistan.com/esp8266-karti-ile-akilli-ev-sistemleri/ ) projeme de linklerden ulaşabilirsiniz.

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

2 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.

CEVAP VER

Please enter your comment!
Please enter your name here