#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
#include <BH1750.h> //libreria del sensor de lumenes
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
const int DHT_PIN = 13;
// Definir el pin del sensor de humedad del suelo
#define SOIL_SENSOR_PIN 34 // Entrada analógica en ESP32
// creamos las instancias de los sensores
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
BH1750 lightMeter;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// Init
lcd.init();
lcd.backlight();
// inicializamos el sensor de luz
lightMeter.begin();
// NUEVO: Configurar resolución del ADC
analogReadResolution(12); // ESP32 usa 12 bits (0-4095)
}
void loop() {
// put your main code here, to run repeatedly:
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float lux = lightMeter.readLightLevel();
// Leer el sensor de humedad del suelo
int soilRaw = analogRead(SOIL_SENSOR_PIN);
float soilMoisture = map(soilRaw, 0, 4095, 100, 0); // 0V = 100% humedad, 3.3V = 0%
Serial.println("Temp:" + String(data.temperature, 2) + "°C");
Serial.println("Humidity:" + String(data.humidity, 1) + "%");
Serial.println("Lum:" + String(lux) + " lx");
// Mostrar humedad del suelo en el monitor serie**
Serial.println("Soil Moisture:" + String(soilMoisture, 1) + "%");
Serial.println("---");
lcd.setCursor(0, 0);
lcd.print("Temp:" + String(data.temperature,2) + String(char(223)) + "C");
lcd.setCursor(0, 1);
lcd.print("Hum:" + String(data.humidity,1) + "%");
delay(2000); // Alterna cada 2 segundos
lcd.clear(); // Limpia pantalla
lcd.setCursor(0, 0);
lcd.print("Lum:" + String(lux,1) + " lx");
lcd.setCursor(0, 1);
lcd.print("Soil:" + String(soilMoisture, 1) + "%");
delay(2000); // Alterna cada 2 segundos
lcd.clear(); // Limpia pantalla
}
Temperatura ambiente
Humedad relativa
Humedad suelo
Luminosidad