Merhaba, bugün NodeMCU ile LM35 kullanarak oda sıcaklığını ölçeceğiz ve daha sonra bu sıcaklık değerini bir web arayüzü yardımı ile görüntülemeyi amaçlayan bir proje gerçekleştireceğiz.

Bu proje için bize şu malzemeler gerekli:

Malzeme Listesi

Biraz malzemelerimizi tanıyalım.

Malzemelerin Özellikleri

İlk önce NodeMCU kartından bahsetmek istiyorum. NodeMCU açık kaynak kodlu, düşük maliyetli ve  Wi-fi üzerinden haberleşme yeteneği olan bir kontrol kartıdır. Yaygın olarak “IOT” (internet of things = nesnelerin interneti) alanında kullanılmaktadır. Wi-fi üzerinden haberleşme özelliği sayesinde projelerimizi uzaktan kontrol etme imkanı sunmaktadır. NodeMCU’ nun, ESP8266 veya ESP32 çipini barındıran iki farklı modeli vardır. Her ne kadar ESP32’nin ESP8266’ya göre daha çok artısı bulunsa da düşük maliyetinden dolayı ESP8266 modeli daha çok tercih edilmektedir. 

LM35 ise devremizde sıcaklık ölçmek için kullanacağımız analog bir sensördür. LM35 sensörü -55 ile +150 °C arasında sıcaklık ölçümü yapabilmekte ve her 1°C lik artış için 10mV luk çıkış vermektedir. Yani ortam 20°C ise LM35 bize 200mV çıkış verecektir. Biz de bu projede LM35’in bu özelliğinden yararlanarak verdiği çıkış miktarına göre °C cinsinden sıcaklık ölçümü yapacağız.

Şimdi sırada devremizi kurmak var.

NodeMCU ile Web Arayüzlü Dijital Termometre Devresi

Devremizi kurarken tek yapmamız gereken LM35 sıcaklık sensörünün bacaklarını ilgili pinlere bağlamak.

Şimdi Arduino IDE üzerinden NodeMCU kartını programlayabilmek için gerekli yapılandırma ayarlarına geçebiliriz.

Arduino IDE’ ye NodeMCU Kartını Eklemek

NodeMCU kartı Arduino IDE içinde maalesef hazır olarak gelmiyor. Bu yüzden kartımızı manuel olarak ekleyeceğiz. İlk önce Arduno IDE üzerinden Dosya –> Tercihler kısmına gelip  “Ek Devre Kartları Yöneticisi URL’leri” bölümüne aşağıdaki linki yapıştıralım.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Daha sonra “Tamam” seçeneğine basıp pencereyi kapatalım ve Arduino IDE’yi yeniden başlatıyoruz. Bu sefer Araçlar –> Kart –> Kart Yöneticisi bölümüne gelip çıkan kutucuğa “ESP8266” yazıp eklentiyi indirip kuralım.

Kurulum tamamlandığında Arduino IDE’yi tekrar yeniden başlatalım. NodeMCU kartımızı Micro USB kablo yardımı ile bilgisayara bağlayalım ve tıpkı Arduino’da olduğu gibi doğru port ve kart ismini seçelim. Eğer bilgisayarınız NodeMCU kartını algılamadıysa CP2102 veya CH340G sürücüsünü kurmalısınız.

Şimdi projemizin en önemli bölümü olan kod kısmına geçebiliriz.

 

NodeMCU ile Web Arayüzlü Dijital Termometre Kodları

#include <ESP8266WiFi.h>
const char* ssid = "Wi-fi SSID"; //wi-fi ağımızın ismini yazıyoruz
const char* password = "Wi-fi Şifresi"; //wi-fi ağımızın şifresini giriyoruz
float sicaklik_celsius = 0; // herhangi bir hata ile karşılaşmamak için sıcaklıklarımızın ilk değerini "0" olarak tanıttık.
float sicaklik_fahrenheit = 0; //projeye biraz daha renk katmak için fahrenheit ve kelvin cinsinden de sıcaklığı okumak istedim.
float sicaklik_kelvin = 0;
WiFiServer server(80); // sunucumuzu oluşturduk ve portunu girdik.
void setup() {
Serial.begin(9600); // seri haberleşmeyi 9600 baudrate de başlattık
pinMode(A0, INPUT); // LM35 in OUT pininin bağlı olduğu yeri belirttik
Serial.println();
Serial.println();
Serial.print("Bağlanıyor… ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi Ağına Bağlanıldı");
server.begin(); //NodeMCU wi-fi ağına bağlandığına göre sunucumuzu başlatabiliriz.
Serial.println("Sunucu Başlatıldı");
Serial.println(WiFi.localIP());
}
void loop() {
sicaklik_celsius = (analogRead(A0) * 1023.0 / 3300.0) / 10;
/*
LM35'in güç pinini NodeMCU' da 3.3V pinine bağlamıştık. Yani 0V analog okumada 0 değerine tekabül ederken 3.3V değeri 1023 e tekabül etmektedir.1V= 1000mV olduğundan parantez içindeki kısımda LM35'den gelen gerilim değerini buluyoruz. Daha sonra 10'a bölmemizin sebebi ise LM35 'in her 1 derece için OUT pininden 10mV çıkış vermesidir.
*/
sicaklik_fahrenheit = sicaklik_celsius * 1.8 + 32.0; //sıcaklığı fahrenheit cinsinden bulmak için formülize ettik
sicaklik_kelvin = sicaklik_celsius + 273; //sıcaklığı kelvin cinsinden bulmak için formülize ettik
Serial.print(sicaklik_celsius);
Serial.println(" Celsius");
Serial.print(sicaklik_fahrenheit);
Serial.println(" Fahrenheit");
Serial.print(sicaklik_kelvin);
Serial.println(" Kelvin");
WiFiClient client = server.available();
/*
Web sunucumuzda sıcaklığı yazdırmak için gereken HTML kodlarımızı yazdık. İsterseniz sunucunuzu "color" veya font-size" değerleri ile oynayarak özelleştirebilirsiniz.
*/
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 10");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("<p style='text-align: center;'><span style='font-size: x-large;'><strong>Dijital Termometre</strong></span></p>");
client.print("<p style='text-align: center;'><span style='color: #3f7f00;'><strong style='font-size: large;'>Celsius = ");
client.println(sicaklik_celsius);
client.print("<p style='text-align: center;'><span style='color: #3f7f00;'><strong style='font-size: large;'>Fahrenheit = ");
client.println(sicaklik_fahrenheit);
client.print("<p style='text-align: center;'><span style='color: #3f7f00;'><strong style='font-size: large;'>Kelvin = ");
client.println(sicaklik_kelvin);
client.print("</p>");
client.println("</html>");
delay(5000);
}

Web Üzerinden Sıcaklık Değerini Görme

Kodu yükleyelim, serial port penceremizi açalım ve NodeMCU kartını “RST” pinine basarak resetleyelim. Karşımıza şöyle bir ekran gelmeli.

Bu kısımda bizim için önemli olan “LOCAL IP” yani 192.168.x.xx adresi. Bu adresi kopyalayalım ve herhangi bir internet tarayıcısına link olarak yapıştıralım.

Ve sıcaklık değerlerimiz tam karşımızda…

Proje ile İlgili Karşılaşabileceğiniz Sorunlar

1.Web Üzerinden Değerleri Göremiyorum

  • IP adresinin doğruluğunu kontrol edin.
  • NodeMCU’nun bağlandığı ağ ile kullandığınız ağın aynı olduğunuzdan emin olun. Çünkü bu projede sadece “LOCAL” üzerinden görülebilecek şekilde yazılım yaptık.

2. Seri Haberleşme Ekranında Sadece “……” Yazıyor

  • “…….” işareti NodeMCU’nun ilgili ağa bağlanmaya çalıştığını göstermektedir. Eğer 1 dakika içinde bağlanmadıysa ve Wi-fi bilgilerini doğru girdiğinizden eminseniz, NodeMCU kartına RST butonundan reset atarak tekrar deneyin.

3. Sıcaklık Değerleri Görünmüyor veya Yanlış Görünüyor

  • LM35’in bağlantıları yanlış olabilir ya da OUT pininin bağlandığı yeri yazılımda yanlış belirttiniz. (Biz A0 kullanmıştık).
  • LM35’in OUT pini NodeMCU’da bir “ANALOG” pine bağlanmalıdır. Çünkü LM35 analog çıkış veren (1 ya da 0 değil; örneğin 110,200 vb.) bir sensördür.

Nodemcu ile web arayüzü – dijital termometre projemizin sonuna geldik. NodeMCU yaptığımız proje hakkında herhangi bir sorunuz olursa bu gönderiye yorum olarak yazabilir veya mail adresimden bana ulaşabilirsiniz.

🚀 Nodemcu ile Blynk yazımızı okumanızı da tavsiye ederiz.

İyi çalışmalar dilerim…

#ProjeBaşlasın

CEVAP VER

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