Pump 07
Pump 07
h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define SIM_RX 3
#define SIM_TX 2
#define PUMP_PIN 8
#define MOISTURE_SENSOR A0
#define DHTPIN A1
#define DHTTYPE DHT11
void setup() {
Serial.begin(9600);
sim800l.begin(9600);
dht.begin();
delay(2000);
lcd.begin(16, 2);
lcd.backlight();
pinMode(PUMP_PIN, OUTPUT);
digitalWrite(PUMP_PIN, HIGH);
sim800l.println("ATS0=0");
delay(500);
Serial.println("Testing SIM800L...");
sim800l.println("AT");
}
void loop() {
checkForCall();
checkForSMS();
displaySensorData();
}
void checkForCall() {
if (sim800l.available()) {
String callData = sim800l.readString();
Serial.println("SIM800L Data: " + callData);
if (callData.indexOf("RING") >= 0) {
delay(1000);
sim800l.println("ATH");
delay(500);
togglePump();
}
}
}
void checkForSMS() {
if (sim800l.available()) {
String smsData = sim800l.readString();
Serial.println("Received SMS: " + smsData);
if (smsData.indexOf("status") >= 0) {
sendSystemStatus();
}
}
}
void togglePump() {
pumpStatus = !pumpStatus;
digitalWrite(PUMP_PIN, pumpStatus ? LOW : HIGH);
sendSystemStatus();
}
void displaySensorData() {
int moisture = map(analogRead(MOISTURE_SENSOR), 1023, 0, 0, 100);
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Moist:" + String(moisture) + "% ");
lcd.setCursor(0, 1);
lcd.print("T:" + String(temp) + "C H:" + String(humidity) + "% ");
delay(2000);
}
void sendSystemStatus() {
int moisture = map(analogRead(MOISTURE_SENSOR), 1023, 0, 0, 100);
float temp = dht.readTemperature();
float humidity = dht.readHumidity();