/* Fill-in information from Blynk Device Info here */
#define BLYNK_TEMPLATE_ID "TMPL60rx9g_LH"
#define BLYNK_TEMPLATE_NAME "SmartHome"
#define BLYNK_AUTH_TOKEN "1OvMIRhZfZpeY2gpkS5WvtSlpGAKhssy"
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 4);
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Wokwi-GUEST"; // Nhập SSID của router wifi của bạn
char pass[] = ""; // Nhập mật khẩu wifi của bạn
// Chân kết nối với các đèn và quạt
int ledPins[] = {13, 12, 14, 27, 26}; // Chân GPIO của các đèn
int widget[] = {V0, V1, V2, V3, V4, V5, V6, V7, V8};
boolean devices[]= {0, 0, 0, 0, 0,};
int btns[] = {15, 4, 5, 18, 23};
int len_ledPins = sizeof(ledPins) / sizeof(ledPins[0]);
void setup()
{
// Debug console
Serial.begin(115200);
Serial.println(len_ledPins);
for (int i = 0; i < len_ledPins; i++) {
pinMode(ledPins[i], OUTPUT);
pinMode(btns[i], INPUT_PULLUP);
Serial.println(i);
Serial.println(ledPins[i]);
digitalWrite(ledPins[i], LOW);
}
lcd.init();
lcd.backlight();
lcd.setCursor(4,0);
lcd.print("ANH YEU EM");
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
Serial.println("Blynk run");
lcd.clear();
}
void loop()
{
Blynk.run();
btn_device();
update_sensor();
}
void btn_device(){
for(int btn = 0;btn < len_ledPins;btn++){
if(digitalRead(btns[btn])==0){
delay(200);
if(digitalRead(btns[btn])==0){
devices[btn] = !devices[btn];
digitalWrite(ledPins[btn], !digitalRead(ledPins[btn]));
Blynk.virtualWrite(widget[btn], devices[btn]);
Serial.println(String(btns[btn]) + ": " + String(devices[btn]));
}
}
}
}
BLYNK_WRITE(V0) {
int pinValue = param.asInt();
digitalWrite(ledPins[0], pinValue);
Serial.println(pinValue);
}
BLYNK_WRITE(V1) {
int pinValue = param.asInt();
digitalWrite(ledPins[1], pinValue);
Serial.println(pinValue);
}
BLYNK_WRITE(V2) {
int pinValue = param.asInt();
digitalWrite(ledPins[2], pinValue);
Serial.println(pinValue);
}
BLYNK_WRITE(V3) {
int pinValue = param.asInt();
digitalWrite(ledPins[3], pinValue);
Serial.println(pinValue);
}
BLYNK_WRITE(V4) {
int pinValue = param.asInt();
digitalWrite(ledPins[4], pinValue);
Serial.println(pinValue);
}
void update_sensor(){
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("tidak bisa membaca sensor suhu!!");
return;
}
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
lcd.setCursor(0,0);
lcd.print("NHIET DO: " + String(t)+ "C ");
lcd.setCursor(0,1);
lcd.print("DO AM: " + String(h)+ "% ");
Serial.print("Temperature : " );
Serial.print(t);
Serial.print(" Humidity : ");
Serial.println(h);
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND
relay1:VCC
relay1:GND
relay1:IN
relay1:NC
relay1:COM
relay1:NO
relay2:VCC
relay2:GND
relay2:IN
relay2:NC
relay2:COM
relay2:NO
relay3:VCC
relay3:GND
relay3:IN
relay3:NC
relay3:COM
relay3:NO
relay4:VCC
relay4:GND
relay4:IN
relay4:NC
relay4:COM
relay4:NO
lcd2:GND
lcd2:VCC
lcd2:SDA
lcd2:SCL
relay5:VCC
relay5:GND
relay5:IN
relay5:NC
relay5:COM
relay5:NO
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
btn4:1.l
btn4:2.l
btn4:1.r
btn4:2.r
btn5:1.l
btn5:2.l
btn5:1.r
btn5:2.r