Menü

SICAKLIK KONTROLLÜ AKILLI ROLE

8 Aralık 2017 - Arduino
4.6 (92.73%) 11 votes

Projemizin temel amacı ortamın ısı ve nemini ölçüp ekranda göstermektir.Wifi modülü aracılığıyla da internet sitesine aktarılıp grafikle gösterilmesidir.Sıcaklık değeri 30 derece altında iken röle 1 yani ısıtıcı,sıcaklık değeri 30 derece üstünde iken röle 2 yani soğutucu aktif hale gelir ve sıcaklık 30 derecede sabitlenir.

Projede kullanılan malzemeler

1.Arduino Uno

2.DHT11 ısı ve nem sensörü

3.ESP8266 Wifi modülü

4.Nokia LCD 5110 ekran

5.5V’luk ikili röle

6.3.3 Voltluk Voltaj regülatörü

Kullandıgımız bağlantılar:

-5110 LCD Ekran için bağlantılar-

Arduino      5110 LCD

8.pin                 CLK

9.pin                 DIN

10.pin               DC

11.pin               RST

12.pin               CE

3.3V                 VCC,BL

GND                GND

-DHT11 için bağlantılar-

Arduino       DHT11

5V                   VCC

GND               GND

4.pin               DATA

-ESP8266 için bağlantılar-

Arduino         ESP8266

2.pin             TX

3.pin             RX

-Esp’nin VCC ve CH_PD pinleri 3.3 volt regülatörün pozitif yoluna. GND bacağı ise negatif yoluna bağlandı.

-2 Kanal 5 Volt röle-

Arduino      Röle

5V               VCC

GND            GND

5.pin            röle1

6.pin            röle2

İlk olarak kullanacağımız sensörlerin kütüphanelerini belirledik. Kullandığımız wifi modülü olan Esp8266’nın yazılım güncellemesi yapıldı.Kullandığımız kütüphaneler:

-Pcd8544 Lcd kütüphanesi

-Dht11 kütüphanesi

-Esp8266 kütüphanesi

-Thingspeak kütüphanesi

 

-Kullandığımız kodlar-

 

#include <SoftwareSerial.h>

SoftwareSerial espSerial =  SoftwareSerial(2,3);

#include <SPI.h>

#include <PCD8544.h>

static PCD8544 lcd = PCD8544(8, 9, 10, 11, 12);

int isitici=5;

int sogutucu=6;

#include <DHT.h>

#define DHTPIN 4

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

String apiKey = “6PA5O1G1A5MOYZZG”;

String ssid=”a”;

String password =”aaaaaaaa”;

boolean DEBUG=true;

//======================================================================== showResponce

void showResponse(int waitTime){

long t=millis();

char c;

while (t+waitTime>millis()){

if (espSerial.available()){

c=espSerial.read();

if (DEBUG) Serial.print(c);

}

}

}

//========================================================================

boolean thingSpeakWrite(float value1, float value2){

String cmd = “AT+CIPSTART=\”TCP\”,\””;

cmd += “184.106.153.149”;

cmd += “\”,80″;

espSerial.println(cmd);

if (DEBUG) Serial.println(cmd);

if(espSerial.find(“Error”)){

if (DEBUG) Serial.println(“AT+CIPSTART error”);

return false;

}

String getStr = “GET /update?api_key=”;

getStr += apiKey;

getStr +=”&field1=”;

getStr += String(value1);

getStr +=”&field2=”;

getStr += String(value2);

getStr += “\r\n\r\n”;

cmd = “AT+CIPSEND=”;

cmd += String(getStr.length());

espSerial.println(cmd);

if (DEBUG)  Serial.println(cmd);

delay(100);

if(espSerial.find(“>”)){

espSerial.print(getStr);

if (DEBUG)  Serial.print(getStr);

}

else{

espSerial.println(“AT+CIPCLOSE”);

if (DEBUG)   Serial.println(“AT+CIPCLOSE”);

return false;

}

return true;

}

//================================================================================ setup

void setup() {

DEBUG=true;

Serial.begin(9600);

lcd.begin(84, 48);

dht.begin();

lcd.setCursor(10,0);

lcd.print(“Sicaklik: “);

lcd.setCursor(10,3);

lcd.print(“Nem:”);

lcd.setContrast(50);

espSerial.begin(115200);

pinMode(isitici, OUTPUT);

pinMode(sogutucu,OUTPUT);

espSerial.println(“AT+CWMODE=1”);

showResponse(1000);

 

espSerial.println(“AT+CWJAP=\””+ssid+”\”,\””+password+”\””);

showResponse(5000);

if (DEBUG)  Serial.println(“Setup completed”);

}

// ====================================================================== loop

void loop() {

float t = dht.readTemperature();

float h = dht.readHumidity();

if (isnan(t) || isnan(h)) {

if (DEBUG) Serial.println(“Failed to read from DHT”);

}

else {

if (DEBUG)  Serial.println(“Temp=”+String(t)+” *C”);

if (DEBUG) Serial.println(“Humidity=”+String(h)+” %”);

thingSpeakWrite(t,h);

}

 

lcd.setCursor(21,1);

lcd.print(t);

lcd.print(” C”);

Serial.print(“Sicaklik: “); Serial.println(t);

lcd.setCursor(21,4);

lcd.print(h);

lcd.print(” %”);

Serial.print(“Nem: “); Serial.println(h);

if(t>=30){

digitalWrite(sogutucu, HIGH);

digitalWrite(isitici, LOW);

}

if(t<30){

digitalWrite(isitici, HIGH);

digitalWrite(sogutucu, LOW);

}

delay(20000);  }

ayrıca devremizi baskı devreye de aktardık.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Araç çubuğuna atla