/* 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);
}