#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
#define LED_PIN 26 // khai báo chân pin cho đèn LED
#define dht_pin 27 //khai bao chân pin của dht
#define pir_sensor 25 // khai báo chân pin của pir
DHTesp dhtSensor; // khởi tạo biến dhtsensor
LiquidCrystal_I2C lcd(0x27,20,4); // khai báo định dạng của màn hình LED
// thiết lập thông số hệ thống
void setup() {
// khai báo chân pin cho đèn LED và PIR sensor
pinMode(LED_PIN, OUTPUT);
pinMode(pir_sensor, INPUT);
//
Serial.begin(9600);
Serial.print("Khởi tạo kết nối dữ liệu cảm biến !!");
lcd.init(); // khới tạo biến LCD
// xuất giá trị lên LCD
lcd.backlight();
lcd.setCursor(1,0); // khởi tạo vị trí con trỏ trên màn hình LCD
lcd.print("ESP lay du lieu !!"); // in dòng chữ bắt đầu từ vị trí con trỏ
delay(1000); // delay 1s
// khai bao dht
dhtSensor.setup(dht_pin, DHTesp::DHT22); // khai báo cảm biến với chân pin đã nêu.
}
void loop() {
// lấy thông tin từ cảm biến DHT22
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temp = data.temperature;
float humid = data.humidity;
String stemp = String(temp) + (char)223+ "C"; // chuyển dữ liệu sang dạng string
String shumid = String(humid) + "%"; // chuyển dữ liệu sang dạng string
// hiển thị giá trị ra màn hình LCD
lcd.clear(); // xóa màn hình
lcd.setCursor(0,0); // con trỏ lcd trở về đầu tiên
lcd.print("Temp: "+stemp);
lcd.setCursor(0,1);
lcd.print("Humid: "+ shumid);
delay(2000); // delay 2s
// đoạn lệnh xử lý tín hiệu từ sensor
int pir_value = digitalRead(pir_sensor);
if(pir_value == 1){
Serial.println("Phát hiện chuyển động !!");
digitalWrite(LED_PIN, HIGH); // Bật đèn led
delay(100);
}
else{
//Serial.println("Không có chuyển động.");
digitalWrite(LED_PIN, LOW); // tắt đèn led
delay(100);
}
}