Herkese merhaba bugün Nodemcu kullanarak WebServer üzerinden kontrol edilebilen akıllı kuvöz projesi yapıyoruz.

NOT: Bu bir hobi projesidir. Medikal bir tavsiye içermez.

İlk olarak malzemelere göz gezdirelim ;

5 adet asetat kağıdı (kuvözin dış kalıbı için kullandık ama siz akvaryum da kullanabilirsiniz. )

1 adet Nodemcu

1 adet 12v fan

1 adet mavi şerit led

1 adet Dht 11 ısı nem sensörü

2 adet npn tipi transistör (bc547 olabilir)

40 adet Jumper kablolar

2 adet biri yeşil biri kırmızı led (Biz wifi ye bağlı olup olmadığını kontrol etmek için takmıştık siz isterseniz çıkarabilirsiniz.)

İlk olarak devremizi inceleyelim 🙂

Devremizde ana beyin olarak nodemcu kullanılmıştır bu sayede tasarlayacağımız WebServer dan kontrol edebiliriz. Devre de transistörlererin ledi ve fanı çalıştırmak için tetikleyici eleman olarak kullanılmıştır:))

Evet geçelim kalıbımıza:)

Biz kalıp için seffaf olup içinin görünmesi için asetat kağıtlarından dikdörtgen bir prizma yaptık siz isterseniz akvaryum ya da başka birşey de kullanabilirsiniz :)) (Biz içine minik bir fan yerleştirdik hava kontrolü yapabilmek için)

Şerit ledi ekleyip üzerine de nem sensörünü de yapıştıralımmm (Proje de şerit led ultraviyole ışığı temsil etmektedir)

Akıllı Kuvöz Kodları.

En Çok Kullanılan HTML Kodları

  • <html>: Kök etiket olarak da bilinen bu temel kullanımda tüm HTML kodları, bu iki etiket arasında tanımlanmak zorundadır.
  • <body>: Görünebilir tüm HTML kod parçalarının eklendiği etiket alanıdır.
  • <head>: Web sayfasının dili, başlığı ve diğer düzenlemelerinin yer aldığı etikettir.
  • <title>: Web sitesinin başlık alanını tanımlamak için kullanılır. (Üst kısım)
  • <h>: Başlık kodu.( Arayüz üzerindeki başlıklar)
  • <a>: Bağlantı Kodu (Link)
  • <button>: Buton kodu, buton oluşturmanızı sağlar.
  • <img>: Resim eklemenizi sağlayan koddur.
  • <br>: Satır sonu kodu.
  • <p>: Paragraf kodu.

Daha fazla bilgi için nodemcu ile webserver kullanımı yazısını inceleyebilirsinizzz

(Kıaca anlatmak gerekirse ekranda çıkan ip adresini url kısmına yapıştırıyoruz:))

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include "DHT.h"

#define DHTTYPE DHT11   // DHT 11

/Put your SSID & Password/
const char* ssid = "*************";  //Wifi adınız
const char* password = "***********";  //wifi şifreniz

ESP8266WebServer server(80); //80 portunu kullanarak bir web server nesnesi oluşturduk

uint8_t DHTPin = D4;
uint8_t LED1pin = D2;
bool LED1status = LOW; //durumlarını tanımlıyoruz.
uint8_t LED2pin = D8;
bool LED2status = LOW;
               
// DHT'yi tanımlıyoruz..
DHT dht(DHTPin, DHTTYPE);                

float Temperature;
float Humidity;

void setup() {
  Serial.begin(115200);
  delay(100);
  
  pinMode(DHTPin, INPUT);
  pinMode(LED1pin, OUTPUT);
  pinMode(LED2pin, OUTPUT);

  dht.begin();              
  Serial.println("wifi'ya bağlanılıyor ");
  Serial.println(ssid);

  //yerel ağınıza bağlanmanız için gerekli komut
  WiFi.begin(ssid, password);

  //bağlantı gerçekleştiğini kontrol ediyoruz
  while (WiFi.status() != WL_CONNECTED) {
  delay(1000);
  Serial.print("."); //bağlantı sağlanana kadar ekranda "." çıkmasını sağlıyoruz.(Loading gibi)
  }
  Serial.println("");
  Serial.println("WiFi Bağlandı..!");
  Serial.print("IP Adresiniz: ");  Serial.println(WiFi.localIP());

  server.on("/", handle_OnConnect); //Bağlantı sağlandıktan sonra server kontrolleri.
  server.on("/led1on", handle_led1on);
  server.on("/led1off", handle_led1off);
  server.on("/led2on", handle_led2on);
  server.on("/led2off", handle_led2off);
  server.onNotFound(handle_NotFound);

  server.begin();
  Serial.println("HTTP Sunucusu Başladı");

}
void loop() {
  
  server.handleClient(); 
   if(LED1status)
  {digitalWrite(LED1pin, HIGH);}
  else
  {digitalWrite(LED1pin, LOW);}
  if(LED2status)
  {digitalWrite(LED2pin, HIGH);}
  else
  {digitalWrite(LED2pin, LOW);}
  
}

void handle_OnConnect() {

  LED1status = LOW;
  server.send(200, "text/html", SendHTML(Temperature,Humidity,LED1status,LED2status)); 
}
void handle_led1on() {
  LED1status = HIGH;
  Serial.println("D2 Durumu: ON");
  server.send(200, "text/html", SendHTML(Temperature,Humidity,true,LED2status)); 
}

void handle_led1off() {
  LED1status = LOW;
  Serial.println("D2 Durumu: OFF");
  server.send(200, "text/html", SendHTML(Temperature,Humidity,false,LED2status)); 
}

void handle_led2on() {
  LED2status = HIGH;
  Serial.println("D0 Durumu: ON");
  server.send(200, "text/html", SendHTML(Temperature,Humidity,LED1status,true)); 
}

void handle_led2off() {
  LED2status = LOW;
  Serial.println("D0 Durumu: OFF");
  server.send(200, "text/html", SendHTML(Temperature,Humidity,LED1status,false)); 
}

void handle_NotFound(){
  server.send(404, "text/plain", "Not found");
}

String SendHTML(float Temperaturestat,float Humiditystat,uint8_t led1stat,uint8_t led2stat){
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>Kuvöz kontrol</title>\n";
  ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
  ptr +=".button {display: block;width: 80px;background-color: #1abc9c ;border: none;color: white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px auto 35px;cursor: pointer;border-radius: 4px;}\n";
  ptr +=".button-on {background-color: #0095c7;}\n";
  ptr +=".button-on:active {background-color: #16a085;}\n";
  ptr +=".button-off {background-color: #34495e;}\n";
  ptr +=".button-off:active {background-color: #2c3e50;}\n";
  ptr +="p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";
  ptr +="</style>\n";
  ptr +="</head>\n";
  ptr +="<body bgcolor= pink style=color:white>\n";
  ptr +="<div id=\"webpage\">\n";
  ptr +="<h1>Biyomedikal Projesi</h1>\n";
  ptr +="<h1>Ayse Bebek Kuvöz Durumu</h1>\n";
  
  ptr +="<p>SICAKLIK: ";
  ptr +=(int)Temperaturestat;
  ptr +="°C</p>";
  ptr +="<p>NEM: ";
  ptr +=(int)Humiditystat;
  ptr +="%</p>";
  ptr +="<p>SES: ";
  if(led1stat)
  {ptr +="<p>Fan Kontrol: ACIK</p><a class=\"button button-off\" href=\"/led1off\">KAPAT</a>\n";}
  else
  {ptr +="<p>Fan Kontrol: KAPALI</p><a class=\"button button-on\" href=\"/led1on\">AC</a>\n";}

  if(led2stat)
  {ptr +="<p>Isik Kontrol: ACIK</p><a class=\"button button-off\" href=\"/led2off\">KAPAT</a>\n";}
  else
  {ptr +="<p>Isik Kontrol: KAPALI</p><a class=\"button button-on\" href=\"/led2on\">AC</a>\n";}


  
  ptr +="</div>\n";
  ptr +="</body>\n";
  ptr +="</html>\n";
  return ptr;
}

Aklınıza takılan soruları yorumlar kısmında sorabilirsiniz o zaman #projebaşlasın

CEVAP VER

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