#include "BluetoothSerial.h"
#include "DHT.h"
// Configuración sensor DHT11
#define DHTPIN 18
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Pin LED integrado del ESP32
#define LEDPIN 2
// Bluetooth
BluetoothSerial SerialBT;
String device_name = "ESP_32_DobleAA";
const char *pin = "1234";
// Variables de estado
String message = "";
bool led_manual = false;
String estado_led = "MANUAL OFF";
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(LEDPIN, OUTPUT);
// Inicializar Bluetooth
SerialBT.begin(device_name);
// SerialBT.setPin(pin, 4); // PIN deshabilitado para simplificar
Serial.println("ESP32 iniciado");
Serial.println("Dispositivo: " + device_name);
Serial.println("PIN: " + String(pin));
// Parpadear LED para indicar inicio
for(int i = 0; i < 3; i++) {
digitalWrite(LEDPIN, HIGH);
delay(200);
digitalWrite(LEDPIN, LOW);
delay(200);
}
}
void loop() {
// Lectura sensor DHT11
float hum = dht.readHumidity();
float temp = dht.readTemperature();
// Comunicación Bluetooth - comandos LED: "1" = ON, "5" = OFF
if (SerialBT.available()) {
message = SerialBT.readStringUntil('#');
message.trim();
Serial.println("Comando recibido: " + message);
if (message == "1") {
led_manual = true;
digitalWrite(LEDPIN, HIGH);
estado_led = "MANUAL ON";
SerialBT.println("LED encendido");
} else if (message == "5") {
led_manual = true;
digitalWrite(LEDPIN, LOW);
estado_led = "MANUAL OFF";
SerialBT.println("LED apagado");
}
}
// Enviar datos al cliente Bluetooth
if (isnan(hum) || isnan(temp)) {
SerialBT.println("Error leyendo el sensor DHT11");
Serial.println("Error DHT11");
} else {
String data = "Humedad: " + String(hum, 1) +
",Temperatura: " + String(temp, 1) +
",LED: " + estado_led;
SerialBT.println(data);
// También mostrar en monitor serial
Serial.println("T: " + String(temp, 1) + "°C | H: " + String(hum, 1) + "% | LED: " + estado_led);
}
delay(2000); // Enviar datos cada 2 segundos
}