基于物联网的森林火灾探测系统

森林火灾是森林中常见的危害,对野生动物和环境造成很大危害。如果可以在森林地区部署一个强大的系统来检测火灾并提醒消防当局立即采取行动,则可以避免这种情况。在这个项目中,目的是建立一个使用物联网的森林火灾检测系统,该系统将检测火灾并通过物联网向当局发送紧急警报。在这里,gsm/gprs 模块用于与物联网服务器通信,因为通常在森林地区,网络带宽非常低或不可用。因此,2g 网络更适合与服务器通信。
使用的组件
arduino纳米
sim800l gps/gprs 模块
3.7v锂离子电池
火焰传感器
点阵穿孔板
sim800l 模块工作
sim800l 是一个紧凑型模块,允许 gprs 传输、发送/接收 sms 和拨打语音电话。sim800l 模块上有两个天线。 第一个用于环形天线,可以直接焊接在板上,另一个用于外部天线。
规格:
输入电压:3.4v - 4.2v
接口:uart和at指令
支持频率:四频(850 / 950 / 1800 /1900 mhz)
sim卡插槽:micro sim插槽
天线连接器:ipx
工作温度范围:-40 do + 85°c
基于物联网的森林火灾检测系统框图
如下框图所示,该项目由火焰传感器、arduino nano 和 sim800l gsm/gprs 模块作为主要组件。火焰传感器可以检测到火灾,该传感器提供与火灾状态相对应的数字输出,并由 arduino nano 接收。
arduino 比较信号并在发生火灾时触发 sim800l。sim800l通过at指令与thingspeak服务器进行通信。
arduino iot 火灾探测 - 电路图
如电路图所示,火焰传感器连接到 arduino nano 的数字输入引脚。如果您有兴趣,您还可以查看我们之前构建的其他简单火灾报警电路。
sim800l 通过逻辑移位电阻连接到 arduino nano,因为 sim800l 在 3.3v logic 上工作。sim800l 模块单独供电,因为它工作在 3.4-4.2v dc 和 5v dc 外部电源给 arduino nano。或者,此处可以使用 3.7-5 v 升压转换器来避免使用两个电源。
用于基于物联网的森林火灾检测的 arduino 程序
按照电路图完成硬件连接成功后,现在是时候将代码刷入 arduino 了。所以第一步是在代码中包含所有必需的库,在我的例子中是“ softwareserial.h ”和“ string.h ”。
#include #include  
下一步是定义连接 sim800l 的 arduino 的 rx、tx 引脚。
softwareserial gprsserial(10, 11);  
在 setup() 中,进行了串行初始化、sim800l 模块初始化和 gpio 引脚声明等所有初级初始化。
无效设置(){ pinmode(12,输出); pinmode(9,输入); gprsserial.begin(9600); // gprs 波特率 serial.begin(9600); // gprs 波特率 module_init(); }  
在 sim800l 模块初始化函数中,调用了几个 at 命令来初始化模块并了解模块的状态。各个 at 命令的功能可以在 sim800l 的 at 命令表中找到。但这里唯一需要关注的是语句“ gprsserial.println(at+cstt=\www\)”,其中定义了运算符的访问点。确保将正确的接入点名称替换为“www”。
void module_init() { gprsserial.println(at); 延迟(1000); gprsserial.println(at+cpin?); 延迟(1000); gprsserial.println(at+creg?); 延迟(1000); gprsserial.println(at+cgatt?); 延迟(1000); gprsserial.println(at+cipshut); 延迟(1000); gprsserial.println(at+cipstatus); 延迟(2000); gprsserial.println(at+cipmux=0); 延迟(2000); 显示序列数据(); gprsserial.println(at+cstt=\www\); 延迟(1000); 显示序列数据(); gprsserial.println(at+ciicr); 延迟(3000); 显示序列数据(); gprsserial.println(at+cifsr); 延迟(2000); 显示序列数据(); gprsserial.println(at+cipsprt=0); 延迟(3000); 显示序列数据();}  
在 loop() 内部,来自引脚 12 的数字值被读取并存储在一个变量中。
int fire = digitalread(12);  
然后,当检测到火灾时,使用 if-else 循环来检测 sim800l 的触发以采取必要的措施。如下图,at+cipstart用于连接thingspeak服务器并启动连接。at+cipsend 用于向服务器发送数据。这里有一件重要的事情是将“ thingspeak write api key ”替换为您之前记录的字符串中的实际密钥。
gprsserial.println(at+cipstart=\tcp\,\api.thingspeak.com\,\80\);//启动连接延迟(6000); 显示序列数据();gprsserial.println(at+cipsend);//开始向远程服务器发送数据delay(4000); 显示序列数据();string str = get https://api.thingspeak.com/update?api_key=er43pwxxxxxqf0i&field1= + string(1); 序列号.println(str); gprsserial.println(str);//开始向远程服务器发送数据  
数据传输完成后,使用 at+cipshut 关闭连接。
gprsserial.println(at+cipshut);//关闭连接延迟(100);  
森林火灾探测系统 - 测试
要测试原型,首先需要将 microsim 插入 sim800l 插槽,如图所示。然后将模块上电,然后我们可以看到模块中的 led 闪烁。如果与初始启动相比,led 闪烁延迟,则表示它已获得网络,并已准备好连接到服务器。现在我们可以在 thingspeak 服务器中看到状态。
您还可以在下面链接的视频中查看该项目的完整工作。希望你喜欢它并且能够自己构建一个。如果您有任何问题,请将它们留在下面的评论中或使用我们的论坛。
代码
#include
softwareserial gprsserial(10, 11);
#include
int flag = 0;
无效设置()
{
pinmode(9,输出);
pinmode(12,输入);
gprsserial.begin(9600); // gprs 波特率
serial.begin(9600); // gprs 波特率
module_init();
}
void loop()
{
if (gprsserial.available())
serial.write(gprsserial.read());
int fire = digitalread(12);
if (fire == 0)
{
digitalwrite(9, high);
gprsserial.println(“at+cipstart=\”tcp\“,\”api.thingspeak.com\“,\”80\“”);
显示序列数据();
gprsserial.println(“at+cipsend”);//开始向远程服务器发送数据
delay(4000);
显示序列数据();
string str = “get https://api.thingspeak.com/update?api_key=er43pxxxxxhqf0i&field1= ” + string(1);
序列号.println(str);
gprsserial.println(str);//开始向远程服务器发送数据
delay(4000);
显示序列数据();
数字写入(9,低);
gprsserial.println((char)26);//发送
延迟(5000);//等待回复,重要!时间以互联网
gprsserial.println() 条件为准;
显示序列数据();
gprsserial.println(“at+cipshut”);
延迟(100);
显示序列数据();
标志 = 0;
}
else
{
digitalwrite(9, low);
如果(标志 == 0)
{
标志 = 1;
gprsserial.println(“at+cipstart=\”tcp\“,\”api.thingspeak.com\“,\”80\“”);//启动连接
延迟(6000);
显示序列数据();
gprsserial.println(“at+cipsend”);//开始向远程服务器发送数据
delay(4000);
显示序列数据();
string str = “get https://api.thingspeak.com/update?api_key=er43pwt91cghqf0i&field1= ” + string(0);
序列号.println(str);
gprsserial.println(str);//开始向远程服务器发送数据
delay(4000);
显示序列数据();
数字写入(9,低);
gprsserial.println((char)26);//发送
延迟(5000);//等待回复,重要!时间以互联网
gprsserial.println() 条件为准;
显示序列数据();
gprsserial.println(“at+cipshut”);//关闭连接
延迟(100);
显示序列数据();
}
}
}
void showserialdata()
{
while (gprsserial.available() != 0)
serial.write(gprsserial.read());
延迟(5000);
无效module_init
()
{
gprsserial.println(“at”);
延迟(1000);
gprsserial.println(“at+cpin?”);
延迟(1000);
gprsserial.println(“at+creg?”);
延迟(1000);
gprsserial.println(“at+cgatt?”);
延迟(1000);
gprsserial.println(“at+cipshut”);
延迟(1000);
gprsserial.println(“at+cipstatus”);
延迟(2000);
gprsserial.println(“at+cipmux=0”);
延迟(2000);
显示序列数据();
gprsserial.println(“at+cstt=\”www\“”);
延迟(1000);
显示序列数据();
gprsserial.println(“at+ciicr”);
延迟(3000);
显示序列数据();
gprsserial.println(“at+cifsr”);
延迟(2000);
显示序列数据();
gprsserial.println(“at+cipsprt=0”);
延迟(3000);
显示序列数据();
}

NI 于近日发布全新的 cRIO-9068 软件定制的控制器
全面剖析PC/104接口的ACM程控测试系统设计
智能家居进入爆发期,巨头各自有别
四方光电发布2022年第三季度报告
全球两大LiDAR厂商握手言和,禾赛和Velodyne达成专利交叉许可协议
基于物联网的森林火灾探测系统
机智云推标准化接入服务
2018年全球电动汽车充电桩发展规模与前景预测
交流充电桩通信方式和模块设计介绍
人工智能为我们的生活带来的惊奇改变
最新数据显示华为斩获国内PC第二,联想压力巨大
新iPad最快4月份入华
一亿信息数据泄露,数据安全如何保障
中科创达在智能汽车领域已经开发出魔方汽车大模型应用
道氏技术新能源锂电池材料业务的盈利情况分析
如何利用片上机制拓展JTAG标准使其包含互连的信号完整性测试
三相电源自然换相点检测方法的研究
世界互联网领先的15项黑科技
基于DSP的PC加密卡没计方案
冷却塔选型都需要哪些参数_冷却塔选型注意哪些问题