//Project By Dani
//Title - Smart Agriculture Monitoring System
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
DHT dht(5, DHT22);
float temperature;
float humidity;
int counter;
LiquidCrystal_I2C lcd(0x27, 20, 4);
int relay1 = 2;
int relay2 = 4;
int relay3 = 15;
String data;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
lcd.print("Project By Dani!");
delay(1500);
lcd.clear();
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
relaycontrol();
htvalues();
rtcstatus();
}
void relaycontrol() {
if (Serial.available() > 0) {
data = Serial.readString();
Serial.println(data);
data.trim();
if (data == "motor1 on") {
digitalWrite(relay1, HIGH);
}
if (data == "motor1 off") {
digitalWrite(relay1, LOW);
}
if (data == "motor2 on") {
digitalWrite(relay2, HIGH);
}
if (data == "motor2 off") {
digitalWrite(relay2, LOW);
}
if (data == "motor3 on") {
digitalWrite(relay3, HIGH);
}
if (data == "motor3 off") {
digitalWrite(relay3, LOW);
}
}
}
void htvalues() {
temperature = dht.readTemperature();
humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.println("Data: " + String(counter));
Serial.print("Temperature (C): ");
Serial.println(temperature);
Serial.print("Temperature (F): ");
Serial.println(dht.readTemperature(true));
Serial.print("Humidity: ");
Serial.println(humidity);
Serial.print("Heat Index (C): ");
Serial.println(dht.computeHeatIndex(temperature, humidity, false));
Serial.print("Heat Index (F): ");
Serial.println(dht.computeHeatIndex(temperature, humidity, true));
Serial.println();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(6, 1);
lcd.print("Hum: ");
lcd.print(humidity);
lcd.print(" %");
counter++;
delay(1000);
}
void rtcstatus() {
DateTime now = rtc.now();
Serial.println(String("DateTime::TIMESTAMP_FULL:\t") + now.timestamp(DateTime::TIMESTAMP_FULL));
Serial.println(String("DateTime::TIMESTAMP_DATE:\t") + now.timestamp(DateTime::TIMESTAMP_DATE));
Serial.println(String("DateTime::TIMESTAMP_TIME:\t") + now.timestamp(DateTime::TIMESTAMP_TIME));
Serial.println();
lcd.setCursor(0, 2);
lcd.print(now.timestamp(DateTime::TIMESTAMP_DATE));
lcd.setCursor(0, 3);
lcd.print(now.timestamp(DateTime::TIMESTAMP_TIME));
delay(500);
}