【基于STM32微型控制器的智慧消防系统设计与实现12000字(论文)】_第1页
【基于STM32微型控制器的智慧消防系统设计与实现12000字(论文)】_第2页
【基于STM32微型控制器的智慧消防系统设计与实现12000字(论文)】_第3页
【基于STM32微型控制器的智慧消防系统设计与实现12000字(论文)】_第4页
【基于STM32微型控制器的智慧消防系统设计与实现12000字(论文)】_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第PAGEV页基于STM32微型控制器的智慧消防系统设计与实现摘要本文设计了一种基于STM32微型控制器的温度、热度、烟雾传感器的智慧消防系统。该系统简单可靠,实用性强,能近距离或者远程的实时根据数据来防范智慧消防问题,达到智慧的自我防范功能。消防防范一直是我国的重要事务之一,尤其还是在幅员辽阔的土地之上,消防问题一直是很重要的问题,警员出警到智慧、建筑火灾事发现场也是需要一点时间的,但这期间有多少生命在等待拯救,如果在此之前,能降低延缓这一时间,那无疑是最好的。在一定范围内可以通过提供的WIFI模块来实现单片机和手机之间的即时通讯,及时通过数据交互来实现对安装布置环境的各种数据检测和监控管理,实现对智慧的消防防范,大幅度地缓减了消防人员赶来救援中人员的伤亡,这也大大增加了地方消防管理的安全性和及时性。当超过无线WIFI范围时,可以通过GSM模块将单片机检测到的数据信息及时以短信的方式发送到手机上,然后及时的通知和处理及时事件。关键词:STM32;GSM;消防;温度;烟雾;WIFI目录绪论……………11.1问题的提出………21.2国内外研究现状…………………51.3本文研究的主要内容、目标与方法……………9第2章可持续发展的城市交通……122.1可持续发展……………………122.1.1可持续发展思想的形成…………122.1.2可持续发展的内涵………………152.1.3可持续发展观……202.2城市交通可持续发展…………26结论…………………113致谢…………………115参考文献……………116附录…………………119第1页第1章绪论1.1研究背景近年来,我国的消防措施,消防科技也在与时俱进,经过一年又一年的发展,消防水平处于一个强大的层次,但是国内人口的增加,居住地区的扩张,以及建筑群的增加和扩大,这让我们的居住环境越来越大,大街小巷综合交叉,建筑错落有致,大楼大厦也都拔地而起……人们的生活得到了很大的改善,但是当危险来临时,这些便利有时候也会成为我们的短处。火灾一旦发生,消防人员会迅速赶往受灾现场,但是有时候会因为路程的距离,有时候会不能及时地到达现场,尤其是一些边缘地区,然后就是处于高楼大厦的人员来方便及时安全地撤离火灾现场。这时候便会发现,单靠人的力量有时候已经达不到及时的对生命负责。本次设计的智慧消防系统基于STM32F103单片机控制为核心[1]。通过远程管理来控制,通过温度传感器、烟雾传感器以及光传感器测取数据,通过数据交互实现对安装布置环境的各种数据检测和监控管理[2]。在没有人员察觉或者少人地区,那防火报警情况便是尤其的重要,可以通过ESP8266把当前的数据发送到无线网以内的手机端进行显示或者可以通过GSM将温湿度以短信的形式发到远距离的用户手机达到及时的火灾报警[3]。实现对一个超出空间范围内的温湿、烟雾、光源的数据自动测量的告知提示,可以让该空间范围内处于一个正常的范围值内,或者最大化让其趋近正常范围内。这样实现了最简单的报警提示,但是解决了最坏情况的出现,快速高速地将危险早早排除,为生命的保护提供了足够的保障。1.2可行性研究对于单片机的选用,选择集成度相对于其他单片机的更加强大的STM32F103单片机,它的性能不仅好,同时具备丰富的功能。丰富的功能支持,会让设计更加方便,不用担心不支持等问题的困惑。同时它在格便宜的基础上还支持稳定的控制能力。对于提供电源来支持单片机运行的电源,选用5欧姆的常用继电器,它的使用会节约大量的额外资源,它的简单电路设计也会让我在使用时更加方便操作。而对于最重要的温度、湿度和烟雾浓度的检测传感器的选择,选用DHT11和MQ2这两个传感器来实现,他们提供的功能在对于在使用时,会更方便去设计和实现,并且自身设计的优势,在这次设计中更合适,会保证检测采集到的数据准确,这为报警提示模块的准确性增加了可靠保障。数据采集,也需要针对于数据进行显示,使用支持字符功能更加完善强大的LCD1602来显示,它支持特殊字符的显示,还支持通过软件的设计来实现显示的背景光和字符数据逻辑的准确显示。针对于数据的处理,还提供了通过按键的功能来处理显示数据值的调整,在本次设计中,这些数据主要用来作为报警提示的上限值来使用,所以需要在一些情况下进行调整,比如远近的原因会造成所测数据的环境的浓度不一样,导致数值的测取不合格,延时它的及时报警提示。报警提示的部分,不仅提供了蜂鸣器的使用,还增加了局域网内的信息通讯和数据手动调整交互的实现[4]。对于超过局域网的处理,通过GSM模块与手机之间实现短信通讯,及时地将超过所调的上限值以短信的形式发送到指定手机上[5]。简单,便宜,但是功能强大,实用性强大的设计和实现,会让它的性能更大化。1.3研究设计的主要内容和功能设计的主要内容是通过传感器数据,将数据经过串口由单片机传输以及控制整体系统的实现。由单片机将数据交于液晶显示器来显示,而液晶上显示的数据,可以经过按键模块的实现来对其进行调整显示,当传感器检测到的数据超过设置的数据时。会将信号交于单片机,然后再由单片机来控制报警提示的蜂鸣器实现鸣响,此时还会经过局域网将数据交给手机上提供的接收器显示[6]。对于更远难以通过局域网内报警情况,还设计了GSM来实现将检测到超过上限值通过短信的方式[7],将数据发送给指定的用户已达到超远距离的报警提醒。主要的功能包括以下几点:(1)温湿度检测;(2)烟雾检测;(3)按键设置;(4)液晶屏显示;(5)单片机与手机之间无线通信和GSM通讯[8]。

第2章设计方案2.1设计思路由单片机来作为控制中心,对于最重要的温度、湿度和烟雾浓度的检测传感器的选择,选用DHT11和MQ2这两个传感器来实现,他们提供的功能在对于使用时,会更方便去设计和实现,并且自身设计的优势,会保证检测采集到的数据准确[9]。数据的显示,使用支持字符功能更加完善强大的LCD1602来显示,它支持特殊字符的显示。针对数据的处理,提供了通过按键的功能来处理显示数据值的调整。提供了蜂鸣器的报警提示,还增加了局域网内的信息通讯和数据手动调整交互的实现,对于超过局域网的处理,通过GSM模块与手机之间实现短信通讯,及时地将超过所调上限值以短信的形式发送到指定手机上[10]。下图2-1为系统结构图:液晶显示当前信息DHT11温湿度采集液晶显示当前信息DHT11温湿度采集控制蜂鸣器进行报警控制蜂鸣器进行报警单片机数据处理按键设置报警上限单片机数据处理按键设置报警上限继电器控制继电器控制GSM发送短信烟雾采集GSM发送短信烟雾采集WIFIWIFI无线数据传输GSMGSM发送短信WIFI无线数据WIFI无线数据传输WIFI无线数据传输图2-1系统结构图设计过程:选择好适合各个模块设计中需要的芯片。将各个模块电路设计规划好。调试各个模块的电路实现和交互。完成各个模块之间的软件交互代码。2.2系统构成本次系统的实现,分为硬件设计实现和软件的编程实现。关于硬件的实现,单片机和各种传感器的合理选择,会让在实现和利用上得到更好的使用。其他的硬件元器件的选择完后,根据硬件设计好的电路进行硬件焊接实现。当硬件实现完成后,便可以将软件的编写实现工作开始进行,硬件保证了数据的交互和通讯基础,但是实现需要软件编码支持。对于软件的编程,主要在keil提供的环境中实现,它强大的编程会让在针对于每一个模块的实现都可以得到最大化的技术支持。可以逐步调试,以及模块之间的测试检测,查看各种在数据通讯中的变量的成功与否。最后将完成品放于单片机中实现系统整体的使用。单片机作为控制中心,数据是通过传感器数据,将数据经过串口到单片机。由单片机将数据交于液晶显示器来显示,而液晶上显示的数据,可以由按键的实现来对其进行调整显示。当传感器检测到的数据超过设置的数据时[11],会将信号交于单片机,然后再由单片机来控制蜂鸣器实现鸣响,此时还会经过局域网将数据交给手机上提供的接收器显示。对于更远难以通过局域网内报警情况,还设计了GSM来实现将检测到超过上限值通过短信的方式,将数据发送给指定的用户已达到超远距离的报警提醒,在手机上以短信内容的展示数据。2.3内容安排由设计思路和系统构成,将内容安排规划如下:2.3.1硬件电路的设计(1)系统硬件的总电路(2)按键电路(3)报警电路(4)LCD1602液晶显示电路(5)ESP8266电路(6)温湿度传感器电路(7)烟雾传感器电路(8)GSM短信电路2.3.2软件系统设计(1)软件总程序实现流程(2)按键实现流程(3)报警实现流程(4)LCD1602显示实现流程(5)ESP8266无线通信实现流程(6)温湿度检测实现流程(7)烟雾检测实现流程(8)GSM短信交互

第3章硬件电路设计3.1系统硬件的总电路实现通过将传感器在特定环境下对于特定数据的检测值,由单片机串口将数据在液晶显示屏上显示,对于温湿度和烟雾浓度的显示值,提供了按键的操作来对其显示数据的调整[12]。并且提供了检测的数值由无线模块通过局域网发送到手机接收端,接受范围超过无线模块的范围无法将信息与手机交互时,监测数据会用过GSM模块将数据以短信的形式编辑发送到手机端来显示[13]。图3-1是其硬件电路原理图:图3-1系统硬件总电路图3.2按键控制电路从下面的按键控制电路来说,因为需要实现液晶显示屏上数据值的增加、减少和确定修改等操作,所以将三个开关并联组成带电路图。一段连接单片机,一端接地。对于按键是使用时,便是通过开关的处理来控制电压实现功能模块的实行。按键1,其设定为增加的按钮,按键1则是代表减的按钮,按键3则是确定的按钮。按键的按下和松开即为一次处理,增加的固定值为1。图3-2为按键控制电路原理图:图3-2按键控制电路图3.3电源电路本次设计的电源电路如图3-3所示:图3-3电源电路SWITCH是电源开关,POW是电源输入端,供电电压为DC5V,DC是代表直流。3.4报警电路报警电路的电路图如下,因为需要当检测的数值超过调整的范围时有一个报警提示,所以设计了一个蜂鸣器的元器件来支持实现。它的触发条件是,当有传感器在得到检测数据,由A/D转换处理后的值,超过所设值时,单片机会触发提供报警的电流。因为它由NPN三极管组成,所以发送一个高电平从Alarm端进入,会使能蜂鸣器鸣响。蜂鸣器的电路如图3-4所示图3-4蜂鸣器报警电路3.5LCD1602液晶显示电路主要是通过电压来控制液晶显示屏的显示,只要有电就会有显示,如此来实现显示图形。在电路中RT为它的电位器,也就是滑动变阻器,可以通过这个电位器来调节液晶背光亮度。RS为寄存器选择脚,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W为读/写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或显示地址;当RS为低电平,R/W为高电平时,可以读忙信号;当RS为高电平,R/W为低电平时,可以写入数据。电路图如下:图3-5lcd1602电路图3.6ESP8266电路本次设计使用的是常见的ESP8266无线串口来实现局域网内的数据交互功能,因为它的简单易操作,在局域网内可以最大化地将数据快速的交互能力,选择使用它。可以通过这个体积微小但是功能强大的它来实现,检测模块采取的经过装换后的数值到指定用户的手机接收端。它的使用不仅仅是数据的发送,只要在局域网内,便可以根据它的引脚处理来收发数据,TXD引脚用来接收数据,RXD引脚用来发送数据。WIFI模块电路的电路图如下图3-6ESP8266模块电路图3.7温湿度传感器电路温湿度通过直接与STM32引脚连接后,通过它的引脚2(DATA)将数据发给STM32。引脚4接地,而它的引脚1主要供电,供电为3V至5V。传感器的电路图如下:图3-7温度传感器电路3.8烟雾传感器电路烟雾检测的部分使用MQ2传感器来实现,对于指定环境的烟雾数值的检测。在数值的采集时,它对于火源的远近距离会产生测到不同的数据。因为在相同环境下,会因为远近导致烟雾浓度的差别,然后造成到达设置的上限值数据时,它的时效性变差。所以设计好设备后,需要将它置于临近或者危险易发地。或者将预警提示范围值调低。它的引脚会随着烟雾浓度的变化变化直流信号,然后将采集的信号经过单片机的ADC装换后,将它的数值再由单片机发送给液晶显示器上显示。其电路原理图如图3-8所示:图3-8传感器电路图3.9GSM短信电路SIM800支持4频GSM/GPRS。主要用到的引脚是9号引脚(TXD)来发送数据,然后便是SIM卡接口的SIM_VDD、SIM_DATA、SIM_CLK、SIM_RST、SIM_PRESENCE。下图为它的电路分布图:图3-9sim800电路图

4软件系统设计4.1软件总程序实现流程选择集成度相对于其他单片机的更加强大的STM32F103单片机,它的性能不仅好,同时具备丰富的功能,以单片机作为在控制中心,先将各个模块的初始完成,尤其是局域网内的通讯和超过局域网的通讯。当我初始化完这两个后,对于最重要的温度、湿度和烟雾浓度的检测传感器的选择,选用DHT11和MQ2这两个传感器来实现,所以对于他们的初始化才是最重要的,因为本次系统的实现和他们检测的电流信号转换后的数值关系巨大,它们的初始化成功会保证检测采集到的数据准确,这为报警提示模块的准确性增加了可靠保障[14]。接下来便是液晶显示器的初始化和显示配置处理,因为它的物理特性,在做处理时要时刻注意它的指定区域的初始化,因为初始化不成功便会让它是区域电压不正确,导致显示的不正确,无法处理。数据的处理,可以通过按键的功能来处理显示数据值的调整,按键的使用,提供了对于数据的加按键,减按键和数据确认的按键。需要在一些情况下进行调整,比如远近的原因会造成所测数据的环境浓度不一样导致数值的测取不合格,延时它的及时报警提示。报警提示时,会通过软件实现的内部来根据监测数据值的超出来控制蜂鸣器的鸣响,此时可以通过局域网内实时数据的交互模块,将此时的液晶显示数据值通过串口以用AT指令发送到手机接收端,对于超过局域网的处理,通过GSM模块与手机之间实现短信通讯,及时地将超过所调上限值以短信的形式发送到指定手机上。如此不断地监视着布控的区域,对检测的区域实时更新数据,发送数据,以达到实时的监控,及时报警。整个系统流程路图如图4-1所示:开始开始ESP8266/GSM串口初始化ESP8266/GSM串口初始化DHT11温湿度初始化DHT11温湿度初始化烟雾初始化烟雾初始化LCD1602显示当前信息LCD1602显示当前信息NN是否按下按键返回是否按下按键返回YY按键设置烟雾温湿度上限按键设置烟雾温湿度上限NENESP8266发送数据到手机端是否超过上限是否超过上限手机端显示当前烟雾值手机端显示当前烟雾值蜂鸣器报警蜂鸣器报警,GSM发送短信YY图4-1系统流程图4.2按键实现流程在按键处理的这一块,它的初始化,可以通过两种方式来实现,最常见的便是直接通过高低电平来判断按钮按下是否,然后按下到放开这一个过程的捕获来实现处理。所以首先要知道需要多少个按钮,每一个按键的触发时要去实现什么功能,然后在不过捕获到信号后,快速做出处理。另一种是,通过中断函数来实现按键的实现,第二种的出现,主要是因为第一种的消息触发会因为按下频数和错误操作导致编程代码对捕获次数的错误使得操作错误。在使用中断函数的控制方法时,需要将每一个按键对应的引脚,它对应的中断函数写出来,然后在函数内部把该按键的功能实现出来,这样不管怎样操作,能保证按键处理的正确性。实现流程图如下:开始开始NNLCD1602显示进入按键设置函数是否按下按键LCD1602显示进入按键设置函数是否按下按键设置参数设置参数YY返回返回图4-2按键流程图在按键的软件实现过程中,需要处理好按键的消抖,因为有时候会因为按键的消抖没有处理好,当按下和松开时得到的位置不稳定。导致数值的变化不够准确,所以需要在中断函数处处理好后每一个按键中断的变化。4.3报警实现流程报警的设计和编程。根据是否超过设置的报警范围值来进行提示,当内部代码把检测的值与设置的值比较时,超过便达到发动报警的条件,实现报警。通过编写两个函数来实现蜂鸣器报警的开启和关闭。首先将端口PA的时钟使能,然后把端口的配置设置好对应的引脚,然后把输出设置为推挽输出,I/O口的速度设置为50MHZ,其他的一些配置也需配置好,这样在使用时才不会出现错误。通过GPIO_SetBits(GPIOB,GPIO_Pin_6),GPIO_ResetBits(GPIOB,GPIO_Pin_6)函数来实现电压控制鸣响。实现流程图如下所示:单片机输出低电平蜂鸣器报警单片机输出低电平蜂鸣器报警是否触发报警条件报警程序入口返回YNY图4-3报警流程图4.4LCD1602显示实现流程液晶显示的模块,根据实际需求选择了HJ1602A作为液晶显示屏。它作为一个同时能显现16+16的字符显示工业级的字符型液晶,其能力是明显突出的。然后再来说一说,液晶的使用,其实在生活中它的存在是比比皆是的,小到戴在手上的电子表,大到超大的视频显示屏。可以看出它的作用在我们生活中是一个重要的构成部分。1602字符型的液晶显示器如下两图所示:图4-4正面图图4-5背面图再看看它的显示,它需要在显示字符时,要先输入说明这个显示字符的显示地址,也就是说在16+16的地址上,它的内部显示地址如下图所示。图4-61602内部显示地址图比如要在第二行第三个字符那里放一个字符,首先可以从上图中得知,该位置地址为42H,在写入显示地址的时候,要保证它的最高位恒定为高电平1,因此对其地址的实际输入数据为01000010B+10000000B=11000010B。因为它的显示要求表明:要先设置显示模式,然后每次重新重复写入操作时,还要判断液晶是否处于忙的状态。因为它的物理特性,在使用它时,要考虑好在那里显示字符,那么显示的区域的电压,就要控制好啊,不然显示的内容值将不会是想要的结果。然后合理的操作会让它可以显示出我们需要的图形,再加上各种优点,它被用于单片机的开发使用更大,被广泛应用。LCD1602显示流程图如如4-7所示:入口入口初始化LCD1602不检测写入数据检测忙信号获得现实RAM地址延时延时返回NY图4-7LCD1602初始化流程图关于液晶显示的初始化编程实现,首先要将通道选择好,然后使它使能,这样在后面配置好其他引脚后,便可以通过通道将采集数据接受和发送。然后将引脚GPIO_Pin0-7的引脚的输出设置为推挽输出,并将它的输出速度设置为50MHZ。然后将一个通道GPIO_Init初始化掉,之后将GPIO13-15的输出也设置为推挽输出,输出的频率依旧是50MHZ。通过通道初始化掉后,便要根据引脚13-15将寄存器对应的位置初始化掉,将GPIOC->BRR,GPIOC->BRR,GPIOC->BSRR配置好后,先将液晶屏关闭,然后清屏,最后设置好光标的移动设置。关于液晶屏的显示和初始化,如果配置不好液晶屏的初始化数值的话,在显示时将会发生数据的显示不正确和显示的排列方式没有达到预期的结果,所以在针对于它的配置时,需要确保并且肯定的让它的配置函数和GPIO通道,以及引脚的初始化等都按着需要的请设置。而不是当在测试数据的AD转换由单片机传送过来由液晶屏显示时,出来乱码和非正常显示。初始化完成后,通过函数LCD_Write_Data将数据放入在函数内部处理好的对应位置,在这其中依旧要注意液晶显示器对应寄存器位置的设置,因为寄存的数值会直接影响操作的成功与否,之后要处理便是液晶显示器字符串数据的对应位置的写入,因为它的特性,所以需要将显示地址确定好,固定好它的第一行和第二行的输入数据地址值。输入的数据时要处理好数字转字符串的装换,然后再将结果通过LCD_Write_String函数将数据写入显示。最后,直接通过传入一个值将指令寄存器的数值更改实现清屏。4.5ESP8266无线通信实现流程本次设计采用的无线通信模块为ESP8266,需要通过了解单片机的串口通讯,然后使用对应的AT指令来实现对于数据的无线传输,该功能主要是利用WIFI模块的热点模式。给它连接3.3V。其中GND接地,TXD引脚用来接收数据,RXD引脚用来发送数据。就可以和单片机进行通信,并且手机端可以接受到当前WIFI发送的数据信息。WIFI模块的配置要求确认好对应函数的使用时,是否正确地使用,然后对于单片机串口通讯指令的使用是否是按照对应规范要求区编写的,如果没有按照规范要求去随意使用,将会连接不上接受方,也就无法实现数据通讯的正确交互。要时刻的确保数据交互时,发的一方发送的数据与接收到接受的数据是一致的。首先初始化它的波特率为115200。然后通过函数voidesp8266_init(),来配置WIFI运行模式为AP热点模式,确保使用时,用户可以通过设置好的WIFI热点进行与设备的连接,完成数据的交互来往。如果要确保数据传送前接收方是正确的接收方,可以设置的好WIFI的名称和密码来确保正确的接收方连接,通过函数voidesp_ap_mode(void),Uart1_SendStr("AT+CWMODE=2\r\n");来设置wifi名称和密码,这样与用户在连接时,需要找到对应的WIFI以及将密码输入正确,才实现连接的成功建立,并且不用担心接收方是不是要接受的对象,因为连接方即为接收端,接下来便可以开始进行使用函数实现数据的发送处理,我们便可以简单地实现接受信息。Uart1_SendStr("AT+CWSAP=\"TEST\",\"zhujing\",1,3\r\n");该函数通过串口把指令发送出去,Uart1_SendStr("AT+CIPMUX=1\r\n");还函数则是建立多路连接模式(这种设计提供了可由一个或者是多个ESP8266向手机端发送数据)。而Uart1_SendStr("AT+CIPSERVER=1,8080\r\n")函数则是用来配置端口号为8080。开始发送数据用voidesp_send_buf(unsignedcharconn_id,char*buf,unsignedcharlen)函数。函数printf("AT+CIPSEND=%d,%d\r\n",conn_id,len)输出数据。strx=strstr((constchar*)Usart1RecBuf,(constchar*)"SENDOK");函数用来实现发送完成。ESP8266通信流程图如图4-8所示:开始开始STM32配置引脚STM32配置引脚WIFI串口初始化WIFI串口初始化设置通信波特率为115200设置通信波特率为115200开启通讯方式开启通讯方式NN是否设置为AP热点模式是否设置为AP热点模式YNYN设置端口号和密码设置端口号和密码建立手机端连接建立手机端连接是否发送数据是否发送数据YY发送完成发送完成返回返回图4-8ESP8266无线通信流程图4.6温湿度检测实现流程4.6.1传感器的介绍DHT11电气参数如下:表4-1DHT11传感器电气参数图型号测量范围测湿精度测温精度分辨率封装DHT1120-90%RH0-50℃±5%RH±2℃14针单排直插表4-2DHT11传感器电气参数图参数条件MinTypMax单位供电DC355.5V供电电流测量0.52.5mA平均0.21mA待机100150uA采样周期秒1次(2)DHT11的引脚定义表4-3DHT11传感器引脚定义图Pin引脚名称引脚功能1VDDDC3.3-5.0V,电源正极2DATA穿行电路,单总线3NC悬空4GND接地,电源负极(3)DHT11的典型电路图4-9DHT11传感器电路图DHT11的供电电压一般在3欧姆到5.5欧姆之间,DATA引脚在有必要时,可以将它是电路增加一个5000欧姆以上的电阻,该电阻为上拉电阻。它的并联安装回增加它的准确性,增加一些其他因素的阻扰。4.6.2传感器控制时序它的数据格式由温度和湿度分别占16bit,然后还有8bit的检验位。对于它的控制时序。如果要实现对DHT11传感器的控制和数据的读取,需先学会分析DHT11的控制时序。时序主要分为三部分:1:触发DHT11采集数数据;2:读取数字0;3:读取数字1;。触发DHT11采集数据图4-10DHT11采集数据图(2)数字0信号时序当DHT11输出数字0时,单片机会一直读取到的信号为50us的低电平,之后单片机改为26-28us的高电平。图4-11DHT11传感器数字0信号图(3)数字1信号时序当DHT11输出数字0时,单片机读取到的信号为50us的低电平,之后为70us的高电平。图4-12DHT11传感器数字1信号图由此可知DHT11输出数字0和数字1的区别在于高电平的时间,当单片机可在读取到高电平后,延时30us后,识别此时总线的电平,高电平为数字1,低电平为数字0。(4)总时序图图4-13DHT11传感器总时序图对于传感器温湿度采集程序的初始化,主要针对于DHT11的初始化,需要设置好它的应答脉冲,然后数据实时监测的扫描频数。通过ADC装换来实现对于它检测的数据转换,然后针对读操作的实现等步骤,其程序如下。首先ADC通道捕获的数值,需要取得多个值然后取得平均数,以确保数据的精确性,将连续取20次的平均值装换成为百分比0~99之间,通过ADC的值乘以99,然后除于4096,还要确保数据的范围不能超过99,然后再将这个数值通过编写的函数传入,然后按照数值的排序将对应的位的数值取出,作为温度值(范围为0~50°)和湿度(范围值为20%~90%)。对于I/O串口,要保证传入值小于16,用于DHT11的复位。在等待DHT11的回应时,需要将其数据接收端口拉低40~80us处理,然后再次拉高40~80us处理,这些处理主要是为了实现DHT11接收数据的存在与否,当函数返回1,表示未检测到DHT11的存在。当返回值为0,则表示存在。关于刚才的时间延时处理时为了,读取一位一位数据时,等待高电平变为低电平,然后再变为高电平。检测数值通过ADC转换后以数字的形式输出给液晶显示器处理,流程图如图4-14所示:开始开始初始化DHT11应答脉冲合并,算出温湿度数值发出转换命令延时等待温湿度转换发出扫描命令应答脉冲发出读操作NNYY图4-14温度检测流程图4.7烟雾检测实现流程当烟雾采集到当前的数据后,会把模拟量传输给单片机进行处理。对于单片机内部ADC配置引脚后,需要经过函数Adc_Init(void)来进行初始化后。将AD配置的数值都配置好,这样在模拟量转换时,才会按着需要的转换过来[15]。之后需要通过函数ADC_DeInit(ADC1);来选择数据通道,这样在接受数据和获取数据时,直接从配置好的通道里直接获取就行了。之后经过其他的一些主要配置完成后,将GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;模拟收入引脚设置好。ADC_Cmd(ADC1,ENABLE)函数用来指定AD使能引脚,使得数据在接受时能通过,以及获取。函数ADC_ResetCalibration(ADC1);主要用来实现复位的校准,主要为了防止数据接收完后,之后的再次获取的情况处理,防止数据的再次获取时,没有校准导致数据的丢失,和数据的获取不是指定的数据。ADC_StartCalibration(ADC1);然后进行读取数据,u16Get_Adc_Average(u8ch,u8times)2个字节为16位,进行一位一位读取,把当前读取的信息转换为数字量,换算成当前的电压值。returntemp_val/times;得到当前烟雾浓度。流程图如下所示:开始开始单片机配置引脚单片机配置引脚产生时钟信号产生时钟信号选择数据选择数据NN判断AD是否转换完毕判断AD是否转换完毕YY读取字节读取字节一位一位读取数据一位一位读取数据结束,计算当前电压值结束,计算当前电压值通过当前电压,得到转换数据,显示当前烟雾浓度通过当前电压,得到转换数据,显示当前烟雾浓度返回返回图4-15烟雾检测流程图4.8GSM短信交互实现流程GSM便是全球移动通讯系统,它的标准在我们生活中依然已经扮演着一个不可获取的角色。它的信令和语音信道都是数字式的。可以通过AT指令组合来实现信息的通信,这无疑也在本次设计中,当报警提示超过局域网内后,无法处理及时的预警报警功能,因为它通过短信有AT指令发送到指定用户的手机接收端,实现来超远距离的提示。一般来说,与GSM模块的通信速度为19200bps。数据传输采用串口通信,通过相应的指令进行操作。表4-4AT指令表AT+CIMI得到手机IMSI号码AT+COPS网络运行商AT+CSCA短信中心号码AT+CPMS选择短信存储地点,可选择ME(SIM卡)和MT(机身)AT+CMGL列出指定状态的短信息的PDU代码AT+CMGR列出指定序号的短信息的PDU代码AT+CMSG发送短信AT+CMGD删除指定的短信AT+CMGF短信格式,分为Text模式和PDU模式AT+CNMI设置新短信息通知电脑端AT+CSCA短信中心GSM采用文本模式来进行数据的传输。短信发送和接收,SIM800模块进行短信的读取与发送。可以通过不同的AT指令来对于不同操作进来输入执行。AT+CNMI:可以用来为您的手机设置一个新的消息指令。发送AT+CNMI=2,1,设置为一个新消息的提示,当收到一个新消息,且SIM卡不满的情况时候,sim800模块将自动返回一个数据发送给一个串口,如:+CNMI:"sm",1,表示该数据已经接受到了新的消息,并将其存储在一个SIM卡的位置1。GSM数据通信主要是串口通信,首先需要打开单片机定时2,通过函数voidUart_Init(unsignedintbaud)将串口进行初始化,选择定时器2并且将定时器2的配置设置为,TL2=RCAP2L=(65536-(UART_FOSC/32/baud));设置波特率为9600。当定时器2开始运行T2CON=0x34;打开总中断和串口中断ES=1;EA=1;初始化AT指令:Uart_SendString2("AT\r\n");随后通过延时函数delay_ms(100)将时间延后,然后使用对应的at指令根据芯片手册编写对应的指令命令。至于串口数据发送函数Uart_SendString2("AT+CSCS=\"GSM\"\r\n")处理便是将规范好的字符串打包发送过去;随后经过delay_ms(100)延时;Uart_SendString2("AT+CMGF=1\r\n")之后再次延时处理;写入手机号码Uart_SendString2(number);再次延delay_ms(100);参数number为手机号码,延时delay_ms(300);然后开始准备发送短信,依旧还是通过函数Uart_SendString2(content)进行数据的交互以及发送;发送当前需要发送的短信内容,当不再发送数据时,需要对接收方有一个通知,就需要通过函数Uart_SendByte(0x1A)来发送结束符号以达到告知对方,自己发送大的有用数据已经完成。开始开始选择定时器2选择定时器2串口初始化串口初始化打开总中断,和串口中断ES=1;EA=1;打开总中断,和串口中断ES=1;EA=1;初始化AT指令,装载发送短信号码初始化AT指令,装载发送短信号码NN是否发送短信是否发送短信YY返回返回图4-16报警流程图来看下它重要的几个函数实现过程,首先设置标志,接受开始的标志和GSM处理标志gsm_rev_start,gsm_rev_okflag。它们的初始值为0。然后接下来看串口中断函数的实现过程:if(USART_GetITStatus(USART3,USART_IT_RXNE)!=RESET){ if(Rx3Counter>=USART3_RXBUFF_SIZE)Rx3Counter=0; Usart3RecBuf[Rx3Counter++]=USART_ReceiveData(USART3);//此时便可以接受模块的数据 ch=USART_ReceiveData(USART3); if((ch=='O')&&(gsm_rev_okflag==0))//接受到的字符为字符‘0’时,表示便开始接受数据 { gsm_rev_start=1;//将开始接受标志置位1 } if(gsm_rev_start) { if(ch=='K')//如果收到字符‘K’,说明GSM相关操作已经执行完毕 { gsm_rev_okflag=1;//此时完成标志位变为1 gsm_rev_start=0; } }}if(USART_GetFlagStatus(USART3,USART_FLAG_ORE)==SET){USART_ReceiveData(USART3);USART_ClearFlag(USART3,USART_FLAG_ORE);}USART_ClearITPendingBit(USART3,USART_IT_RXNE);然后看它的AT指令模块,因为GSM的实现,AT指令起到了决定性的作用,可以通俗点认为它相当于一套协议,防止别人解析,只有按着它的方式执行才可以实现你要实现的需求。voidgsm_atcmd_send(char*at)//GSMAT指令发送函数{unsignedshortwaittry;//局部的延时变量do{gsm_rev_start=0;//这个也是那个接受标志,这里置为0gsm_rev_okflag=0;//同时将接收完成标志清零waittry=0;//延时变量清零uart3_send(at,0xFF);//串口发送内容的函数while(waittry++<3000)//延时等待接受的数据返回值{if(gsm_rev_okflag==1)//等待OK返回值{return;//退出}delay_ms(1);}}while(gsm_rev_okflag==0);}最后再看下它与指定手机之间的交接函数,因为该函数的实现,让STM32的数据能通过短信的方式发送到指定的手机上,已达到报警提示作用,函数实现如下:voidgsm_send_msg(constchar*number,char*content){u8len;unsignedchargsm_at_txbuf[48];//GSMAT命令的缓存区字符串,也就是最终发送到手机端的信息字符串。memset(gsm_at_txbuf,0,48);//使用时,要时刻记得将该缓冲区清零,防止指令的错误。strncpy(gsm_at_txbuf,"AT+CMGS=\"",9);//将AT+CMGS=\"¸复制到gsm_at_txbufmemcpy(gsm_at_txbuf+9,number,11);//将手机号码赋值到AT+CMGS=\"的后买你len=strlen(gsm_at_txbuf);//获取gsm_at_txbuf字符串的长度gsm_at_txbuf[len]='"';//AT+CMGS=\"gsm_at_txbuf[len+1]='\r';gsm_at_txbuf[len+2]='\n';//gsm_at_txbuf最终格式为AT+CMGS=\"手机号码\"\r\n"uart3_send(gsm_at_txbuf,0xFF);//发送需要接受短信的手机delay_ms(300);uart3_send(content,0xFF);//发送短信的内容delay_ms(10); USART3_Sned_Char(0x1A);//发送结束符号delay_ms(10);}通过上面的几个函数便可以实现数据以短信的方式发送到手机端。

5系统的调试与运行硬件通电初始化如下如图:图5-1系统初始化图手机APP的WiFi连接如下图:图5-2连接WIFI完成连接后的实时接受信息如下图:图5-3连接成功并接收数据按键功能掉试图如下:图5-4湿度监控显示图5-5温度监控显示报警时WIFI、GSM实现如下:图5-6WIFI报警数据接收图5-6GSM报警数据发送图5-6GSM报警数据发送成功图5-6GSM报警手机短信接收

6总结对于基于STM32的智慧消防系统的设计与实现,本人熟悉项目的整个过程和框架。以STM32单片机为核心,设计并实现了各种传感器。我们要严格保持读写顺序当对温湿度传感器进行编程时。烟气浓度的处理与温湿度数据的处理相似。在编程无线模块时,我们要设计好当向手机发送WIFI请求后,编程接受程序要一直等待返回信号。考虑好当传感器没有很好地接触或断开,它就不会提供返回信号,这时程序就会陷入死循环,这是我们要重视的一部分。最后的GSM处理是指定移动电话的消息发送处理。我们需要处理的是将传感器获得的值通过GSM以字符串的形式发送到软件设计和编程中指定的手机上。整个项目中,我感觉重要的便是数据的精确检测然后处理,因为整个项目的实现和通知,便是建立在这些设计好的数值检测范围内的通知。所以对于温湿度传感器DHT1和烟雾浓度传感器MQ的便是最重要的部分。自己要仔细的查看它的实现过程以及数据检测保存寄存器,然后便是对于已经检测好的数据进行获取和处理与其他模块交互。其次便是按键的处理问题,按键的消抖实现能让让用户在使用按键时不会产生数据问题,处理方法便是用中断处理实现对于每一个按键引脚中断处理。然后将修改值与原值实现交换。参考文献[1]蒋宇,夏静.基于STM32与GSM的火箭发射动力学参数测试系统[J].电子设计工程,2020,28(16):179-183.[2]洪树亮.基于STM32F103住宅智能防火防盗报警系统的设计[D].兰州交通大学,2015.[3]赵松玲.GSM智能模块远程监控系统设计[J].南方农机,2020,51(12):151.[4]刘振.基于STM32智能家居的无线网关设计与实现[D].浙江理工大学,2017.[5]G.W.Yang,Z.Zhang,X.F.Zhang.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论