Bu yazım içerisinde esp8266 dht11, nodemcu dht11,
sıcaklık ölçümü, nem ölçümü, esp32 dht11 ve
esp8266 sıcaklık ve nem ölçümü gibi aramalarınıza yanıtlar
bulabileceksiniz.
Arduino, ESP32, ESP8266, IOT Projeleri, STM32 gibi alanlarda projeler yapıyor ve özel sektörde birçok firmaya danışmanlık veriyorum. Ödeviniz, projeniz ve özel ders almak için benimle sitemin iletişim sayfasından iletişime geçebilir ve profesyonel destek alabilirsiniz.
Kısa sayılamayacak bir aranın ardından tekrar merhaba.
Python
programlama diliyle alakalı olan yazılarıma ara verip biraz da asıl meslek
alanım olan elektronik alanında yazılar yazmak istiyorum. Başlıkta da
belirttiğim üzere bu yazımız içerisinde ESP8266 yani NodeMCU olarak
isimlendirilen kartı ve DHT11 sensörünü kullanarak bir ortamın sıcaklık ve nem
değerlerini ölçmeyi öğreneceğiz. Bunu yaparken öncelikle Arduino IDE üzerinde
ESP8266 kartımızı programlamak için gerekli konfigürasyon ayarlarını yapmamız
gerekecek.
Arduino IDE ile ESP8266 (NodeMCU) Programlama
ESP8266 kartımızı Arduino IDE ile programlayabilmek için bazı ayarlamalar
yapmamız gerek. Bunları sırasıyla anlatacağım. Hiçbir adımı kaçırmamaya özen
gösterin.
Hali hazırda bilgisayarınızla CH340 çipine sahip klon bir Arduino UNO
kullanıyorsanız bu adımı zaten gerçekleştirmişsinizdir. Eğer bu adımı
gerçekleştirmediyseniz bilgisayarınız ile kartınızı haberleştirebilmek için
gerekli sürücüleri yüklemiş olmanız gerekmekte. Yazının çok uzamaması için
yazım içerisinde nasıl kurulduğundan bahsetmeyeceğim. Eğer kartınızı
taktığınızda bilgisayarızın portunda göremiyorsanız bu driver'ı yüklemeniz
gerektiğini bilmeniz yeterli. İnternet üzerinden nasıl yükleneceğine dair
fazla sayıda öğretici mevcut.
Sonrasında Arduino IDE programımızı açıyoruz ve aşağıda anlattığım adımları
sırasıyla yapıyoruz.
- Dosya --> Tercihler
- Açılan pencerede "Ek Devre Kartları Yöneticisi URL'leri" yazan yere bu linki yazıyoruz:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Ardından Tamam a basıyoruz.
- Daha sonra üstteki Araçlar menüsünden Kartlar seçeneğinin üzerine gelip oradan da Kart Yöneticisi ni seçiyoruz.
- Açılan pencere arama çubuğuna esp8266 yazıyoruz ve çıkan sonuçta Kur butonuna basıyoruz.
- Bu aşamadan sonra internet hızınıza bağlı olarak kurulum gerçekleşiyor.
- Daha sonra Araçlar --> Kart seçeneklerine geliyoruz ve NodeMCU 1.0 olanı seçiyoruz.
Artık Arduino IDE ile ESP8266 kartımızı programlayabiliriz.
ESP8266 (NodeMCU) ile Sıcaklık ve Nem Ölçme
Arduino IDE programımızı NodeMCU programlayabilmek için ayarladık. Sırada
sıcaklık ve nem ölçmemize yarayan DHT11 isimli sensör için kodları yazmak
var. Bu sensörü satın alırken iki farklı şekilde satıldığına dikkat etmiş
olabilirsiniz. Biri 4 pinli olarak yalın bir halde satılırken diğeri ise
üç pinli olarak ve üzerine 10k'lık pull-up direnci ile birlikte geliyor.
Yani 4 pinli olanı programlarken data hattına 10k'lık bir direnci pull-up
olarak bağlamanız gerek. Nasıl yapıldığına dair bir fikriniz yoksa ve
yapamadıysanız yorumlar kısmında belirtin. Ben bu yazım içerisinde 3 pinli
olanı kullanacağım.
Öncelikle DHT11 sensörümüz ile NodeMCU kartımızın bağlantılarını
gerçekleştirelim.
- VCC (+) --> 3.3V
- GND --> GND
- OUT (signal) --> D1
Yukarıdaki bağlantıları özenle yapın ve doğru yaptığınızdan emin olun.
Sonrasında kod yazma aşamasına geçelim.
Öncelikle bu sensörü kullanabilmek için bir kütüphane yüklememiz
gerekiyor. Bu yüzden Arduino IDE kütüphane yöneticisine gelerek "DHT sens"
yazıyoruz. "DHT Sensor library by Adafruit" yazanı yüklüyoruz.
Yükleme esnasında sorulan sorulara evet diyoruz. Kütüphane kurulumumuz bu
kadar.
Artık kodları yazma aşamasında geldik. Hangi kodun ne işe yaradığı yanında
yorum satırı olarak mevcut.
#include "DHT.h"
#define DHTPIN 5 // NodeMCU pinout diyaramina baktiginizda D1 pininin 5 numarali pine bagli oldugunu gorebilirsiniz.
#define DHTTYPE DHT11 // DHT11 sensoru kullandigimiz icin bunu yazdık.
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println(F("DHT11 test!"));
dht.begin(); //dht sensorumuzu baslattik.
}
void loop() {
delay(2000);
float h = dht.readHumidity(); // nem okuyoruz.
float t = dht.readTemperature(); // sicaklik okuyoruz.
if( isnan(h) || isnan(t)) {
Serial.println(F("DHT sensorunden veri alinamiyor. Baglantilari kontrol et!"));
return;
}
Serial.print(F("Humidity: ")); //nem
Serial.print(h);
Serial.print(F("% Temperature: ")); //sicaklik
Serial.print(t);
Serial.println(F("°C "));
}
Umarım gayet açıklayıcı bir anlatım olmuştur. Yapamazsanız veya anlamadığınız yerler varsa yorumlar kısmından destek alabilirsiniz. Kısa süre sonra tekrar görüşmek dileğiyle. İyi çalışmalar.