Arduino UNO R3 อ่านค่าอุณหภูมิ DHT22 ควบคุม Relay 4 Ch มีจอ LCD1602



 Arduino UNO R3 อ่านค่าอุณหภูมิ DHT22 ควบคุม Relay 4 Ch มีจอ LCD1602 บอกค่า 

(XH-W3001 XH-W3002 W3001 W3002 อุปกรณ์ที่ทำงานคล้ายกัน)

อุปกรณ์ที่จำเป็น

บอร์ด Arduino UNO R3

เซ็นเซอร์ DHT22 Module

Relay 4 Channel หรือ กี่ ch ก็ได้ แต่ให้ปรับโค้ดตามความเหมาะสม

LCD1602 I2C 

สายจัมพ์

แหล่งจ่ายไฟ (ถ้าไม่ใช้จาก Arduino power) usb ต่อคอมพิวเตอร์


วิธีทำ 1.

เชื่อมต่อ DHT22 กับ Arduino  UNO R3

+   ----> +5V  

OUT ----> D2 

-   ----> GND

เชื่อมต่อ LCD1602 I2C กับ Arduino  UNO R3

GND ----> GND

VCC ----> 5V

SDA ----> SDA 

SCL ----> SCL

เชื่อมต่อ  Relay 4 ch กับ Arduino  UNO R3

In1 ----> D4

In2 ----> D5

In3 ----> D6

In4 ----> D7

VCC ----> 5V  

GND ----> GND 


ติดตั้ง ไลบราลี่ใน Arduio IDE 

1.DHT22

Tools->Manage Libraries->DHT เลือก DHT sensor library by Adafruit

2.LiquidCrystal 

ไปที่เมนู Sketch > Include Library > Manage Libraries...

ค้นหา LiquidCrystal I2C และติดตั้ง

//Code 

#include <DHT.h>

#include <Wire.h> 

#include <LiquidCrystal_I2C.h>

#define DHTPIN 2     // Digital pin connected to the DHT sensor

#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

LiquidCrystal_I2C lcd(0x27,16,2);  

DHT dht(DHTPIN, DHTTYPE);


void setup()

{

  dht.begin();  

  lcd.begin(16,2);                      

  lcd.init();                      

  lcd.backlight();

  lcd.clear();  

  lcd.setCursor(0,0);

  lcd.print("Arduino Nano");

  lcd.setCursor(0,1);

  lcd.print("LCD1602 DHT22");

  delay(3000);


  pinMode(LED_BUILTIN, OUTPUT);

//ตั้งค่า พินเลข 4,6,7,8 เป็นเอาท์พุต

  pinMode(4, OUTPUT);

  pinMode(5, OUTPUT);

  pinMode(6, OUTPUT);

  pinMode(7, OUTPUT);

//เปิดจ่ายไฟ ค่าพินเลข 8,9,10,11  เพื่อปิดการทำงานของ Relay

  digitalWrite(4, HIGH);

  digitalWrite(5, HIGH);

  digitalWrite(6, HIGH);

  digitalWrite(7, HIGH);  

}



void loop()

{

  float h = dht.readHumidity();

  // Read temperature as Celsius (the default)

  float t = dht.readTemperature();

  // Read temperature as Fahrenheit (isFahrenheit = true)

  float f = dht.readTemperature(true);


  // Check if any reads failed and exit early (to try again).

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

    Serial.println(F("Failed to read from DHT sensor!"));

    return;

  }


  // Compute heat index in Fahrenheit (the default)

  float hif = dht.computeHeatIndex(f, h);

  // Compute heat index in Celsius (isFahreheit = false)

  float hic = dht.computeHeatIndex(t, h, false);  



  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("Temp:");

  if (t>31.80){

  digitalWrite(4, LOW);  //relay 1 open

  digitalWrite(5, HIGH); //relay 2 close   

  lcd.print(t);

  lcd.print("C [1]");  

  }else{

  digitalWrite(4, HIGH); //relay 1 close

  digitalWrite(5, LOW);  //relay 2open  

  lcd.print(t);

  lcd.print("C [2]");  

  }

  lcd.setCursor(0, 1);  

  lcd.print("Humid:");

  if (h>73.20){

  digitalWrite(6, LOW); //relay 3 open  

  digitalWrite(7, HIGH);//relay 4 close    

  lcd.print(h);

  lcd.print("% [3]");  

  }else{

  digitalWrite(6, HIGH);//relay 3 close

  digitalWrite(7, LOW); //relay 4 open   

  lcd.print(h);  

  lcd.print("% [4]");    

  }

  

  delay(3000);

  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("Heat Index:");

  lcd.setCursor(0, 1);  

  lcd.print(hic);

  lcd.print(" C:");  

  lcd.print(hif);

  lcd.print(" F");  

  delay(3000);

  // R4CH Code

//  digitalWrite(4, LOW);  // turn on LED on (LOW  is the voltage level = Active Low)

//  delay(1000);                     

//  digitalWrite(4, HIGH); // turn the LED off by making the voltage HIGH

              

}


ความคิดเห็น