Untitled
unknown
plain_text
15 days ago
4.3 kB
3
Indexable
#include <SoftwareSerial.h> #include <DHT.h> // Pin Definitions #define DHT_PIN 2 #define MQ2_PIN A0 #define KY026_PIN 3 #define RELAY_PIN 4 #define BUTTON_PIN 5 #define GREEN_LED 8 // SMD Strip 1 - Green #define RED_LED 9 // SMD Strip 1 - Red #define BLUE_LED 10 // SMD Strip 1 - Blue #define GREEN_LED2 11 // SMD Strip 2 - Green #define RED_LED2 12 // SMD Strip 2 - Red #define BLUE_LED2 13 // SMD Strip 2 - Blue #define DHT_TYPE DHT22 // SIM900 setup SoftwareSerial sim900(6, 7); char phoneNumber[] = "+639214928895"; DHT dht(DHT_PIN, DHT_TYPE); bool alarmTriggered = false; void setup() { Serial.begin(9600); sim900.begin(9600); dht.begin(); pinMode(MQ2_PIN, INPUT); pinMode(KY026_PIN, INPUT); pinMode(RELAY_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); // Initialize LED pins pinMode(GREEN_LED, OUTPUT); pinMode(RED_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT); pinMode(GREEN_LED2, OUTPUT); pinMode(RED_LED2, OUTPUT); pinMode(BLUE_LED2, OUTPUT); turnOffLEDs(); Serial.println("Waiting 10 seconds for SIM900A to connect..."); delay(10000); if (sendATCommand("AT", "OK")) { Serial.println("GSM Initialized Successfully"); } else { Serial.println("Failed to Initialize GSM"); } sendATCommand("AT+CMGF=1", "OK"); Serial.println("Fire Alarm System Ready"); } void loop() { if (alarmTriggered) { if (digitalRead(BUTTON_PIN) == LOW) { Serial.println("Resetting system..."); for (int i = 0; i < 3; i++) { lightAll(GREEN_LED); delay(500); lightAll(RED_LED); delay(500); lightAll(BLUE_LED); delay(500); turnOffLEDs(); } digitalWrite(RELAY_PIN, LOW); turnOffLEDs(); alarmTriggered = false; delay(1000); } return; } float temperature = dht.readTemperature(); int smokeValue = analogRead(MQ2_PIN); int flameDetected = digitalRead(KY026_PIN); Serial.print("Temp: "); Serial.println(temperature); Serial.print("Smoke: "); Serial.println(smokeValue); Serial.print("Flame: "); Serial.println(flameDetected); if (temperature >= 60) { triggerAlarm(GREEN_LED, "Temperature Triggered"); } else if (smokeValue >= 700) { triggerAlarm(RED_LED, "Smoke Triggered"); } else if (flameDetected == HIGH) { triggerAlarm(BLUE_LED, "Flame Triggered"); } delay(2000); } void triggerAlarm(int ledPin, String message) { Serial.println("Alarm Triggered!"); digitalWrite(RELAY_PIN, HIGH); turnOffLEDs(); lightAll(ledPin); String fullMsg = message + " - Temp: " + String(dht.readTemperature()) + ", Smoke: " + String(analogRead(MQ2_PIN)) + ", Flame: " + (digitalRead(KY026_PIN) == HIGH ? "Yes" : "No"); sendSMS(fullMsg); delay(5000); makeCall(); alarmTriggered = true; } void lightAll(int baseLedPin) { digitalWrite(baseLedPin, HIGH); if (baseLedPin == GREEN_LED) { digitalWrite(GREEN_LED2, HIGH); } else if (baseLedPin == RED_LED) { digitalWrite(RED_LED2, HIGH); } else if (baseLedPin == BLUE_LED) { digitalWrite(BLUE_LED2, HIGH); } } void turnOffLEDs() { digitalWrite(RED_LED, LOW); digitalWrite(GREEN_LED, LOW); digitalWrite(BLUE_LED, LOW); digitalWrite(RED_LED2, LOW); digitalWrite(GREEN_LED2, LOW); digitalWrite(BLUE_LED2, LOW); } void sendSMS(String message) { Serial.println("Sending SMS..."); sim900.println("AT+CMGS=\"" + String(phoneNumber) + "\""); delay(1000); sim900.print(message); delay(500); sim900.write(26); // CTRL+Z delay(3000); Serial.println("SMS Sent"); } void makeCall() { Serial.println("Calling " + String(phoneNumber)); sim900.println("ATD" + String(phoneNumber) + ";"); delay(20000); sim900.println("ATH"); delay(2000); Serial.println("Call Ended"); } bool sendATCommand(String cmd, String expectedResponse) { sim900.println(cmd); delay(1000); while (sim900.available()) { String response = sim900.readString(); Serial.println(response); if (response.indexOf(expectedResponse) != -1) return true; } return false; }
Editor is loading...
Leave a Comment