#include <WiFi.h>
#include <HTTPClient.h>
#include "DHTesp.h"
// --- PINES FÍSICOS ---
const int DHT_PIN = 15;
const int PIR_PIN = 13;
const int MQ2_ANALOG = 34;
DHTesp dhtSensor;
// --- RED VIRTUAL DE WOKWI ---
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// --- URL DE TU RECEPTOR (Webhook / Servidor) ---
const String urlDestino = "AQUI_TU_URL_DE_WEBHOOK.SITE";
void setup() {
Serial.begin(115200);
// 1. Inicializar Sensores
dhtSensor.setup(DHT_PIN, DHTesp::DHT11);
pinMode(PIR_PIN, INPUT);
pinMode(MQ2_ANALOG, INPUT);
// 2. Conexión WiFi
Serial.println("\n--- Iniciando Sistema de Monitoreo ---");
Serial.print("Conectando a WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n¡Conectado exitosamente! IP: " + WiFi.localIP().toString());
}
void loop() {
// 1. Leer los sensores
TempAndHumidity data = dhtSensor.getTempAndHumidity();
bool motionDetected = digitalRead(PIR_PIN);
int mq2Raw = analogRead(MQ2_ANALOG);
// 2. Limpieza de datos
float temp = isnan(data.temperature) ? 0.0 : data.temperature;
float hum = isnan(data.humidity) ? 0.0 : data.humidity;
float gasPpm = map(mq2Raw, 0, 4095, 0, 1000);
// 3. Empaquetado JSON
String payload = "{";
payload += "\"temperatura\":" + String(temp, 1) + ",";
payload += "\"humedad\":" + String(hum, 1) + ",";
payload += "\"movimiento\":" + String(motionDetected ? "true" : "false") + ",";
payload += "\"gas_ppm\":" + String(gasPpm, 1);
payload += "}";
Serial.println("Datos leídos: " + payload);
// 4. Envío por Internet (HTTP POST)
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(urlDestino);
// Cabecera para indicar que enviamos JSON
http.addHeader("Content-Type", "application/json");
Serial.println("Enviando paquete...");
int httpResponseCode = http.POST(payload);
if (httpResponseCode > 0) {
Serial.print("¡Éxito! Código del servidor: ");
Serial.println(httpResponseCode); // Un 200 significa que llegó bien
} else {
Serial.print("Error enviando: ");
Serial.println(httpResponseCode);
}
http.end(); // Liberar recursos
} else {
Serial.println("Error: Desconectado del WiFi");
}
// Esperar 5 segundos antes del siguiente envío
Serial.println("-----------------------------------");
delay(5000);
}Sistema de Monitoreo Inteligente
Sensor DHT11 (Modelado con DHT22)
Sensor PIR (Movimiento)
Módulo MQ2 (Humo/Gas)