亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

森林火灾监测和探测系统(带短信警报)

组件和用品

Itead Gboard Pro 800 SIM800 GSM / GPRS 模块 3.3v ATmega2560 主板对于 Arduino Starter
× 1
Arduino UNO
× 1
DHT11 温湿度传感器(3 针)
× 2
跳线(通用)
× 1

应用和在线服务

Arduino IDE

关于这个项目

检测森林火灾的过程从种植在森林内一棵树上的任何节点开始。森林有一个节点网络,这些节点彼此相距合适,节点能够通过设备(在我们的例子中为 RF 模块)和使用 Arduino 进行通信。如果在节点(源节点)附近的大气参数(温升、空气被烟雾污染等)中发现任何高于阈值的变化,则信息将传递到最近的中间节点,直到它到达主节点/头终端。主/头终端使用GSM调制解调器将信息传递给手机(森林火灾监测中心)。

物理模型的发射器部分

森林火灾探测模块在三个不同的阶段工作。第一阶段包括读取一些外部环境参数,如温度和烟雾。第一阶段是在一些传感器的帮助下完成的,这些传感器用于感测模拟数据并将其转换为数字数据。传感器读取温度、湿度和空气质量等参数,然后将此信息发送到下一个最近的节点。这个过程一直持续到信息到达最终节点或主终端,这是整个过程的第二阶段。第三阶段包括将信息传输到森林火灾监测单元。

每个节点有一个温湿度传感器、一个烟雾传感器和一个微控制器单元。 Arduino 已被用作微控制器设备。传感器与 Arduino 交互并存储用于比较过程的信息。这些参数中的每一个都有一个预定义的阈值。微处理器定期将传感器值与阈值进行比较。根据比较,如果传感器的输入值超过阈值,则节点将信息传输到下一个附近节点,该节点又将信息传输到另一个附近节点。通过这种方式,该模型对消息流进行了调节。

装置的物理模型

物理模型的发射器部分

串行监视器中的串行读取

GSM 模块收到的信息

代码

  • 接收器和发送器端 Arduino 模块代码
接收器和发射器侧 Arduino 模块代码Python
此代码配置接收端 Arduino 模块以进行温度和湿度监控,如果值超过阈值,则会向基站发送 SMS 通知它们相同的情况。如果发送端节点的值上升,那么这将通过发送端 Arduino Uno 上的 RF-Transmitter 模块传送到接收端 Arduino Uno 上的 RF-Receiver 模块。请注意,下面的代码由两部分组成,一部分用于“接收端 arduino”,另一部分用于“发送端 arduino”
########(PART-1)###### Receiver Side Arduino代码 #########################// 包括 RadioHead 幅移键控库#include #include / / 包含依赖的 SPI 库 #include  #include SoftwareSerial mySerial(4, 3); //Constants#define DHTPIN 2 // 我们连接的是什么引脚#define DHTTYPE DHT11 // DHT11int steamA0 =A5;// 你的阈值int sensorThres =400; // 定义变量DHT dht(DHTPIN, DHTTYPE); // 为普通 16mhz Arduino 初始化 DHT 传感器//Variablesfloat hum; //存储湿度值float temp; //存储温度值 //定义输出字符串 String str_hum;String str_temp;String str_smk;String str_out; // 创建幅移键控对象RH_ASK rf_driver;void setup(){ pinMode(smokeA0, INPUT); dht.begin(); // 初始化 ASK 对象 rf_driver.init(); // 设置串行监视器 Serial.begin(9600); mySerial.begin(115200);} void loop(){ delay(2000);哼 =dht.readHumidity();温度=dht.readTemperature(); Serial.print("接收器湿度 =");串行打印(嗡嗡声); Serial.print('\n'); Serial.print("接收器温度 ="); Serial.println(temp); int analogSensor =analogRead(smokeA0);字符串 smk; // 检查是否达到阈值 if (analogSensor> sensorThres) { Serial.print("Smoke at Reciever"); Serial.print('\n'); smk ="烟"; } else { Serial.print("清洁接收器"); Serial.print('\n'); smk ="干净"; } // 将缓冲区设置为预期消息的大小 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 =60 &&temp>
=25 ) { Serial.print("在接收器处检测到火灾"); mySerial.println("AT+CMGF=1"); //将GSM模块设置为文本模式延迟(1000); // 延迟 1000 毫秒或 1 秒 mySerial.println("AT+CMGS=\"+918744984131\"\r"); // 将 x 替换为手机号 delay(1000); mySerial.println("火警!!"); Serial.println('\n'); mySerial.println("在接收节点触发"); Serial.println('\n'); mySerial.println("温度:" + String(temp)); Serial.print('\n'); mySerial.println("湿度:" + String(hum)); Serial.print('\n'); mySerial.println("空气质量:" + smk);延迟(100); mySerial.println((char)26);// CTRL+Z delay(1000)的ASCII码; } if( str_humb.toInt()>=60 &&str_temp.toInt()>=25 ) { Serial.print("发射器检测到火灾"); mySerial.println("AT+CMGF=1"); //将GSM模块设置为文本模式延迟(1000); mySerial.println("AT+CMGS=\"+918744984131\"\r"); // 将 x 替换为手机号 delay(1000); mySerial.println("火警!!"); Serial.println('\n'); mySerial.println("发射器节点触发"); Serial.println('\n'); mySerial.println("温度:" + str_temp); Serial.print('\n'); mySerial.println("湿度:" + str_潮湿); Serial.print('\n'); mySerial.println("空气质量:" + String(str_smk));延迟(100); mySerial.println((char)26);// CTRL+Z delay(1000)的ASCII码; } }#######(第2部分)############发射端Arduino代码################### ############################################### ##################include  #include  #include //Constants#define DHTPIN 2 // 什么引脚我们连接到#define DHTTYPE DHT11 // DHT11DHT dht(DHTPIN, DHTTYPE); // 为普通 16mhz 初始化 DHT 传感器 Arduinoint steamA0 =A5;// 你的阈值 int sensorThres =400; // 定义变量 float hum; // 以百分比浮点温度存储湿度值; // 在 Celciusfloat smk 中存储温度值; // 定义输出字符串 String str_hum;String str_temp;String str_smk;String str_out; // 创建幅移键控对象RH_ASK rf_driver; // 为普通 16mhz 初始化 DHT 传感器 Arduino void setup() { dht.begin(); pinMode(smokeA0,输入); // 初始化 ASK 对象 rf_driver.init(); }无效循环(){延迟(2000); // 延迟以便 DHT-22 传感器可以稳定 hum =dht.readHumidity(); // 获取湿度值 temp=dht.readTemperature(); // 获取温度值 // 将湿度转换为字符串 str_humd =String(hum);串行打印(嗡嗡声); // 将温度转换为字符串 str_temp =String(temp);串行打印(温度); int analogSensor =analogRead(smokeA0); // 检查是否达到阈值 if (analogSensor> sensorThres) { str_smk ="1"; } else { str_smk ="0"; } // 结合湿度和温度 if(str_smk =="1") { str_out =str_hydrat + "," + str_temp + "," + "Smoke"; } if(str_smk =="0") { str_out =str_warm + "," + str_temp+ "," + "Clean"; } // 组合输出字符 const char *msg =str_out.c_str(); rf_driver.send((uint8_t *)msg, strlen(msg)); rf_driver.waitPacketSent(); }

示意图


制造工艺

  1. 使用 Raspberry Pi 监测温度
  2. 用三星 SAMIIO、Arduino UNO 和 Raspberry Pi 在几分钟内制作一个火灾探测器
  3. 具有自动控制功能的家庭/酒店监控系统
  4. 使用 Arduino 和 RFID 和 Python 的考勤系统
  5. 使用 Arduino Uno 的人体检测机器人系统
  6. 使用 K30 传感器监测二氧化碳
  7. 使用 Arduino 控制硬币接收器
  8. Arduino 报警系统:SERENA
  9. 带有 Arduino 的自动植物浇水系统
  10. Arduino 带蓝牙控制 LED!
  11. 地下室/爬行空间通风系统
  12. 两用物联网森林管理系统