基于STM32设计的森林火灾预警系统(联动控制+SIM800C+华为云IoT)

发布者:GoldenSerenity最新更新时间:2024-05-27 来源: elecfans关键字:STM32设  森林火灾预警系统  联动控制  SIM800C 手机看文章 扫描二维码
随时随地手机看文章

1. 功能介绍

随着全球气候变化和人类活动的增加,森林火灾成为了一个严重的环境问题。及早发现和迅速响应火灾事件对于减少火灾的损失至关重要。为了实现对森林火灾的快速预警和联动控制,决定利用华为云IoT物联网平台来搭建一个高效的系统模型。


该系统模型的目标是在检测到森林火灾后,能够快速将火灾信息上报到云平台,并与指定的服务器进行数据报告的交互。同时,系统还能自动向抽水泵发送指令,打开开关以进行抽水灭火操作。通过这样的联动控制系统,可以实现快速响应和减少火灾对森林和生态环境的破坏。


该系统模型的核心是华为云IoT物联网平台,它提供了丰富的功能和服务,包括设备接入、数据采集、消息通信、云端数据存储和分析等。我们可以利用该平台的能力来接收来自火灾检测设备的数据,并通过云端的数据分析和处理来实现火灾预警和联动控制。


当火灾检测设备检测到火灾时,会通过无线通信将火灾信息发送到华为云IoT物联网平台。云平台接收到信息后,会立即进行处理并将火灾报告发送给指定的服务器。服务器可以根据报告中的信息采取相应的措施,如调度抽水泵进行灭火操作。


通过这个系统模型,可以实现对森林火灾的快速预警和联动控制,大大提高了火灾应对的效率和准确性。同时,利用华为云IoT物联网平台的强大功能,可以灵活地扩展和定制系统,以适应不同规模和需求的森林火灾防控工作。


硬件平台介绍:

MCU: STM32F103ZET6

物联网云平台: 华为IOT云平台

气体检测传感器: MQ2-烟雾传感器、MQ135-空气质量检测传感器

火焰检测: 采用火焰检测传感器

抽水机: 采用直流电机模拟水泵,打开开关抽水喷水灭火

上网网卡: 采用GSM模块SIM800C,使用的是物联网专用卡,包年只能上网这种。

与云端服务器的通信协议: 终端设备采用MQTT3.1.1协议与华为云服务器进行登录连接。

温湿度检测传感器: DHT11

供电方式: 电池+太阳能供电

image-20211216130803917

image-20211216131002483

image-20211216131052593

为了演示联动控制,火警(烟雾)检测装置和灭火(直流电机)装置分为两个独立的设备,分别连接上云端。

火警检测装置连接上物联网服务器之后,可以在服务器上配置数据处理规则,如果烟雾浓度超标,可以自动向灭火装置发送指令,进行灭火操作。服务器收到火警检测装置上传的烟雾浓度、空气质量等数据后,可以向自己的私有服务器转发数据,方便自己服务器收到数据后做分析存储处理,比如: 向指定邮箱发送邮件、手机APP推送通知栏、向指定用户推送短消息提示等等。

2. 创建产品(火警预警装置)

打开官网链接: https://www.huaweicloud.com/s/JeeJqeiBlOe9kSU

(1)选择设备接入IotTDA选项。

image-20211216132213984

(2)选择免费试用。

image-20211216132309521

(3)在产品页面选择创建新的产品。

image-20211216132345247

(4)填入产品信息,创建产品

image-20211216132509131

image-20211216132533613

(5)选择自己刚才创建的产品,创建数据模型,点击自定义模型

image-20211216132638488

image-20211216132732615

(6)选择添加属性

这个添加的属性就是设备端上报的数据类型。 比如: MQ2烟雾传感器检测的烟雾数据值类型。

在这个页面上还有一个添加命令的功能,这是用于云端下发指令给设备端使用的。当前这个设备是火警检测装置,只需要上报数据给服务器,不需要下发指令,这里就只需要添加属性就行了。

image-20211216132805214

image-20211216133014884

根据自己的设备的具体情况填写即可,如果上报的数据有多种类型就创建多个属性。

image-20211216133149523

3. 创建产品(灭火装置)

创建的流程和上面一样,这是多增加了一个命令下发的功能,方便云端远程控制电机开启和关闭,实现灭火功能。

(1)创建产品

image-20211216133613130

(2)产品创建完毕之后,添加服务器ID

image-20211216133732017

(3)添加属性,电机属性是可以读可以写的,范围设置为0和1,只能开关

image-20211216133826107

(4)添加命令,这个命令用于云端远程向设备下发指令,设备收到指令后可以做出相应的逻辑处理

image-20211216133959732

接着选择新增输入参数:

image-20211216134057410

最后点击确定即可。

image-20211216134118325

现在产品已经创建完毕。

image-20211216134203782

4. 创建设备(火警预警装置)

(1)在设备页面,选择注册设备,选择自己的对应的产品,设备标识码一般填自己设备的硬件标号。

image-20211216134405763

(2)设备创建成功之后会弹出弹窗,点击保存并关闭,会自动弹出下载窗口,是个文本文件,存放了密匙信息

image-20211216134607368

{     'device_id': '61bacdc02b2aa20288c5a094_QQ1126626497',     'secret': '1126626497'
 }

5. 创建设备(灭火装置)

流程与上面火警预警装置设备一样的。

image-20211216134848977

image-20211216134919535

{     'device_id': '61bad0564d9b020287193be2_QQ1126626497',     'secret': '1126626497'
 }

6. 生成MQTT协议登录ID和密匙

设备创建完成接来下生成MQTT登录账号、密匙,方便设备登录云端平台。

官网工具地址: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

image-20211216135050235

填入刚才创建设备时,保存下载文件里的信息,对着弹窗填入,最后生成了ID、用户名、密码参数,用于MQTT协议登录使用。

(1)火警预警装置生成登录参数

image-20211216135238336

ClientId  61bacdc02b2aa20288c5a094_QQ1126626497_0_0_2021121605
 Username  61bacdc02b2aa20288c5a094_QQ1126626497
 Password  43ed43bcbddc48772694fc2b18ec1112170f4d6cc52fbf1e01401c2ea1748475

(2)灭火装置

image-20211216135404330

ClientId 61bad0564d9b020287193be2_QQ1126626497_0_0_2021121605
 Username 61bad0564d9b020287193be2_QQ1126626497
 Password 43ed43bcbddc48772694fc2b18ec1112170f4d6cc52fbf1e01401c2ea1748475

7. 上报属性格式与主题订阅格式

产品设备、MQTT登录参数都到位了,接下来需要了解设备向服务器上报数据时,如何上报,格式是怎么样的。

(1)第一个问题是:华为云IoT物联网服务器的IP和端口号是多少?

在总览选项页面,点击多协议接入选项,就能看到了。

image-20211216135837598

image-20211216135851238

如果选择MQTT协议接入:

域名是: a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com
 如果你的设备不能解析域名,也可以直接填IP地址 121.36.42.100
 端口号: 1883

(2)第二个问题是:发布数据的主题和订阅数据的主题怎么填?

在产品页面,选择自己的产品,进去之后就能看到主题的格式介绍页面了。

image-20211216140240432

为了方便后续复制粘贴,这里总结下格式:

火警预警装置:

格式: $oc/devices/{device_id}/sys/messages/down //订阅主题: 平台下发消息给设备
 $oc/devices/61bacdc02b2aa20288c5a094_QQ1126626497/sys/messages/down
 
 
 格式: $oc/devices/{device_id}/sys/properties/report //设备上报数据
 $oc/devices/61bacdc02b2aa20288c5a094_QQ1126626497/sys/properties/report

灭火装置:

格式: $oc/devices/{device_id}/sys/messages/down //订阅主题: 平台下发消息给设备
 $oc/devices/61bad0564d9b020287193be2_QQ1126626497/sys/messages/down
 
 
 格式: $oc/devices/{device_id}/sys/properties/report //设备上报数据
 $oc/devices/61bad0564d9b020287193be2_QQ1126626497/sys/properties/report

(3)第三个问题是:上报属性时,数据格式是什么?

官方文档介绍: https://support.huaweicloud.com/devg-iothub/iot_01_2127.html

image-20211216140717400

image-20211216140735400

总结下格式: 上报的数据就是JSON格式,一次性可以上传多个属性数据,JSON数组里按照顺序增加即可。

重要的字段含义解释:这两个字段后面的数据需要自己根据自己的设备产品去填充的。

service_id 示设备服务的ID。
 
 properties 是设备服务的属性列表,具体字段在设备关联的产品模型中定义。

火警预警装置上传的数据:

{'services': [{'service_id': 'MQ2','properties':{'MQ2':100}}]}

image-20211216141244291

灭火装置上传的数据:

{'services': [{'service_id': 'motor','properties':{'motor':1}}]}

image-20211216141331531

8. 使用MQTT客户端模拟设备测试

(1)登录火警预警装置

image-20211216141809888

image-20211216141856616

(2)灭火装置登录

image-20211216141923441

image-20211216141948165

可以看到,设备已经成功登录服务器,完成了数据上报。这也证明服务器端设备创建已经全部OK,正常。

9. 配置设备联动

(1)创建规则

image-20211216142148394

(2)填写规则信息

image-20211216142249199

(3)添加触发条件,选择需要处理数据的设备,设置条件:当烟雾浓度大于等于100就触发

image-20211216142529016

(4)添加执行动作,当烟雾浓度超过100就下发指令给灭火装置

image-20211216142623146

image-20211216142708172

(3)最后点击创建规则,生效规则

image-20211216142901663

image-20211216142911499

(4)测试效果

使用两个MQTT客户端分别模拟火警预警装置和灭火装置,当烟雾浓度超过100时,查看灭火装置是否收到云端下发的指令。

image-20211216143206075

10. 数据转发

如果数据需要转发到其他地方,可以自己创建规则配置。

image-20211216143255757

11. 硬件设备测试

设备端采用GSM模块SIM800C完成上网功能,主控MCU采用STM32F103ZET6。

任意只要能上网的设备都可以使用当前代码连接服务器,因为当前模拟的是户外设备,只能采用GSM模块上网。

如果是智能家居,屋里小区的设备,有WIFI的可以采用ESP8266这些无线网卡。

项目工程源码: https://download.csdn.net/download/xiaolong1126626497/81993720


1. SIM800C.c

这是SIM800C的配置代码


#include 'sim800c.h'

 

 /*

 函数功能:向SIM800C模块发送指令

 函数参数:

                 char *cmd  发送的命令

               char *check_data 检测返回的数据

 返回值: 0表示成功 1表示失败

 */

 u8 SIM800C_SendCmd(char *cmd,char *check_data)

 {

    u16 i,j;

    for(i=0;i< 5;i++) //测试的总次数

    {

       USART2_RX_FLAG=0;

       USART2_RX_CNT=0;

             memset(USART2_RX_BUFF,0,sizeof(USART2_RX_BUFF));

             USART_X_SendString(USART2,cmd); //发送指令

       for(j=0;j< 500;j++) //等待的时间(ms单位)

       {

           if(USART2_RX_FLAG)

           {

               USART2_RX_BUFF[USART2_RX_CNT]='\0';

               if(strstr((char*)USART2_RX_BUFF,check_data))

               {

                   return 0;

               }

               else break;

           }

           delay_ms(20); //一次的时间

       }

    }

    return 1;

 }

 

 

 /*

 函数  功能:GSM模块初始化检测

 函数返回值:1表示模块检测失败,0表示成功

 */

 u8 SIM800C_InitCheck(void)

 {

       if(SIM800C_SendCmd('AT\r\n','OK'))return 1;

       else printf('SIM800模块正常!\r\n');

       

         if(SIM800C_SendCmd('ATE0\r\n','OK'))return 2;

       else printf('设置模块不回显成功!\r\n');

     

         if(SIM800C_SendCmd('AT+CGMI\r\n','OK'))return 3;

         else printf('查询制造商名称成功!%s\r\n',USART2_RX_BUFF);

     

         if(SIM800C_SendCmd('AT+CGMM\r\n','OK'))return 4;

         else printf('查询模块型号成功!%s\r\n',USART2_RX_BUFF);

         

       DelayMs(1000);

         DelayMs(1000);

         if(SIM800C_SendCmd('AT+CNUM\r\n','+CNUM:'))return 5;

         else printf('获取本机号码成功!%s\r\n',USART2_RX_BUFF);

       /* 返回格式如下:

         +CNUM: '','+8613086989413',145,7,4

         OK

         */

         return 0;

 }

 

 /*

 函数  功能:GSM模块短信模式设置

 函数返回值:0表示模块设置成功

 */

 u8 SIM800C_SetNoteTextMode(void)

 {

         if(SIM800C_SendCmd('AT+CSCS='GSM'\r\n','OK'))return 1;// 'GSM'字符集

         else printf('短信GSM字符集设置成功!\r\n');

     

       if(SIM800C_SendCmd('AT+CMGF=1\r\n','OK'))return 2; //文本模式

         else printf('短信文本模式设置成功!\r\n');

         return 0;

 }

 

 /*

 函数功能:发送短信

 函数参数:

                     num:电话号码

                     text:短信内容

 函数返回值:0表示发送成功

 */

 u8 SIM800C_SendNote(u8 *num,u8 *text,u16 len)

 {

         char data[50];

         char send_buf[2];

         sprintf(data,'AT+CMGS='%s'\r\n',num);

         if(SIM800C_SendCmd(data,' >'))return 1; //设置发送的手机号

         USART_X_SendData(USART2,text,len);     //发送短信内容

     

         send_buf[0] = 0x1a;

         send_buf[1] = '\0';

       if(SIM800C_SendCmd(send_buf,'+CMGS'))return 2; //发送结束符号

         return 0;

 }

 

 

 /*

 函数功能:NTP网络同步时间

 */

 void SIM800C_NtpUpdate(void)

 {  

      SIM800C_SendCmd('AT+SAPBR=3,1,'Contype','GPRS'\r\n','OK');//配置承载场景1

      SIM800C_SendCmd('AT+SAPBR=3,1,'APN','CMNET'\r\n','OK');

      SIM800C_SendCmd('AT+SAPBR=1,1\r\n','OK');                     //激活一个GPRS上下文

    DelayMs(5);

    SIM800C_SendCmd('AT+CNTPCID=1\r\n','OK');                     //设置CNTP使用的CID

      SIM800C_SendCmd('AT+CNTP='202.120.2.101',32\r\n','OK');     //设置NTP服务器和本地时区(32时区 时间最准确)

    SIM800C_SendCmd('AT+CNTP\r\n','+CNTP: 1');                    //同步网络时间

      printf('同步网络时间:%s\r\n',USART2_RX_BUFF);

 }

 

 

 /*

 函数功能:GPRS数据通信初始化

 返 回 值: 0表示成功

 */

 u8 SIM800C_GPRS_Init(void)

 {

      SIM800C_SendCmd('AT+CIPCLOSE=1\r\n','CLOSE OK');   //关闭连接

      SIM800C_SendCmd('AT+CIPSHUT\r\n','SHUT OK');       //关闭移动场景 

[1] [2] [3]
关键字:STM32设  森林火灾预警系统  联动控制  SIM800C 引用地址:基于STM32设计的森林火灾预警系统(联动控制+SIM800C+华为云IoT)

上一篇:机智云物联网平台+STM32的10kV智能箱式变电站设计
下一篇:stm32单片机pwm设置与实际输出频率不一致

推荐阅读最新更新时间:2026-03-10 06:45

基于STM32+华为IOT设计的智能温室大棚监控系统
一、项目背景 当前文章介绍基于STM32单片机的智能温室大棚监控系统,当前系统由温湿度传感器、二氧化碳传感器、光敏电阻传感器、土壤湿度传感器笨时温宏大棚中内作物生长环境因子主要包括温度、湿度、光度、土壤湿度传感、二氧化碳浓度等参数进行监控。 采集数据,判断是否在系统设定上限、下限范围,如果超出了上限下限蜂鸣器报警、通风系统、LED补光系统、水泵系统就会启也可以通过手机APP和华为云华为云物联网云平台对温室大棚中的数据进行修改和设定新的数据。 本设计整体主要采用STM32单片机为核心、温湿度传感器、二氧化碳传感器、光敏电阻传感器、土壤湿度传感器、通风系统、LED补光系统、水泵系统组成。 (1) 温湿度传感器: 主要对温室大棚
[单片机]
基于STM32+<font color='red'>华为</font><font color='red'>云</font><font color='red'>IOT</font>设计的智能温室大棚监控系统
STM32+华为IOT设计的动态密码锁
随着人们生活水平的提高及科学技术的发展,个人信息保护显得至关重要,设计了一款物联网智能电子密码锁,以STM32单片机为主控制器,由触摸矩阵键盘、ESP8266、步进电机等模块组成,具有远程控制、随机密码生成等功能。经软硬件测试,系统响应迅速,灵敏度高,实时性好,系统识别准确率高达99%,该系统运行稳定,安全可靠,功耗低及具有较好的扩展性。 当前支持的开锁方式: (1)支持手机APP远程开锁。通过华为云物联网平台实现远程发送指令开锁,设备上的ESP8266通过连接家里路由器,在连接华为云物联网平台,可以在手机APP上对设备端的RTC时间进行校准,设备唯一ID获取,生成随机开锁密码,可以点击APP上的开锁按钮,通过物联网平台提供的
[单片机]
STM32+<font color='red'>华为</font><font color='red'>云</font><font color='red'>IOT</font>设计的动态密码锁
博世携手华为推出物联网套件服务,加速IOT在中国发展
在2018华为全联接大会(HUAWEI CONNECT)上,全球领先的技术与服务供应商博世与全球领先的信息与通信技术基础设施和智能终端提供商华为正式宣布合作,博世物联网套件软件服务(Bosch IoT Suite)将搭载于华为云实现在华落地应用,加速物联网在中国的发展。 中国物联网平台的市场预计在未来几年将增长近70%。“中国对物联网解决方案的需求与日俱增,是亚洲发展最快的物联网市场之一。博世与华为云的合作标志着博世在中国的物联网市场迈出了坚实一步。”博世软件创新集团首席执行官Stefan Ferber博士表示:“我们很高兴能与华为云开展合作,为中国市场提供基于云的物联网服务,将设备、用户和企业互联。相信博世软件创新与华
[物联网]
博世携手<font color='red'>华为</font><font color='red'>云</font>推出<font color='red'>物联网</font>套件服务,加速<font color='red'>IOT</font>在中国发展
基于运动控制芯片AFDX05的开放式五轴五联动数控系统的应用
一、引言 当前,各种运动控制卡的二次开发的比较复杂。目前国内比较多的工程师都熟悉数控系统的G代码,在ARM 32位单片机和国产运动控制芯片AFD-X05的基础上,研制成的可执行G代码的五轴联动运动控制器,使得二次开发变简单了。应用这种支持五轴直线插补的高速高精度的运动控制器,再开发各种专用的数控系统, 工程师们只需将精力放在大型的复杂的软件开发上面,完全不需要去了解硬件。 二、G代码五轴联动运动控制器的硬件系统 2.1 AFDX05运动控制芯片 云山数控研发的AFDX05运动控制芯片,支持任意2~5轴直线插补,任意2轴圆弧插补,多达6级的运动指令缓冲区,特别适合高速多线段或圆弧连续插补的运动控制,另外,还有反向间隙补偿,速度控制,
[单片机]
基于运动控制芯片AFDX05的开放式五轴五联动数控系统的应用
一、引言 当前,各种运动控制卡的二次开发的比较复杂。目前国内比较多的工程师都熟悉数控系统的G代码,在 ARM 32位单片机和国产运动控制芯片AFD-X05的基础上,研制成的可执行G代码的五轴联动运动控制器,使得二次开发变简单了。应用这种支持五轴直线插补的高速高精度的运动控制器,再开发各种专用的数控系统, 工程师们只需将精力放在大型的复杂的软件开发上面,完全不需要去了解硬件。 二、G代码五轴联动运动控制器的硬件系统 2.1 AFDX05 运动控制 芯片 云山数控研发的AFDX05运动控制芯片,支持任意2~5轴直线插补,任意2轴 圆弧插补 ,多达6级的运动指令缓冲区,特别适合高速多线段或圆弧连续插补的运动控制,另
[工业控制]
使用STM32F103C8和SIM800C GSM模块发送/接收短信
GSM 模块经常用于物联网项目,因为它能够远程发送和接收数据。GSM 模块没有像 Wi-Fi 模块那样的依赖项。虽然其他无线模块如Wi-Fi或Zigbee具有短距离和成本等缺点,但 GSM 模块具有可靠性、长距离,因为有效计划只需要一张 SIM 卡。尽管 GSM 模块无法发送传感器生成的大量数据,但它非常适合需要发送少量合理数据的应用。 在本教程中,此类GSM 模块将与 STM32F103C8 ARM 微控制器连接,以从程序中配置的蜂窝移动号码发送和接收文本消息 (SMS)。为了显示接收和发送的消息,一个16x2 LCD将与两个按钮一起使用,这两个按钮将在按下相关按钮后启动文本消息的发送和接收。 所需组件 STM32F10
[单片机]
使用STM32F103C8和<font color='red'>SIM800C</font> GSM模块发送/接收短信
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved