Real-time Bosbrandbewakingssysteem met SMS-alarmen
Onderdelen en benodigdheden
![]() |
Itead Gboard Pro 800 SIM800 GSM/GPRS Module (ATmega2560) | × | 1 |
![]() |
Arduino UNO | × | 1 |
![]() |
DHT11 Temperatuur & Vochtigheid Sensor (3 pins) | × | 2 |
![]() |
Jumper wires (standaard) | × | 1 |
Apps en online diensten
![]() |
Arduino IDE |
Over dit project
Het detectieproces van een bosbrand start bij een van de knooppunten (nodes) in een boom in het bos. Het bos heeft een netwerk van nodes op geschikte afstanden, die communiceren via RF-modules en Arduino. Als een knooppunt (bron-knooppunt) een verandering boven een drempelwaarde detecteert in atmosferische parameters (temperatuurstijging, rookverontreiniging, etc.), wordt de informatie doorgestuurd naar het dichtstbijzijnde tussenknooppunt, totdat het het hoofdknooppunt/hoofdterminal bereikt. Dit hoofdterminal gebruikt een GSM-modem om de informatie via SMS door te sturen naar het bosbrandbewakingscentrum.
Zenderdeel van het fysieke model
De bosbranddetectiemodule werkt in drie fasen:
- Fase 1 – Sensoren uitlezen: temperatuur, vochtigheid en luchtkwaliteit (rook) worden gemeten en geconverteerd van analoog naar digitaal. De data wordt doorgestuurd naar het volgende knooppunt.
- Fase 2 – Doorsturen: het proces herhaalt zich tot de data het eindknooppunt/hoofdterminal bereikt.
- Fase 3 – Alarm: het hoofdterminal stuurt de informatie via GSM naar het bewakingscentrum.
Elk knooppunt heeft een temperatuur/vochtigheidssensor, een rooksensor en een microcontroller (Arduino). De sensoren communiceren met de Arduino en slaan data op voor vergelijking. Er zijn vooraf gedefinieerde drempelwaarden. De microcontroller vergelijkt de sensorwaarden op vaste intervallen met de drempels. Bij overschrijding stuurt het knooppunt de info door naar het volgende knooppunt, enzovoort.
Fysiek model van het apparaat

Zenderdeel – detail

Seriële monitor uitlezing

Ontvangen SMS-berichten via GSM-module

Code
Ontvanger- en Zenderzijde Arduino Module Codes
Deze code configureert de ontvangende Arduino voor temperatuur/vochtigheidsmonitoring. Als waarden een drempel overschrijden, wordt een SMS verstuurd naar het basestation. Een waardestijging aan de zenderzijde wordt via RF-zender (op zender-Arduino) naar de RF-ontvanger (op ontvanger-Arduino) gecommuniceerd.
Let op: de code bestaat uit twee delen – één voor "Receiver side arduino" en één voor "Transmitter side arduino".
Deel 1: Ontvanger (Receiver) Code
########( PART-1 )###### Receiver Side Arduino CODE ##########################
#include <SoftwareSerial.h>
#include <RH_ASK.h>
#include <SPI.h>
#include <DHT.h>
SoftwareSerial mySerial(4, 3);
// Constanten
#define DHTPIN 2
#define DHTTYPE DHT11
int smokeA0 = A5;
int sensorThres = 400;
// Variabelen
DHT dht(DHTPIN, DHTTYPE);
float hum, temp;
String str_humid, str_temp, str_smk, str_out;
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("Reciever Humidity = "); Serial.print(hum); Serial.print('\n');
Serial.print("Reciever Temperature = "); Serial.println(temp);
int analogSensor = analogRead(smokeA0);
String smk;
if (analogSensor > sensorThres) {
Serial.print("Smoke at Reciever"); Serial.print('\n');
smk = "Smoke";
} else {
Serial.print("Clean at Reciever"); Serial.print('\n');
smk = "Clean";
}
uint8_t buf[20];
uint8_t buflen = sizeof(buf);
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;
}
}
}
Serial.print("Humidity: "); Serial.print(str_humid);
Serial.print(" - Temperature: "); Serial.println(str_temp);
Serial.print(" - Air Quality: "); Serial.println(str_smk);
// Brand gedetecteerd op ontvanger
if (hum >= 60 && temp >= 25) {
Serial.print("Fire Detected at Reciever ");
sendSMS("FIRE ALERT !!", "Fire at Reciever Node", String(temp), String(hum), smk);
}
// Brand gedetecteerd op zender
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, String(str_smk));
}
}
void sendSMS(String alert, String location, String temp, String hum, String air) {
mySerial.println("AT+CMGF=1"); delay(1000);
mySerial.println("AT+CMGS=\"+918744984131\"\r"); delay(1000); // Vervang door je nummer
mySerial.println(alert); Serial.println('\n');
mySerial.println(location); Serial.println('\n');
mySerial.println("Temperature : " + temp); Serial.print('\n');
mySerial.println("Humidity : " + hum); Serial.print('\n');
mySerial.println("Air Quality : " + air);
delay(100);
mySerial.println((char)26); // CTRL+Z
delay(1000);
}
Deel 2: Zender (Transmitter) Code
#######( PART-2 )############ Transmitter Side Arduino Code ############
#include <RH_ASK.h>
#include <SPI.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
int smokeA0 = A5;
int sensorThres = 400;
float hum, temp, smk;
String str_humid, str_temp, str_smk, str_out;
RH_ASK rf_driver;
void setup() {
dht.begin();
pinMode(smokeA0, INPUT);
rf_driver.init();
}
void loop() {
delay(2000);
hum = dht.readHumidity();
temp = dht.readTemperature();
Serial.print(hum); Serial.print(temp);
int analogSensor = analogRead(smokeA0);
if (analogSensor > sensorThres) str_smk = "1"; else str_smk = "0";
if (str_smk == "1") str_out = str_humid + "," + str_temp + "," + "Smoke";
if (str_smk == "0") str_out = str_humid + "," + str_temp + "," + "Clean";
const char *msg = str_out.c_str();
rf_driver.send((uint8_t *)msg, strlen(msg));
rf_driver.waitPacketSent();
}
Schema's
Productieproces
- Accurate temperatuurbewaking in een serverkast met Raspberry Pi
- Een Snel, Betrouwbare Brandsdetectiesysteem Bouwen met Samsung SAMIIO, Arduino UNO & Raspberry Pi
- Slim Hotel- & Thuismonitoringssysteem met Cloud-gebaseerde Geautomatiseerde Besturing
- Betrouwbaar Arduino RFID Aanwezigheidssysteem Aangedreven door Python
- Arduino Uno Gebaseerde Mensendetectie Robot: Stap-voor-stap Sensorintegratie
- K30 CO2-sensor: Real-time binnenluchtkwaliteitmonitoring met Arduino
- Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
- SERENA: Een Aangepast Arduino Mega 2560 Alarmsysteem Met TFT LCD Touchscreen
- Arduino-gestuurd automatische plantenwateringssysteem
- Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
- Geavanceerd AI-aangedreven IoT-systeem voor vroege bosbranddetectie & boomgezondheidsmonitoring




