#include <WiFi.h>
#include <HTTPClient.h>
#include <DHTesp.h>
#include <ESP32Servo.h>
//=======================
// WiFi Wokwi
//=======================
const char* ssid = "Wokwi-GUEST";
const char* password = "";
//=======================
// Webhook Make
//=======================
const char* webhook = "https://hook.us2.make.com/pj308p256gme92ib2f762sgzouji22lq";
//=======================
// Pinos
//=======================
#define LDR_PIN 34
#define PIR_PIN 13
#define DHT_PIN 15
#define BTN1 4
#define BTN2 2
#define LED_LDR 23
#define LED_PIR 22
#define LED_BTN1 21
#define LED_BTN2 19
#define LED_TEMP 18
#define BUZZER 12
#define SERVO_PIN 5
//=======================
Servo porta;
DHTesp dht;
//=======================
void conectarWifi() {
WiFi.begin(ssid, password);
Serial.print("Conectando");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi conectado");
Serial.println(WiFi.localIP());
}
//=======================
void setup() {
Serial.begin(115200);
pinMode(PIR_PIN, INPUT);
pinMode(BTN1, INPUT_PULLUP);
pinMode(BTN2, INPUT_PULLUP);
pinMode(LED_LDR, OUTPUT);
pinMode(LED_PIR, OUTPUT);
pinMode(LED_BTN1, OUTPUT);
pinMode(LED_BTN2, OUTPUT);
pinMode(LED_TEMP, OUTPUT);
pinMode(BUZZER, OUTPUT);
porta.attach(SERVO_PIN);
dht.setup(DHT_PIN, DHTesp::DHT22);
conectarWifi();
}
//=======================
void enviarMake(
int luz,
float temp,
float umidade,
int movimento,
int botao1,
int botao2
){
if(WiFi.status()!=WL_CONNECTED)
return;
HTTPClient http;
http.begin(webhook);
http.addHeader("Content-Type","application/json");
String json="{";
json+="\"temperatura\":"+String(temp,1)+",";
json+="\"umidade\":"+String(umidade,1)+",";
json+="\"ldr\":"+String(luz)+",";
json+="\"pir\":"+String(movimento)+",";
json+="\"botao1\":"+String(botao1)+",";
json+="\"botao2\":"+String(botao2);
json+="}";
int codigo=http.POST(json);
Serial.print("Resposta HTTP: ");
Serial.println(codigo);
http.end();
}
//=======================
void loop() {
int ldr = analogRead(LDR_PIN);
int pir = digitalRead(PIR_PIN);
int b1 = !digitalRead(BTN1);
int b2 = !digitalRead(BTN2);
TempAndHumidity dados = dht.getTempAndHumidity();
//------------------------------------
// LDR
//------------------------------------
if(ldr<2000)
digitalWrite(LED_LDR,HIGH);
else
digitalWrite(LED_LDR,LOW);
//------------------------------------
// PIR
//------------------------------------
if(pir){
digitalWrite(LED_PIR,HIGH);
tone(BUZZER,1000);
}else{
digitalWrite(LED_PIR,LOW);
noTone(BUZZER);
}
//------------------------------------
// Botão 1
//------------------------------------
if(b1){
digitalWrite(LED_BTN1,HIGH);
porta.write(90);
}else{
digitalWrite(LED_BTN1,LOW);
porta.write(0);
}
//------------------------------------
// Botão 2
//------------------------------------
digitalWrite(LED_BTN2,b2);
//------------------------------------
// Temperatura
//------------------------------------
if(dados.temperature>30)
digitalWrite(LED_TEMP,HIGH);
else
digitalWrite(LED_TEMP,LOW);
//------------------------------------
Serial.println("----------------------------");
Serial.print("LDR: ");
Serial.println(ldr);
Serial.print("Temperatura: ");
Serial.println(dados.temperature);
Serial.print("Umidade: ");
Serial.println(dados.humidity);
Serial.print("PIR: ");
Serial.println(pir);
Serial.print("Botão1: ");
Serial.println(b1);
Serial.print("Botão2: ");
Serial.println(b2);
enviarMake(
ldr,
dados.temperature,
dados.humidity,
pir,
b1,
b2
);
delay(5000);
}