// 1. INSIRA AQUI NO TOPO AS SUAS 3 LINHAS SECRETAS DO BLYNK (Copie da tela do seu computador)
#define BLYNK_TEMPLATE_ID "TMPL351658"
#define BLYNK_TEMPLATE_NAME "Casa Inteligente"
#define BLYNK_AUTH_TOKEN "e0zmeiknWEjf_L_8UgJjFFLbXQuVxRAS"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Configuração da rede Wi-Fi virtual do Wokwi
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Definição dos pinos das Lâmpadas (Relés)
const int rele1 = 23;
const int rele2 = 22;
const int rele3 = 21;
const int rele4 = 19;
// Sensor Central no pino 13
const int pirCentral = 13;
// Variáveis de tempo para o sensor (10 segundos)
unsigned long tempoAceso = 10000;
unsigned long tempoParaDesligar = 0;
bool acesoPorSensor = false;
// Comando que vem do BOTÃO V1 do aplicativo do celular
BLYNK_WRITE(V1) {
int botaoStatus = param.asInt(); // Recebe 1 (ligar) ou 0 (desligar)
// Liga ou desliga todas as lâmpadas direto pelo aplicativo
digitalWrite(rele1, botaoStatus);
digitalWrite(rele2, botaoStatus);
digitalWrite(rele3, botaoStatus);
digitalWrite(rele4, botaoStatus);
}
void setup() {
Serial.begin(115200);
// Configura os pinos
pinMode(rele1, OUTPUT); pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT); pinMode(rele4, OUTPUT);
pinMode(pirCentral, INPUT);
// Inicia a conexão Wi-Fi e Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run(); // Mantém o aplicativo sincronizado com o ESP32
unsigned long tempoAtual = millis();
// SE O SENSOR CENTRAL DETECTAR MOVIMENTO
if (digitalRead(pirCentral) == HIGH) {
// Liga todas as lâmpadas
digitalWrite(rele1, HIGH);
digitalWrite(rele2, HIGH);
digitalWrite(rele3, HIGH);
digitalWrite(rele4, HIGH);
// Atualiza o botão no aplicativo para "LIGADO" (Aviso visual no celular)
Blynk.virtualWrite(V1, 1);
// Programa o tempo para desligar
tempoParaDesligar = tempoAtual + tempoAceso;
acesoPorSensor = true;
}
// SE O TEMPO DO SENSOR ACABOU (E não foi ligado manualmente pelo app)
else if (acesoPorSensor && (tempoAtual >= tempoParaDesligar)) {
// Desliga todas as lâmpadas juntas
digitalWrite(rele1, LOW);
digitalWrite(rele2, LOW);
digitalWrite(rele3, LOW);
digitalWrite(rele4, LOW);
// Atualiza o botão no aplicativo para "DESLIGADO"
Blynk.virtualWrite(V1, 0);
acesoPorSensor = false;
}
}