NodeMCU ESP8266 Hava İstasyonu Uygulaması; sıcaklık, bağıl nem, atmosferik basınç ve yağmur yağış durumunu donanımsal sensörler yardımıyla anlık ölçen ve bu verileri yerel Wi-Fi ağı üzerinden modern bir web arayüzünde (dashboard) yayınlayan gelişmiş bir IoT projesidir.
Nesnelerin İnterneti (IoT) teknolojilerinin gelişmesiyle birlikte, kendi çevresel verilerimizi toplayıp analiz edebileceğimiz kişisel istasyonlar kurmak son derece popüler ve öğretici bir hale gelmiştir.
Bu rehberimizde, DHT11 sıcaklık-nem, BMP180 barometrik basınç ve FC-37 yağmur algılama sensörlerinin elektriksel çalışma prensiplerini, donanımsal devre şeması kurulumunu, web sunucu mimarisini ve AJAX (Asynchronous JavaScript and XML) tabanlı anlık veri güncelleme tekniklerini tüm teknik ayrıntılarıyla ele alacağız.
Proje kapsamında NodeMCU ESP8266-12E Wi-Fi geliştirme kartını kullanacağız. Eğer ESP8266 veya ESP32 kartlarının Arduino IDE entegrasyonunu tamamlamadıysanız, güncel board manager ayarları için kapsamlı Arduino IDE’ye ESP32 Desteği Kurmak rehberimizi inceleyebilirsiniz.
Kişisel Hava Durumu İstasyonu Mantığı
IoT tabanlı hava durumu istasyonları iki ana tasarım modeline ayrılır. Birincisi, harici açık hava durumu servislerinin (OpenWeatherMap, Weather Underground vb.) API sunucularına internet üzerinden bağlanarak bölgenizdeki tahmin verilerini çeken modeldir. İkincisi ise, dış dünyaya kurulan yerel fiziksel sensörler yardımıyla mikro-iklim verilerini anlık ölçen ve kendi bağımsız veri sunucusunu barındıran modeldir. Bu projemizde, dışa bağımlılığı sıfıra indiren ve tamamen kendi ölçtüğümüz verileri yayınlayan kişisel fiziksel istasyon modelini hayata geçireceğiz.
Hava İstasyonu Donanımsal Sensörleri ve Çalışma Fiziği
Kararlı ve doğru ölçümler elde edebilmek için, kullandığımız sensörlerin fiziksel ve elektriksel çalışma prensiplerini anlamak mühendislik açısından büyük önem taşır. Çeşitli sensörlerin detaylı karşılaştırmaları için hazırladığımız kapsamlı Arduino Sensör Rehberimize göz atabilirsiniz.
1. DHT11 Sıcaklık ve Nem Sensörü
DHT11, ortamın bağıl nem oranını ölçmek için kapasitif bir nem algılama bileşeni ve sıcaklığı ölçmek için negatif sıcaklık katsayılı bir NTC termistör kullanan entegre bir sensördür. Çip içerisinde yer alan dahili 8-bitlik mikrodenetleyici, bu analog algılamaları dijital verilere dönüştürerek tek hatlı (single-wire) tescilli bir seri protokol üzerinden mikrodenetleyiciye aktarır. Protokol, 40-bit uzunluğunda veri paketleri (sıcaklık, nem ve checksum doğrulaması) yayınlar.

DHT11 sensörünü farklı platformlarda kodlamayı öğrenmek ve grafik arayüzlü termometre uygulaması gerçekleştirmek için DHT11 ve mBlock ile LCD Termometre Yapımı içeriğimizi inceleyebilirsiniz.
2. BMP180 Barometrik Basınç ve Yükseklik Sensörü
BMP180, Bosch Sensortec tarafından geliştirilen, piezo-rezistif silikon basınç sensörü teknolojisine sahip yüksek hassasiyetli dijital barometrik basınç sensörüdür. Atmosferik basıncı ölçerek I2C (Inter-Integrated Circuit) haberleşme veri yolu üzerinden
ile
aralığında dijital veriler sunar. Çip içerisinde fabrikada kalibre edilmiş 11 adet kalibrasyon katsayısı bulunur, bu katsayılar sıcaklık kompanzasyonlu hassas basınç ölçümleri hesaplamada kullanılır.

3. FC-37 Yağmur / Sıvı Algılama Sensörü
FC-37 yağmur sensörü, geniş bir algılama yüzeyine sahip nikel kaplı bir PCB plaka ve elektriksel karşılaştırıcı kartından (LM393) oluşur. Yağmur damlaları algılama plakasının üzerine düştüğünde, su iletken yollar arasında elektriksel bir köprü kurarak plakanın toplam empedansını (direncini) düşürür. Plaka kuruyken yaklaşık
direnç sunarken, tamamen ıslandığında direnç
seviyesinin altına iner. LM393 karşılaştırıcı kartı, bu direnç değişimini analog çıkış (A0) veya dijital eşik çıkışı (D0) olarak mikrodenetleyiciye iletir.

Donanımsal Devre Şeması Kurulumu
Sensörleri NodeMCU ESP8266 kartına bağlarken dikkat edilmesi gereken en önemli nokta, I2C veri yolu (BMP180 için) pinlerinin doğru seçilmesidir. NodeMCU üzerinde varsayılan donanımsal I2C hatları D2 (SDA) ve D1 (SCL) pinleridir. FC-37 yağmur sensörünün analog çıkışı ise ESP8266’nın tek analog giriş kanalı olan A0 (ADC0) pinine bağlanmalıdır. Devre kurulumunu aşağıdaki şemayı takip ederek gerçekleştirebilirsiniz:

İlk Kurulumda Donanımsal Doğrulama ve Kontrol
Büyük IoT projelerinde tüm sistemi bir anda çalıştırıp test etmek, hata ayıklamayı zorlaştırır. Bu yüzden şu doğrulamaları sırasıyla yapmanız önerilir:
- DHT11, BMP180 ve FC-37 sensörlerinin besleme voltajlarını (VCC) ve toprak (GND) hatlarını ortaklaştırın. BMP180
hattından, DHT11 ve FC-37 ise kararlı çalışabilmeleri için
(Vin) hattından beslenmelidir. - Devreyi kurduktan sonra öncelikle bir I2C tarayıcı kod çalıştırarak BMP180 sensörünün
veya
adresinde görünür olduğunu doğrulayın. - Kod yükleme aşamasında Wi-Fi SSID ve parolanızın yerel yönlendiricinizle (router) birebir eşleştiğinden emin olun.
- Seri haberleşme ekranında sensörlerden doğru verilerin geldiğini gördükten sonra web arayüzüne bağlanmayı deneyin.
Yazılımsal Mimari ve Proje Kodları
Projenin yazılımsal kararlılığını artırmak amacıyla web arayüz kodunu (HTML/CSS) ve ana program kodunu (C++) ayrı dosyalar halinde yapılandıracağız. Projeyi derlemeden önce şu kütüphaneleri Arduino IDE Kitaplık Yöneticisi üzerinden veya GitHub depolarından indirdiğinizden emin olun: SparkFun BMP180 Library ve DHTesp Library by Beegee-tokyo.
1. Web Arayüz Tasarım Kodu (index.h)
Bu dosya, ESP8266 web sunucusu tarafından tarayıcıya gönderilecek olan dinamik HTML ve CSS kodlarını barındırır. Sayfa, tarayıcıda widget benzeri premium bir görünüm sunar. Arayüzün görüntüsü şu şekildedir:

Aşağıdaki kodu kopyalayıp index.h adıyla kaydedin ve ana Arduino (.ino) projenizin yer aldığı klasörün içerisine yerleştirin:
2. Ana Program Kodu (Arduino .ino)
Bu dosya, sensörleri okuyan, Wi-Fi ağ bağlantısını yöneten ve gelen HTTP isteklerine yanıt dönen ana kontrol yazılımıdır. Kod içerisindeki ssid ve password alanlarını kendi Wi-Fi ağ bilgilerinizle değiştirmelisiniz:
Sistem Bağlantı ve Test Aşaması
Yazılımı NodeMCU geliştirme kartınıza yükledikten sonra, USB kablosu bilgisayara bağlı durumdayken Seri Monitörü açın. Kart ağa bağlandığında yerel yönlendiriciden aldığı IP adresini (örn: 192.168.1.100) ekrana yazdıracaktır. Aynı yerel ağa (Wi-Fi) bağlı olan bilgisayarınızdan veya akıllı telefonunuzdan bu IP adresini tarayıcınıza yazarak web arayüzünü açabilirsiniz.

AJAX Tabanlı Veri Güncelleme Mantığı: Tasarladığımız web arayüzünün en önemli mühendislik ayrıntısı, sayfayı yeniden yüklemeye (refresh) gerek duymadan verileri güncelleyebilmesidir. Arayüzün arka planında çalışan JavaScript kodu, her 2 saniyede bir ESP8266 sunucusunun /readSensors veya /readADC gibi uç noktalarına (endpoints) asenkron HTTP GET istekleri gönderir. Sunucudan dönen ham veriler sadece ilgili widget değerlerini dinamik olarak günceller. Bu sayede veri akışı pürüzsüzleşir ve ağ yükü minimize edilir.
Özetle; NodeMCU ESP8266’nın kablosuz ağ yetenekleri, zengin sensör entegrasyonu (I2C ve Analog) ve AJAX tabanlı web sunucusu birleştiğinde son derece kararlı ve başarılı bir kişisel hava istasyonu projesi ortaya çıkmaktadır. Çevresel verileri anlık takip ederek akıllı ev otomasyon sistemlerinize entegre edebilir, IoT alanındaki donanım ve yazılım birleştirme yeteneklerinizi üst seviyeye taşıyabilirsiniz.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.
