风筝
发表于: 2021-9-14 11:00:23 | 显示全部楼层

森林火灾是森林中常见的危害,对野生动物和环境造成很大危害。如果可以在森林地区部署一个强大的系统来检测火灾并提醒消防部门立即采取行动,则可以避免这种情况。在本篇文章中,主要是制作一个使用物联网的森林火灾检测系统,该系统将检测火灾并通过物联网向消防部门发送紧急警报。本文使用GSM/GPRS模块与物联网服务器通信,因为通常在林区网络带宽非常低或不可用。因此,最好使用2G网络与服务器进行通信。


使用的组件

●    Arduino Nano开发板

●    SIM800L GPS/GPRS模块

●    3.7V锂离子电池

●    火焰传感器


SIM800L模块的工作原理

SIM800L是一款小巧的模块,可以进行GPRS传输、发送/接收短信和拨打语音电话。 SIM800L模块内含两根天线。第一种是用于可以直接焊接在板上的环形天线,另一种是用于外部天线。


规格参数:

     ■    输入电压:3.4V - 4.2V

     ■    接口:UART和AT指令

     ■    支持的频率:四频 (850/950/1800/1900 MHz)

     ■    SIM卡槽:微型SIM卡槽

     ■    天线连接器:IPX

     ■    工作温度范围:-40至+85℃


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

如下示意框图所示,该项目由火焰传感器、Arduino Nano开发&SIM800L GSM/GPRS模块作为其主要组件。火焰传感器可以检测到火灾,该传感器提供与火灾状态相对应的数字输出,并由 Arduino Nano接收。

Forest-Fire-Monitoring-System-Block-Diagram.png                                                


Arduino比较信号并在发生火灾时触发SIM800L。 SIM800L通过AT指令与thingspeak服务器进行通信。


Arduino火灾检测系统的电路图

如电路图所示,火焰传感器连接到Arduino Nano的数字输入引脚。

Forest-Fire-Monitoring-System-Circuit-Diagram.png


SIM800L通过电阻分压连接到Arduino Nano,因为SIM800L工作在3.3v电平。 SIM800L模块电源为3.4-4.2V,单独使用5V外部电源向Arduino Nano供电,也可使用3.7-5 V升压转换器以避免使用两个电源。


设置Thingspeak帐户

硬件按照上述电路图成功完成后,需要搭建物联网平台,接收实时数据。这里的Thingspeak用于存储参数并在GUI中显示它们。要在Thingspeak中创建帐户,请按照以下步骤操作:


第1步:注册Thingspeak

首先,如果您之前没有Mathworks帐户,请访问 https://thingspeak.com/ 并创建一个新的免费Mathworks帐户。


第2步:登录 Thingspeak

使用您的账号登录 Thingspeak,然后单击“New Channel”。现在填写项目的详细信息,如名称、字段名称等。然后单击“Save channel”。

ThingSpeak-Sign-In.png


第3步:记录凭证

选择创建的频道并记录以下凭据。

●    Channel ID,位于频道视图的顶部。

●    Write API key,可以在频道视图的API密钥选项卡上找到。

ThingSpeak-API-Key.png


第4步:将小部件添加到GUI

单击“Add Widgets”并添加四个合适的小部件,如仪表、数字显示和指示器。本文选用了指示器。为每个小部件选择适当的字段名称。

ThingSpeak-Setup.png

Forest-Fire-Monitoring.png


跳转到指定楼层
风筝
发表于: 2021-9-14 11:12:08 | 显示全部楼层

用于基于物联网的森林火灾检测的Arduino程序

根据电路图成功完成硬件连接后,现在可以编写代码了。首先第一步是在代码中包含所有必需的库,本文是“SoftwareSerial.h”和“String.h”。

  1. #include <SoftwareSerial.h>
  2. #include <String.h>
复制代码

接下来定义连接SIM800L的Arduino的RX、TX Pin。

  1. SoftwareSerial gprsSerial(10, 11);
复制代码

setup()函数中,对所有的组件进行了初始化,如串口初始化、SIM800L模块初始化和GPIO引脚声明。

  1. void setup()
  2. {
  3.   pinMode(12, OUTPUT);
  4.   pinMode(9, INPUT);
  5.   gprsSerial.begin(9600);               // the GPRS baud rate
  6.   Serial.begin(9600);    // the GPRS baud rate
  7.   Module_Init();
  8. }
复制代码

在SIM800L模块初始化函数中,调用了几个AT指令来初始化模块,以及获取模块的状态。各个AT命令的功能可以在SIM800L的AT指令集中找到。这里需要注意的是在语句“gprsSerial.println(" AT + CSTT = \ "www \" ")”中定义了访问点。确保将正确的接入点名称替换“www”。

  1. void Module_Init()
  2. {
  3.   gprsSerial.println("AT");
  4.   delay(1000);
  5.   gprsSerial.println("AT+CPIN?");
  6.   delay(1000);
  7.   gprsSerial.println("AT+CREG?");
  8.   delay(1000);
  9.   gprsSerial.println("AT+CGATT?");
  10.   delay(1000);
  11.   gprsSerial.println("AT+CIPSHUT");
  12.   delay(1000);
  13.   gprsSerial.println("AT+CIPSTATUS");
  14.   delay(2000);
  15.   gprsSerial.println("AT+CIPMUX=0");
  16.   delay(2000);
  17.   ShowSerialData();
  18.   gprsSerial.println("AT+CSTT="www"");
  19.   delay(1000);
  20.   ShowSerialData();
  21.   gprsSerial.println("AT+CIICR");
  22.   delay(3000);
  23.   ShowSerialData();
  24.   gprsSerial.println("AT+CIFSR");
  25.   delay(2000);
  26.   ShowSerialData();
  27.   gprsSerial.println("AT+CIPSPRT=0");
  28.   delay(3000);
  29.   ShowSerialData();
  30. }
复制代码

loop()函数中,从引脚12读取数字值并将其存储在变量中。

  1. int fire = digitalRead(12);
复制代码

然后,当检测到火灾时,使用if-else循环来检测SIM800L的触发器以进行必要的操作。如下图,AT+CIPSTART用于连接Thingspeak服务器并启动连接。 AT+CIPSEND 用于向服务器发送数据。这里一件重要的事情是用之前记录的字符串中的实际密钥替换“Thingspeak write API Key”。

  1. gprsSerial.println("AT+CIPSTART="TCP","api.thingspeak.com","80"");//start up the connection
  2. delay(6000);
  3. ShowSerialData();
  4. gprsSerial.println("AT+CIPSEND");//begin send data to remote server
  5. delay(4000);
  6. ShowSerialData();
  7. String str = "GET https://api.thingspeak.com/update?api_key=ER43PWXXXXXQF0I&field1=" + String(1);
  8. Serial.println(str);
  9. gprsSerial.println(str);//begin send data to remote server
复制代码

数据传输完成后,使用 AT+CIPSHUT 关闭连接。

  1. gprsSerial.println("AT+CIPSHUT");//close the connection
  2. delay(100);
复制代码

测试森林火灾探测系统

首先需要将micro sim卡插入SIM800L插槽,如图所示。然后给模块上电,就可以看到模块中的LED闪烁。如果LED闪烁比初始启动慢,则表示它已连接到网络,并已准备好连接到服务器。现在我们可以在Thingspeak服务器中看到状态。

Forest-Fire-Monitoring-System.jpg


希望你喜欢它并能够自己制作一个。如果您有任何问题,请随时在本帖下面进行回复。


回复

使用道具 举报

周zb
发表于: 2021-11-10 17:11:52 | 显示全部楼层

风筝 发表于 2021-9-14 11:12
用于基于物联网的森林火灾检测的Arduino程序根据电路图成功完成硬件连接后,现在可以编写代码了。首先第一 ...

楼主你好,最近在学习Arduino和SIM800C一起用,但是就是一直都打不通。能不能留个联系请教您,您的所有帖子关于SIM800/900基本都看了,我主要就是想要实现发短信和拨打电话两个功能,已经买了sim800c的芯片,ESP8266也有,一样的问题。两个方向都走不下去了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-26 23:11 , Processed in 0.039431 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表