Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm

Komponenten und Zubehör

Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm
Itead Gboard Pro 800 SIM800 GSM/GPRS Modul 3.3V ATmega2560 Mainboard für Arduino Starter
× 1
Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm
Arduino UNO
× 1
Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm
DHT11 Temperatur- & Feuchtigkeitssensor (3 Pins)
× 2
Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm
Jumper Wires (universell)
× 1

Apps und Online-Dienste

Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm
Arduino IDE

Über dieses Projekt

Der Prozess der Waldbranderkennung beginnt an beliebigen Knoten, die auf Bäumen im Wald platziert sind. Der Wald verfügt über ein Netzwerk von Knoten in geeigneten Abständen zueinander. Die Knoten können über Funkmodule (in unserem Fall RF-Modul) und Arduino kommunizieren. Wird an einem Knoten (Quellknoten) eine Änderung der atmosphärischen Parameter (Temperaturanstieg, Luftverunreinigung durch Rauch etc.) über einem Schwellenwert festgestellt, wird die Information an den nächstgelegenen Zwischenknoten weitergeleitet, bis sie das Haupt-/Zentralterminal erreicht. Das Hauptterminal nutzt ein GSM-Modem, um die Information an ein Mobiltelefon (die Waldbrand-Überwachungszentrale) zu senden.

Sender-Teil des physikalischen Modells

Das Waldbrand-Erkennungsmodul arbeitet in drei verschiedenen Stufen. Die erste Stufe besteht darin, externe Umgebungsparameter wie Temperatur und Rauch auszulesen. Dies geschieht mithilfe von Sensoren, die analoge Daten in digitale umwandeln. Die Sensoren lesen Parameter wie Temperatur, Luftfeuchtigkeit und Luftqualität und senden diese Information an den nächstgelegenen Knoten. Dieser Prozess wiederholt sich, bis die Information den finalen Knoten oder das Hauptterminal erreicht – die zweite Stufe des Gesamtprozesses. Die dritte Stufe besteht in der Übertragung der Information an die Waldbrand-Überwachungseinheit.

Jeder Knoten verfügt über einen Temperatur- und Feuchtigkeitssensor, einen Rauchsensor und eine Mikrocontrollereinheit. Arduino dient als Mikrocontroller. Die Sensoren interagieren mit dem Arduino und speichern die Information für den Vergleichsprozess. Es gibt für jeden Parameter einen vordefinierten Schwellenwert. Der Mikroprozessor vergleicht die Sensorwerte in regelmäßigen Zeitintervallen mit den Schwellenwerten. Übersteigen die Eingangswerte der Sensoren den Schwellenwert, sendet der Knoten die Information an den nächsten nahen Knoten, der sie wiederum an den nächsten weiterleitet. So wird der Nachrichtenfluss in diesem Modell geregelt.

Physikalisches Modell des Apparats

Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm

Sender-Teil des physikalischen Modells (Detail)

Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm

Serielle Ausgabe im Serial Monitor

Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm

Vom GSM-Modul empfangene Nachrichten

Echtzeit-Waldbrand-Überwachungssystem mit SMS-Alarm

Code

Empfänger- und Sender-Seite Arduino Modul Codes C++

Dieser Code konfiguriert die Empfänger-Seite des Arduino-Moduls für Temperatur- und Feuchtigkeitsüberwachung. Überschreiten die Werte einen Schwellenwert, wird eine SMS an die Basisstation gesendet. Steigt ein Wert auf der Sender-Seite, wird dies per RF-Sender-Modul am Sender-Arduino Uno an das RF-Empfänger-Modul am Empfänger-Arduino Uno kommuniziert. Hinweis: Der Code besteht aus zwei Teilen – einer für „Receiver side arduino“ und einer für „Transmitter side arduino“.

########( PART-1 )###### Receiver Side Arduino CODE ##########################
// RadioHead Amplitude Shift Keying Library einbinden
#include <SoftwareSerial.h>
#include <RH_ASK.h>
// Abhängige SPI Library einbinden
#include <SPI.h>
#include <DHT.h>

SoftwareSerial mySerial(4, 3); // RX, TX für GSM

// Konstanten
#define DHTPIN 2        // Pin für DHT-Sensor
#define DHTTYPE DHT11   // DHT11
int smokeA0 = A5;       // Rauch-Sensor Pin
int sensorThres = 400;  // Schwellenwert

// Variablen
DHT dht(DHTPIN, DHTTYPE); // DHT-Sensor initialisieren

float hum;   // Speichert Luftfeuchtigkeit
float temp;  // Speichert Temperatur

// Ausgabestrings
String str_humid;
String str_temp;
String str_smk;
String str_out;

// ASK-Objekt erstellen
RH_ASK rf_driver;

void setup() {
  pinMode(smokeA0, INPUT);
  dht.begin();
  rf_driver.init();
  Serial.begin(9600);
  mySerial.begin(115200);
}

void loop() {
  delay(2000);
  hum = dht.readHumidity();
  temp = dht.readTemperature();
  
  Serial.print("Receiver Humidity = ");
  Serial.print(hum);
  Serial.print('\n');
  Serial.print("Receiver Temperature = ");
  Serial.println(temp);
  
  int analogSensor = analogRead(smokeA0);
  String smk;
  
  // Prüfen ob Schwellenwert erreicht
  if (analogSensor > sensorThres) {
    Serial.print("Smoke at Receiver");
    Serial.print('\n');
    smk = "Smoke";
  } else {
    Serial.print("Clean at Receiver");
    Serial.print('\n');
    smk = "Clean";
  }
  
  // Buffer für erwartete Nachricht
  uint8_t buf[20];
  uint8_t buflen = sizeof(buf);
  
  // Prüfen ob empfangenes Paket korrekte Größe hat
  if (rf_driver.recv(buf, &buflen)) {
    str_out = String((char*)buf);
    for (int i = 0; i < str_out.length(); i++) {
      if (str_out.substring(i, i+1) == ",") {
        str_humid = str_out.substring(0, i);
        str_temp = str_out.substring(i+1, i+6);
        str_smk = str_out.substring(i+7, i+12);
        break;
      }
    }
  }
  
  // Werte im Serial Monitor ausgeben
  Serial.print("Humidity: ");
  Serial.print(str_humid);
  Serial.print(" - Temperature: ");
  Serial.println(str_temp);
  Serial.print(" - Air Quality: ");
  Serial.println(str_smk);
  
  // Brand am Empfänger-Knoten erkennen
  if (hum >= 60 && temp >= 25) {
    Serial.print("Fire Detected at Receiver ");
    sendSMS("FIRE ALERT !!", "Fire at Receiver Node", String(temp), String(hum), smk);
  }
  
  // Brand am Sender-Knoten erkennen
  if (str_humid.toInt() >= 60 && str_temp.toInt() >= 25) {
    Serial.print("Fire Detected at Transmitter ");
    sendSMS("FIRE ALERT !!", "Fire at Transmitter Node", str_temp, str_humid, str_smk);
  }
}

// Hilfsfunktion für SMS-Versand
void sendSMS(String alert, String location, String tempVal, String humVal, String airQuality) {
  mySerial.println("AT+CMGF=1"); // GSM Modul in Text-Modus
  delay(1000);
  mySerial.println("AT+CMGS=\"+918744984131\"\r"); // Handynummer ersetzen!
  delay(1000);
  mySerial.println(alert);
  Serial.println('\n');
  mySerial.println(location);
  Serial.println('\n');
  mySerial.println("Temperature : " + tempVal);
  Serial.print('\n');
  mySerial.println("Humidity : " + humVal);
  Serial.print('\n');
  mySerial.println("Air Quality : " + airQuality);
  delay(100);
  mySerial.println((char)26); // ASCII Code für CTRL+Z
  delay(1000);
}

#######( PART-2 )############ Transmitter Side Arduino Code ############
############################################################################
#include <RH_ASK.h>
#include <SPI.h>
#include <DHT.h>

// Konstanten
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

int smokeA0 = A5;
int sensorThres = 400;

// Variablen
float hum;
float temp;
float smk;

// Ausgabestrings
String str_humid;
String str_temp;
String str_smk;
String str_out;

RH_ASK rf_driver;

void setup() {
  dht.begin();
  pinMode(smokeA0, INPUT);
  rf_driver.init();
}

void loop() {
  delay(2000); // DHT-11 Stabilisierung
  
  hum = dht.readHumidity();
  temp = dht.readTemperature();
  
  // In Strings umwandeln
  str_humid = String(hum);
  Serial.print(hum);
  str_temp = String(temp);
  Serial.print(temp);
  
  int analogSensor = analogRead(smokeA0);
  
  if (analogSensor > sensorThres) {
    str_smk = "1";
  } else {
    str_smk = "0";
  }
  
  // Luftfeuchtigkeit und Temperatur kombinieren
  if (str_smk == "1") {
    str_out = str_humid + "," + str_temp + "," + "Smoke";
  }
  if (str_smk == "0") {
    str_out = str_humid + "," + str_temp + "," + "Clean";
  }
  
  // Output-Zeichenkette komponieren
  const char *msg = str_out.c_str();
  rf_driver.send((uint8_t *)msg, strlen(msg));
  rf_driver.waitPacketSent();
}

Herstellungsprozess

  1. Präzise Temperaturüberwachung im Server-Schrank mit Raspberry Pi
  2. Schnelles, zuverlässiges Branderkennungssystem mit Samsung SAMI, Arduino UNO & Raspberry Pi
  3. Smart Hotel & Home Monitoring: Cloud-basierte Automatisierung und Überwachung
  4. RFID-Anwesenheitssystem mit Arduino & Python – Daten direkt in phpMyAdmin (XAMPP) speichern
  5. Arduino-Uno-Roboter zur Personenerkennung – Sensorintegration Schritt für Schritt
  6. K30 CO₂-Sensor: Echtzeit-Luftqualitätsmessung mit Arduino
  7. Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
  8. SERENA: Eigenes Arduino Mega 2560 Alarmsystem mit TFT-LCD-Touchscreen
  9. Automatische Pflanzenbewässerung mit Arduino – Sorgenfrei in den Urlaub
  10. Fortschrittliches KI-gestütztes IoT-System für frühzeitige Waldbranderkennung & Baumgesundheitsmonitoring