《基于单片机的危险气体远程检测报警系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的危险气体远程检测报警系统设计.docx(35页珍藏版)》请在课桌文档上搜索。
1、摘要IAbstractII绪言31控制系统设计51.1 系统方案设计51.2 系统工作原理52硬件设计62.1 主电路62.1.1 单片机最小系统62.1.2 STM32F103单片机62.1.3 晶振电路82.1.4 复位电路82.2 按键控制电路92.3 报警电路102.4 LCDl602液晶显示电路IO2.5 ESP8266模块电路112.6 传感器模块电路113软件设计133.1 系统主程序设计133.2 系统子程序设计133.2.1 LCDI602显示设计133.2.2 ESP8266无线通信设计133.2.3 按键子程序设计153.2.4 气体浓度检测程序设计163.2.5 报警程
2、序设计16结论17参考文献18附录源程序清单20致谢26摘要为了尽早发现和预防各类危险气体减少对人的危害,保护自己和个人或公共财产的安全,需要使用自动报警器对人进行预警。本文中作为危险气体检测系统的主要技术采用了传感器和单片机,该系统基于STM32F103单片机无线数据传输系统和通过气体传感器MQ-4对危险气体的浓度进行监测,并通过AD模数转换模块将模拟量转换为数字值,再发送给单片机,LCD1602液晶显示屏显示当前检测到的气体浓度值,单片机通过ESP8266无线模块和手机进行传通讯将当前数据发送至手机上显示,通过按钮设置气体浓度报警上限数值,当气体浓度超过上限值时,启动蜂鸣器进行报警。实现了
3、液晶显示危险气体的浓度和报警的功能,对气体检测报警系统的实现技术展开了较为深入地研究,为有害气体监测技术的实现提供了参考。关键词:气体监测;传感器;单片机;无线数据传输AbstractInordertofindandpreventallkindsofdangerousgasesassoonaspossibletoreducetheharmtopeople,protectthemselvesandpersonalorpublicpropertysafety,itisnecessarytouseautomaticalarmtowarnpeople.ThesystemisbasedonSTM32F1
4、03microcontrollerwirelessdatatransmissionsystemandgassensorMQ-4tomonitortheconcentrationofdangerousgases,andthensendtheanalogquantitytodigitalvaluethroughADdigital-to-analogconversionmodule,thensendtothemicrocontroller,LCD1602LCDdisplaytodisplaythecurrentdetectedgasconcentrationvalue,themicrocontrol
5、lerthroughESP8266wirelessmoduleandmobilephonetransmission,sendthecurrentdatatothemobilephonedisplay,settheupperlimitvalueofgasconcentrationalarmthroughthebutton,whenthegasconcentrationexceedstheupperlimitvalue,startthebuzzerforalarm.Theliquidcrystaldisplayfunctionofhazardousgasconcentrationandalarmi
6、srealized,andthetechnologyofgasdetectionandalarmsystemisstudiedindepthtoprovidereferencefortherealizationofhazardousgasmonitoringtechnology.Keywords:gasmonitoring;thesensor;singlechipmicrocomputer;wirelessdatatransmission.绪言为了加快经济的发展,人们几乎无休止的开采资源,破坏环境,使本来就已经污染严重的环境再次受到了重大的影响,人类的生存环境变得十分恶劣,人们面临着环境污染不
7、断的严重问题。因此,为了与自然和谐相处,我们迫切需要保护自然环境。自从重视保护环境以来,人类开始利用高科技产品监测自然环境的状况,寻求环境问题的改善和解决方法。危险气体是必须消除的重要污染类型之一。随着化工厂数量的增加,化工厂排放的危险气体的种类增加,设施和仓库泄漏事故的增加,从安全、环保等方面考虑,开发一种检测危险气体的控制器和自动报警装置非常重要。随着单片机技术的快速发展,利用单片机开发的检测设备越来越小,种类也越来越多,但用于气体检测的设备却越来越少。因此,有必要设计一种基于单片机的危险气体检测系统。本系统设计的危险气体监测系统通过检测被测气体的浓度,当气体浓度超过规定的标准值时,即使用
8、蜂鸣器进行报警。当检测的气体浓度小于报警值时改变报警标准即不报警。人们可以通过超过正常气体浓度规定的标准值时报警器发出的声音察觉到危险从而避开有可能发生的灾害和及时解决危险气体浓度过高引发的问题。本次设计是基于STM32F103单片机的气体浓度检测系统,通过MQ-4传感器检测当前环境中甲烷气体的浓度,收集到的模拟值通过AD模块转换成数字格式,并传输到单片机,通过LCD液晶屏显示出来。当气体浓度超过最高限值时,蜂鸣器就会被单片机控制开始报警。此外单片机采用ESP8266模块和手机进行通信,将检测到的数据发送给手机端,并展现在APP上。本设计具备以下功能:(1)使用传感器收集环境数据并将其模拟值转
9、换成数字格式;(2)在单片机中处理收集到的数据,实时监测气体浓度;(3)实现串口通信和液晶屏的程序设计,LCD液晶屏显示实时检测到的危险气体的浓度值;按键设置报警气体浓度值,超过报警值时,蜂鸣器发出警报;单片机和手机之间无线通信,在手机上展示数据。1控制系统设计L1系统方案设计本次设计主要是用来检测有害气体,具有报警功能的设备。目前化工厂内的工作环境并不理想,通过实习我发现整个厂区内的危险气体如甲烷等浓度特别高,工人作业时有害气体吸入量特别的大,而且一旦气体泄漏后极易造成火灾、爆炸等事故,危害极大。所以,本设计应当实现以下三项功能:检测室内的危险气体浓度、达到对应浓度报警、手机远程显示室内气体
10、浓度值。本设计的完成,整体控制方案的选择尤为重要,根据上面提到的要求,下面列举出几种可行的控制方案,并进行对比,选出最适合本设计的方案。方案一:采用单片机作为控制器,将功能部件集成在芯片上,集成度高、体积自然小、内部总线结构的单片机,减少了芯片之间的通信,使其具有可靠性和抗干扰能力。由于单片机的体积小,可以很容易采取电磁屏蔽或密封措施,适合在恶劣环境下工作。而且,单片机指令丰富,功耗低,电压低,易于生产便携产品,易于扩展,可靠性高,价格低,经济效益高,能达到预期的功能。方案二:使用集成电路作为控制器,电路很简单。由于集成电路的引入,集成电路简化了设计、调试和安装完整电路。集成电路具有很高的可靠
11、性优势。但是集成电路很难理解。许多集成电路指标在修复和拆卸方面非常困难,修理的成本也会增加。当集成电路内电路中的部分电路出现故障时,通常必须整块一起修理。综上所述,集成电路如果出现故障不方便拆卸与修理,而单片机既能满足本设计所要实现的功能,又具有低成本的优点,故选择方案一。L2系统工作原理本次设计采用LED1602液晶显示器显示采集到气体浓度值,单片机作用为STM32F103,MQ-4传感器时刻检测当前环境气体浓度。按键用来设定气体浓度报警上限值,通过模转换将采集到的气体浓度值模拟值转换为数字量,并传输给单片机进行计算。ESP8266无线模块用于单片机和手机之间的通信,将采集到的数据无线发送到
12、手机端进行展示。包含两个按键,用来设置气体浓度报警上限值。危险气体浓度值大于设置的上限时,单片机驱动三极管控制蜂鸣器进行报警。系统的工作原理图如L1所示。气体浓度检测模块无线数据传输模块按键电路单片机处理单元电源电路显示模块蜂鸣器报警图1.1系统工作原理图2硬件设计2.1 主电路2.1.1 单片机最小系统单片机最小系统由晶振电路、STM32F103芯片和复位电路组成。只要有这三者存在,单片机就可以正常的工作。1单片机最小系统框图如图2.1所示。复位电路单片机辅入,输筱备电漆时钟电路图2.1单片机最小系统框图2.1.2 STM32F103单片机STM32F103单片机是一款低功耗、高性能的微控制
13、器,是STC公司早期生产用于工业控制的单片机。其作用是控制各种传感器和外设,自行计算处理得到的数据和信号,并进行相应的操作2,在工业生产中起到大脑的作用。对于本次设计选择的是STM32F103C8T6单片机。此单片机和51系列相比多了很多功能,不但运行速度比51单片机要快很多,自带2个AD转换,方便我们在设计烟雾的时候免去了需要加外部ADC进行转换,非常方便;STM32有着很强大的通信功能和控制功能。这一点是51单片机无法比拟的。因为51单片机只有1个串口进行通信,而32单片机具有5个串口进行通信,所以对一些要求用串口进行通信的模块而且就不需要通过CD4052等双串口模块来转换,所以这一点被市
14、场上广泛的运用,32单片机因为本身可以进行多种不同的时钟模数来进行工作,所以在功耗要求比较严格的产品中占有一席之地。STM32特点:(DSTM32C8T6系列的起振晶部分采用了RTC,低负载的方式,而没有像传统的比较廉价的圆柱晶振。(2)引脚个数为48个。(3)工作频率为72MHZ。(4)单片机具有3个普通定时器和1个高级定时器。(5)单片机具有2个2位/16通道的ADC模数转换。(6)使用了3.3V稳压芯片,可以保证最大输出30OMA电流。(7)支持ST-LINK和JTAG调试下载。(8)存储资源为64kbbyteFLASH和20byteSramoSTM32实物图如图2.2所示。图2.2ST
15、M32F103C8T6实物图电源指示灯LED(PWR通常为红色):如果电源指示灯亮亮说明单片机正常运行,如果较暗或者闪烁,表示此单片机可能存在故障。(2)用户LED(PCl3):这个功能的使用大大的方便了我们进行一些比较简单的功能测试,如单片机的运行状态等,方便初学者进行更好的测试。(3)单片机上采用了跳帽的方式,我们可以对stm32进行3种编程方式。如用户的SARM、闪存和系统的存储器。(4)为单片机的复位电路。(5)8M晶振:主要是用于设置单片机系统的频率为72MHZ。(6)32.768KHz晶振:可供内置RTC使用,避免了需要专门的时钟芯片进行定时器处理等。2.1.3 晶振电路晶振电路也
16、是我们常说的时钟电路,整个系统处理信号和其它各部分运行也是一个频率,晶振电路就是为它们提供一个稳定的振荡频率,使系统各部分保持同步。本设计主要是采用两个30UF的电容和一个12MHZ的晶振组成。采用了外部时钟方式的配合方法,电容帮助晶振起振使电路可以正常工作。单片机的XTAL2和XTALl两个接口分别于晶振上的两个引脚相连。晶振电路原理图如图2.3所示。三图2.3晶振电路原理图2.1.4 复位电路复位电路的用途:在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能用。原理图如图2
17、.4所示。VCC宁C1R1IOKIOuFTRST图2.4复位电路原理图2.2 按键控制电路在本设计中,一共有2个按键,起到调节上限值的作用,是系统可操作性的保证。作为输入端,按键的单片机控制引脚默认为高电平,当按键按下后,单片机的相关引脚则变成低电平,进而实现对系统的手动输入。按键的一段连接单片机的双向I/O口,另一端接地。当按键开关处于张开状态时,I/O引脚和地断开,此时该I/O引脚处于高电平状态4。当按下按键时,I/O引脚接地,此时高电平置低电平,并返回一个低电平信号给单片机。按键开关检测的原理是高低电平检测。按键切换难免会因其切换时间而导致错误,因此在编写按键函数时要另外去写一个去抖函数
18、,以提高其准确性。系统通过按键设置计算出的气体浓度报警上限值。按键1代表增,按键2代表减。图2.5为按键控制电路原理图。(OKIK2干图2.5按键控制电路原理图2.3 报警电路设计报警模块是为了通过蜂鸣器来触发警报,当烟雾传感器检测到的烟雾浓度超过设定烟雾报警上限值时,STM32F103单片机控制三极管驱动蜂鸣器进行蜂鸣,起到报警的作用。蜂鸣器的一端连着三极管的e引脚,另一端接地,蜂鸣器电路如图2.6所示。三极管使用三极管PNP,起到放大电流和电平特性的功能,因为单个电路中的电路太小,无法提供足够多的触发信号所需的电流,三极管放大电流以后,电流被放大了200倍,足够触发信号,蜂鸣器报警。15同
19、时三极管的上拉电阻起到限流的作用,防止电流过大从而击穿蜂鸣器。图2.6蜂鸣器电路原理图2.4 LCDl602液晶显示电路本次设计采用LCDI602液晶显示器作为输出显示器。LCD1602的作用是显示文本,本设计需要有两行文本显示,并且不需要彩色。第一行显示当前检测的气体浓度,第二行显示设定气体浓度的阈值。使用LCD1602可以满足本计的全部需求。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电。它需要5V的电压来进行工作,通过改变电压达到控制区域显示,通过单片机输出的数字信号在显示屏上显示出我想要的字符。显示屏具有2行输出,每行16个字
20、符,能够同时显示16义2即32个字符。图2.7是LCD1602液晶屏的引脚图,从图中可以看出,引脚1是电源接地引脚,和单片机的GND联通。引脚2是VCC电源输入引脚,其工作电压为5V。引脚3VO引脚可以调节显示屏的显示亮度,引脚4RS引脚用于寄存器的选择,高电平时作为数据寄存器,低电平时作为指令寄存器,引脚5是RW读写信号,用于数据的读写。引脚6EN引脚为使能端,高电平读取信息,低电平执行指令。引脚7脚是8位双向数据段口,引脚15和引脚16是背景灯的电源引脚。在和单片机进行通信时,和Po口进行连接,中间要有上拉电阻进行连接。23本次设计LCD1602液晶显示屏上展示检测到的气体浓度值,并展示气
21、体浓度上限值的设置过程。其引脚连接图如图2.7所示。液晶显示电路图图2. 7 LCD16022. 5 ESP8266模块电路这部分无线通信使用ESP8266ESP8266是一个非常强大的UARTWiFi无线串行模块作为数据传输模块。数据传输模块,耗电量非常低,价格非常低,体积非常小,允许嵌入任何具有强大的LWlP控制系统的产品,支持三个AP、STA、AP+STA模型,和简洁而有效的AT指令。ESP8266的工作电压为3.3V,而单片机的工作电压为5V,足够达到其工作电压的要求,还具有价格便宜、体积小的优点。在本次设计中用于单片机和手机之间的无线通信,通过WlFl模块,单片机将气体浓度值发送给手
22、机端,最后显示在APP上。图2.8是ESP8266模块电路图,从图2.8中可以看出,1号引脚连接单片机的AlO引脚,5号引脚连接单片机的A9引脚,而2号、4号和8号引脚接地。无线图2. 8 ESP8266模块电路2.6传感器模块电路烟雾探测器用于探测场所内的烟雾浓度,也可用于报警,烟雾报警器采用的是离子式烟雾探测器。它广泛应用于各种信号系统。离子烟雾传感器是稳定可靠的,技术先进的传感器,比气敏电阻类传感器性能更佳。8烟雾传感器是用来检测当前位置的烟雾浓度,以达到防灾的目的,烟雾传感器的内部采用的是离子式的烟雾感应,在各种报警系统中都得到了广泛的应用。离子烟雾传感器具有稳定可靠的优点,传感器技术
23、先进,气敏电阻式报警器的性能远不如离子烟雾传感器好。石油化工厂中排放出的危险气体是本系统所针对的目标,这些气体中绝大多数含有甲烷,所以选择MQ-4传感器,其对甲烷具有很高的灵敏度。以下是该传感器特性:(1)输入电压范围:50.2VDC;(2)检测浓度:30010000ppm(甲烷);(3)电流消耗:150mA;(4)使用寿命:5年;(5)工作温度:-1050oC;(6)存储温度:-2070oCo(7)尺寸大小:32mm20mm22mmo气敏式烟雾传感器的工作原理:使用空气中电导率较低的二氧化锡,当传感器所在的环境中存在被测的甲烷气体时,传感器的电导率和气体浓度成线性化比,通过数模转换模块,就可
24、以将信号量转换成数字量,从而输出给单片机,最终在LCD1602液晶显示屏上显示出来。其电路原理图如图2.9所示。P - 4 - 二-4BHBAHA 0IHv 温图2.9传感器的电路原理图3软件设计3.1 系统主程序设计系统的主流程图如图3.1所示。各个模块开始工作开始,实时检测甲烷气体浓度值,并进行相应的报警操作。启动的步骤为:ESP8266wifi模块初始化,MQ-4传感器接收到目前的气体浓度,按下按键设置报警上限。当超出上限值时,单片机驱动三极管来控制蜂鸣器触发警报,单片机将检测到的气体浓度值数据通过ESP8266wifi无线模块发送给手机端进行显示。图3.1系统流程图3.2 系统子程序设
25、计3.2.1LCDl602显示设计LCD1602的作用是显示文本,本设计需要有两行文本显示,并且不需要彩色。第一行显示当前气体浓度,第二行显示设定的气体浓度上限的值。LCD1602液晶显示器一旦开启,就会与单片机进行双向通信。单片机控制显示器的亮度并显示内容,过一段时间后,液晶屏上会显示出检测到的气体浓度值。在设置报警值上限时,根据按键动作改变报警值。单片机控制记录命令的记录引脚显示内容。然后在显示器上执行该命令,并显示内容。LCDl602显示流程图如图3.2所示。LCD初始化LCD清屏返回图3.2LCDl602初始化流程图3.2.2ESP8266无线通信设计当ESP8266模块与单片机模块相
26、连接时,连接到无线模块供电,按下ESP8266开关,电源指示器就会启动。首先串口初始化开始,然后是整体中断,当有输出信号时进入总中断再开启串口中断。在一定时间段中发送检测到的气体浓度具体数值,建立一个串口的工作方式的设置,最后设置定时器的初值。整个流程进行完毕。串口的作用是单片机和ESP8266无线模块之间进行通信,将检测到的气体浓度值发送给手机,并在手机App上实时动态变换。ESP8266无线通信流程图如图3.3所示。ffl3.3ESP8266无线通侑流程图3.2.3按键子程序设计本次设计按键电路功能不多,为设置气体浓度报警上限值。按键的工作原理是检测主程序中的低水平信号,一旦低电平信号被主
27、程序检测到了,单片机就会产生信号中断,并进入按键子程序。两个按键分别起到加和减的作用。在不同页面表示不同的功能。分别用函数执行不同的操作,注意进行延时操作,防止误差。按键程序流程图如3.4所示。减返回S3.4按键程序流程图3.2.4气体浓度检测程序设计利用MQ-4气体传感器对空气中的甲烷气体有较高的灵敏度,当控制器附近的甲烷气体浓度增大时,影响了传感器的电导率的变化,电导率随之增加,将电导率的变化转换为与该气体浓度相对于的模拟输出信号,经过数模转换模块转换成数字量并发送给单片机。图3.5是其流程图。(子程序入口)I浓度检测数模转换发送给单片机.返回图3.5气体浓度检测流程图3.2.5报警程序设
28、计主函数执行后,通过检测来判断是否发生中断,用设定好按键的形式来设定气体浓度的报警上限,检测是否超出了报警上限,通过函数的循环来判断是否超出浓度上限,如果超过,那么蜂鸣器报警。报警流程图如3.6所示:子程序入口K报警是否到达 设置的 上限?图3. 6报警流程图结论通过以上分析本系统控制器方面采用STM32F103C8T6单片机完全符合本设计的控制需求。MQ-4烟雾传感器完成采集室内的甲烷气体浓度,并通过A/D转换芯片ADCO832将数据传递到LCD1602显示屏上,并设定上限值,只要数值超过设置的上限值就会立马报警,从而通知人及时快速到达现场清理甲烷气体,保障室内甲烷气体正常浓度值的操作。具体
29、工作体现在整体电路的设计与制作,系统调试,程序的编写等多个步骤。其中电路设计为重点,本设计通过五个模块达到了检测室内的气体浓度、达到对应浓度报警、显示当前环境下的气体浓度三个功能。并首次通过自己的努力,在AltiumDesignerlO上绘出PCB图。本设计成功完成了采集数据、设定数值和显示屏显示的功能,具有精度高,便于携带,成本较低等优点。通过该系统的每个环节从各个方面展现出这个系统的设计思路以及原理。例如从硬件设计和软件设计方面等等。运用了许多技术比如单片机、传感器、信息的采集和处理等方面,对于不同室内空气环境有着很好的监控作用。通过在工厂内的实地测试,可以正常实现所有操作,所以本设计有实
30、际应用价值,可以应用于化工厂附近的住宅区,生产车间等高污染区域。参考文献1高志远,赵小莉,赵亚运.基于单片机仿真教学的应用分析J.化学工程与装备,2019,1(12):283-2842武文静.电子电路故障诊断与预测技术分析J.计算机产品与流通,2019,2(12):803周澄.基于Matlab的电子电路设计与仿真教学研究J.教育现代化,2019,6(92):214-2154袁嘉噪.LabVIEW电子电路模拟仿真设计J.电子技术与软件工程,2019,5(20):105-1065郭小江.苯气体检测报警器的应用及测量值的不确定度评定J.工业计量2019,29,4(Sl):69-716黄平.基于单片机
31、的液晶(LCD)图文显示系统设计J.通信电源技术2019,36(10):69-707梁丽秀,裴玖玲,孙少杰,周丹.电工电子实习的教学改革实践JJ.科技经济导刊,2019,27(26):1768王福鹏.吸收光谱法气体传感器的背景干扰消除和关键性能提升D.山东大学,20199郑三婷.浅谈PrOteUS仿真软件在单片机教学和电路设计中的应用J.电子测试,2019,8(10):139-14010杨连阜.电路的分析、设计与检修一一“电子产品装配与调试”教学实践与体会几天津职业院校联合学报,2019,21(04):24-2911徐靖,吕洁,吕雪英.电子电路仿真技术在电子应用开发中的作用J.自动化应用,20
32、19,9(01):92-9412唐忠林,甘霖.基于气体传感器的瓦斯浓度监测系统的研究J.卫星电视与宽带多媒体,2019,5(19):35-3613张其方.可燃气体和有毒气体检测系统应用探讨J.石油化工自动化,2018,54(05):15-1814张枫,王必晴,王哈,方凌霄.基于单片机的废气监测系统研究与实现J.福建电脑,2018,34(04):24-2615吴斌,刘榕发.室内空气质量检测分析与报警装置研究J.电子测试,2018(13):18-19+2116鲁刚强.基于液晶显示器的单片机系统设计J.科技资讯,2008:152-25517黄庆华,单片机开发技术与实训M.北京:北京电子工业出版社,2
33、006.(7):1-7418杜洋.A/D转换芯片ADCO832的应用几电子制作,2006(01):44-46.19冯黎.Protel99SE应用入门(一)J.电子制作,2005(05):40-41+50.20武芳,蒋汝根,朱璇.Keil和Proteus联调在单片机教学中的应用实例J.中国教育技术装备,2015(20):47-48.21黄庆华.单片机开发技术与实训M.北京:北京电子工业出版社,2006.:1-7422袁晓溪.基于单片机的LED显示系统D.吉林大学,201523鲁刚强,基于液晶显示器的单片机系统设计J.科技资讯,2008:152-25524GanY,WangH,ShanZ,etal
34、.USERDATAPROCESSINGMETHODANDDEVICE:,W02016000163P.2016.25KimHyoung-Tae.HowtouseKEIL8051CCompiler.Yangseogakpub-lishCompany,2001:1-19附录源程序清单#includeMled.hn#includeMdelay.hn#includensys.h#includeMadc.hn#incIudeMtimer.h#include,usartl.hn#incIudeLCD1602.h#includestring.hu#includeMstdio.hvoidChange_data_
35、handle(VOid);按键处理voidSHOW_AND_BAOJINGHandle(Void)/显示并处理报警u8KEY_SCAN(void);按键函数u8key,PPMJ/按键值,和mq值ul6PPM_MAX=50;/烟雾上限报警值unsignedcharAlann_Buf16=Warning”;/WlFl报警显示unsignedcharbuf18;/WIFl数据发送缓存区串口相关externunsignedcharRxCounter,Usart1RecBuf64;externcharbUsartIRecFlag;ESP8266相关函数defineESP_RECV_PTYPE_NULLO
36、#defincESPRECVPTYPEDATA1unsignedcharcur_conn_id;char*strx=O;voidClear.Buffer(VOid)清空缓存(u8i;for(i=0;i64;i+)UsartlRecBufIil=O;/缓存RxCounter=O;voidesp_apmode(void)ClearBuffer();UartLSeIKiStrCAT+CWM0DE=2IW);char*)OK);strx=strstr(constchar*)UsartIRecBuf,(constwhile(strx=NULL)(Clear_Buffer()UartLSelKIStrrA
37、T+CWM0DE=2rH)delay_ms(500);strx=strstr(constchar*)UsartlRecBuf,(constchar*)OK);*:字符串参数,接入点名称VPWd:字符串参数,密码最长64字节,ASCII:通道号:0-0PEN,l-WEP,2-WPA_PSK,3-WPA2_PSK,4-WPA_WPA2_PSK*/Clear_Buffer();Uartl_SendStr(AT+CWSAP=TEST,12345678”,1,3rn);strx=strstr(constchar*)Usart1RecBuf,(constchar*)OK);while(strx=NULL)
38、Clear_Buffer();UartI-SendStrCAT+CWSAP=V,TEST,V12345678,l,3rn);delay_ms(500);strx=strstr(constchar*)UsartlRecBuf,(constChar*)OK);*AT+CIPMUX=1OK*/Clear_Buffer();UartLSendStrCAT+CIPMUX=ln);strx=strstr(constchar*)Usart1RecBuf,(constChar*)OK);while(strx=NULL)(Clear_Buffer();UartI-SendStitATCIPMUX=lrn);de
39、lay_ms(500);strx=strstr(constchar*)UsartlRecBuf,(constchar*)OK*);)*AT+CIPMUX=1时才能开启服务器;关闭server模式需要重启?AT+C1PSERVER=1,8080OK*/Clear_Buffer():Uart1_SendStr(AT+CIPSERVER=1,8080r,);strx=strstr(constchar*)UsartlRccBuf,(constChar*)OK);while(strx=NULL)(Clear_Buffer();UartLSendStrCAT+CIPSERVER=l,8O8Orn)dela
40、y_ms(500);strx=strstr(constChar*)USartIReCBUf,(ConStChar*)OK);)Jvoidesp8266_init()Usartljnit(115200);Uartl_SendStr(ESP8266Initrn,);UartlSendStr(ATrnM);/模块测试strx=strstr(constchar*)UsartlRecBuf,(const*7ae);deIay_ms(200);if(strx=NULL)(return;)Uartl_SendStr(buf);strx=strstr(constchar*)UsartlRecBuf,(cons
41、tchar*)SENDOK);delay_ms(100);if(strx=NULL)(return;)intmain(void)(ul6test,testadc;delayJnit();延时函数初始化NVICConfigurationO;设置NVlC中断分组2:2位抢占优先级,2位响应优先级KEYgJnitO;RELAYJnilO;TIM2JntJnit(999,72-l);定时器初始化,定时IMS/Tout=(arr1)*(psc+1)Tclk;/Tclk:定时器输入频率(单位MHZ)TOUt:定时器溢出时间(单位us)delay_ms(300);BEEP_DISENABLE();蜂鸣器初始
42、化LCD_Init();1602初始化Adc_Init();/adc初始化esp8266_init();/ESP8266初始化显示报警值LCD_Write_String(0,1,ALARM:%”);LCD1602_writeJong(6.1,PPM_MAX,2);while(l)(test_adc=GeLAdc_Average(ADC_Charmel_9,20);获取通道9的AD值,20亳秒读取一次PPM=test_adc*99/4096;/转换成099百分比PPM=PPM=99?99:PPM:SHOW_AND_BAOJINGHandle()力报警处理并显示Change_data_handle
43、();/按键处理test+;if(test20)esp_send_buf(O,buf,11);/发送数据test=0;delay-ms(l);externu8FLICKER;voidSHOWANDBAOJINGHandle(void)(unsignedcharshow-buf116J;if(PPM=PPMMAX)mq超限(memcpy(buf,AlarmBuf,7);buf7=tI,;buf8=)!if(FLICKER)/显示值闪烁(LCD_WritJString(0,0;”);else(sprintf(show_buf,MQ:%02d%,PPM)LCD_WritJString(0,0,Sho
44、W_bu。;)else(sprintf(show_buf;MQ%02d%,PPM);LCD_Write_String(O,O,ShOW显示mq值memcpy(buf,show-buf,9);buf91=V;buf10=,n,;if(PPM=PPMMAX)超限报警(BEEP_ENABLE();else(BEEPDISENABLE();u8KEY_SCAN(void)8res=0:if(!KEY2)(delay_ms(10);if(!KEY2)(while(!KEY2);/卡死res=2;)if(!KEYl)(delay_ms(10)if(!KEYl)(while(!KEYl)/卡死res=1;.一.returnres;v-;voidChangJdaIaJIandIe(VOid).,u8key;Y.,.-key=KEY_SCAN();读取按键值if(key=2&PPMMAXO)mq上限最小到O(PPM_MAX-=1;LCD1602.writ