Mesajlar Etiketlendi ‘nodemcu’

DHT-22 Nem/sıcaklık sensörü ile yapılmış basit bir izleme/alarm devresi. Devrede ESP8266 WiFi modül ve 3 adet (istenirse arttırılabilir) DHT-22 sensor kullanıldı.

IMG_20190306_181849
Devre çalıştırıldığında wifi modeminize (veya AP) bağlanıyor. Programı yüklerken statik IP verebilir veya modem üzerinden cihazın aldığı IP’yi görebilirsiniz. Tarayıcıya bu IP adresini girdiğinizde, bağlı sensörlerin değerlerini görebiliyorsunuz. Ayrıca yine wifi üzerinden modüle bağlanıp değerleri alan bir windows yazılımı da var. bu yazılımda,
sıcaklık ve nem için alarm limiti tanımlayabiliyorsunuz.

Untitled-1

Untitled-2

web server tarafını isteğinize göre değiştirmek, görsel olarak zenginleştirmek mümkün.
Ben NodeMCU (ESP12E) kullanıyorum. Bağlantı şemasını nette kolaylıkla bulabilirsiniz.
DHT-22 sensörleri aşağıdaki gibi kullandım.

Untitled-3

Sensörlerin 3 ve 4 pinli olmak üzere 2 çeşidi var. Ben 4 pinli kullandım.
Sensörlerin data uçlarını 10k direnç ile Vcc’ye (3.3v) çektim.

Yapmak isterseniz, kodu sayfa sonunda bulabilirsiniz. Arduino’ya gerekli kütüphaneleri
kurarak kolayca derleyebilir ve yükleyebilirsiniz.

*************************************************************************************
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include “DHTesp.h”
int stLed = D2;
// config: ////////////////////////////////////////////////////////////

#define UART_BAUD 9600
#define packTimeout 5 //ms
#define bufferSize 8192

// For STATION mode:
const char *ssid = “SSID”;
const char *pw = “pass”;
const char* host = “sky_TempServer”;

const int port = 9876;
boolean tcpconn = false;

//////////////////////////////////////////////////////////////////////////

WiFiServer server(port); //9876
WiFiClient client;

char charT1[5];
char charH1[5];
char charT2[5];
char charH2[5];
char charT3[5];
char charH3[5];

int sayac = 0;
float temperature1, temperature2, temperature3;
float humidity1, humidity2, humidity3;

//String stringVal = “”;
//uint8_t buf1[bufferSize];
//uint8_t i1=0;

ESP8266WebServer wserver(80);

DHTesp dht1, dht2, dht3;

void setup() {
pinMode(BUILTIN_LED, OUTPUT);
pinMode(stLed, OUTPUT);

digitalWrite(BUILTIN_LED, HIGH);
digitalWrite(stLed, LOW);

Serial.begin(UART_BAUD);

Serial.println(“WiFi bekleniyor…”);
WiFi.forceSleepWake();

WiFi.setAutoConnect(false);
WiFi.hostname(host);
WiFi.mode(WIFI_STA);
//static IP
//IPAddress ip(192, 168, 1, 5);
//IPAddress dns(192, 168, 1, 1);
//IPAddress gateway(192, 168, 1, 1);
//IPAddress subnet(255, 255, 255, 0);
//WiFi.config(ip, dns, gateway, subnet);

delay(500);

WiFi.begin(ssid, pw);

wserver.on(“/”, handle_OnConnect);
wserver.onNotFound(handle_NotFound);

dht1.setup(D1, DHTesp::DHT22); //GPIO05
dht2.setup(D2, DHTesp::DHT22); //GPIO06
dht3.setup(D4, DHTesp::DHT22); //GPIO02
}
void loop() {
wserver.handleClient();

while (WiFi.status() != WL_CONNECTED) {
digitalWrite(stLed, LOW);
digitalWrite(BUILTIN_LED, !digitalRead(BUILTIN_LED));
delay(100);
if(WiFi.status() == WL_CONNECTED) {
digitalWrite(BUILTIN_LED, HIGH); //wifi connected

Serial.println(“WiFi connected”);
Serial.print(“IP address: “);
Serial.println(WiFi.localIP());

long rssi = WiFi.RSSI();
Serial.print(“RSSI:”);
Serial.println(rssi);

server.begin(); // start TCP server
Serial.println(“Starting TCP Server”);

wserver.begin();
Serial.println(“Starting HTTP server”);
}
}

if(!client.connected()) { // if client not connected
if (tcpconn) {
Serial.println(“disconnected”);
}

tcpconn = false;
client = server.available(); // wait for it to connect
}
if(client.connected()) {
if (!tcpconn) {
Serial.print(client.remoteIP());
Serial.println(” connected”);
tcpconn = true;
}

// now send to WiFi

client.write(“{“);
client.write(“|”);
client.write((char*)charT1, 5);
client.write(“|”);
client.write((char*)charH1, 5);
client.write(“|”);
client.write((char*)charT2, 5);
client.write(“|”);
client.write((char*)charH2, 5);
client.write(“|”);
client.write((char*)charT3, 5);
client.write(“|”);
client.write((char*)charH3, 5);
client.write(“|”);
client.write(“}”);
}

delay(dht1.getMinimumSamplingPeriod());
humidity1 = dht1.getHumidity();
temperature1 = dht1.getTemperature();

delay(dht2.getMinimumSamplingPeriod());
humidity2 = dht2.getHumidity();
temperature2 = dht2.getTemperature();

delay(dht3.getMinimumSamplingPeriod());
humidity3 = dht3.getHumidity();
temperature3 = dht3.getTemperature();

dtostrf(temperature1, 1, 1, charT1);
dtostrf(humidity1, 1, 1, charH1);
dtostrf(temperature2, 1, 1, charT2);
dtostrf(humidity2, 1, 1, charH2);
dtostrf(temperature3, 1, 1, charT3);
dtostrf(humidity3, 1, 1, charH3);

if (sayac > 9999) sayac = 1;
}

void handle_OnConnect() {
wserver.send(200, “text/html”, SendHTML(temperature1, humidity1, temperature2, humidity2, temperature3, humidity3));
}

void handle_NotFound(){
wserver.send(404, “text/plain”, “Not found”);
}

String SendHTML(float Temperature1, float Humidity1, float Temperature2, float Humidity2, float Temperature3, float Humidity3){
//dtostrf(temperature1, 1, 1, charT1);
//dtostrf(humidity1, 1, 1, charH1);
//dtostrf(temperature2, 1, 1, charT2);
//dtostrf(humidity2, 1, 1, charH2);
//dtostrf(temperature3, 1, 1, charT3);
//dtostrf(humidity3, 1, 1, charH3);

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>sky_tempserver</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 +=”p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n”;
ptr +=”</style>\n”;
ptr +=”<meta http-equiv=refresh content=10 ></head>\n”;
ptr +=”<body>\n”;
ptr +=”\n”;
ptr +=”Temperature/Humidity Monitor\n”;
ptr +=”ZONE-1:”;
ptr +=”Temp.: “;
ptr +=charT1;
ptr +=”C”;
ptr +=”Hum: “;
ptr +=charH1;ptr +=”%”;
ptr +=”ZONE-2:”;
ptr +=”Temp.: “;
ptr +=charT2;
ptr +=”C”;
ptr +=”Hum: “;
ptr +=charH2;
ptr +=”%”;
ptr +=”ZONE-3:”;
ptr +=”Temp.: “;
ptr +=charT3;
ptr +=”C”;
ptr +=”Hum: “;
//ptr +=”“;
ptr +=charH3;
ptr +=”
“;
ptr +=”%”;
ptr +=””;
ptr +=””;
ptr +=””;
ptr +=””;
ptr +=”webserver v.1.0 | tcp server v.1.0 (tcp:9876) | designed by SKY @2019“;
ptr +=””;
ptr +=(String) sayac++;
ptr +=””;
ptr +=”\n”;
ptr +=”</body>\n”;
ptr +=”</html>\n”;
return ptr;
}

*************************************************************************************