#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "TempHumidNN.h" // Important: Include the TensorFlow Lite model
// DHT Sensor
const int DHT_PIN = 15;
// LCD
const int LCD_SDA = 13;
const int LCD_SCL = 14;
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// Initialize the LCD
Wire.begin(LCD_SDA, LCD_SCL);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Temperature: ");
// Initialize the TensorFlow Lite model
while (!tempHumidNN.begin()) {
Serial.print("Error in NN initialization: ");
Serial.println(tempHumidNN.getErrorMessage());
delay(1000);
}
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
// Print temperature and humidity to Serial Monitor
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
// Display temperature and humidity on the first line of the LCD
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(data.temperature, 1);
lcd.print("C H:");
lcd.print(data.humidity, 0);
lcd.print("%");
// Predict using the TensorFlow Lite model
float input[2] = {data.temperature, data.humidity};
int prediction = tempHumidNN.predict(input);
// Display the prediction on the LCD
lcd.setCursor(0, 1);
lcd.print(prediction == 0 ? "Normal" : "Extreme");
Serial.println("Prediction: " + String(prediction));
Serial.println("---");
delay(2000);
}