![基于GSM模块的可通信智能PM2.5检测设备设计_第1页](http://file4.renrendoc.com/view/113c1cb7a19e147dc8e1a187d66780ee/113c1cb7a19e147dc8e1a187d66780ee1.gif)
![基于GSM模块的可通信智能PM2.5检测设备设计_第2页](http://file4.renrendoc.com/view/113c1cb7a19e147dc8e1a187d66780ee/113c1cb7a19e147dc8e1a187d66780ee2.gif)
![基于GSM模块的可通信智能PM2.5检测设备设计_第3页](http://file4.renrendoc.com/view/113c1cb7a19e147dc8e1a187d66780ee/113c1cb7a19e147dc8e1a187d66780ee3.gif)
![基于GSM模块的可通信智能PM2.5检测设备设计_第4页](http://file4.renrendoc.com/view/113c1cb7a19e147dc8e1a187d66780ee/113c1cb7a19e147dc8e1a187d66780ee4.gif)
![基于GSM模块的可通信智能PM2.5检测设备设计_第5页](http://file4.renrendoc.com/view/113c1cb7a19e147dc8e1a187d66780ee/113c1cb7a19e147dc8e1a187d66780ee5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于GSM模块的可通信智能PM2.5检测设备设计引言如今,我国的现代化发展速度变得原来越快,工业的发展是国家发展不可或缺的一步。但是随着轻重工业的发展带来的环保问题也愈发严重,其中收到人们,尤其是北方人们关注的就是空气中PM2.5浓度过高问题。企业现代化管理水平不断提高,环保意识日益增强,其控制和管理水平的要求越来越高,这就需要一款设备,来实时监控生产环境、作业环境以及日常生活环境中PM2.5含量,同时实现报警功能,来提醒人们进行调节和防范。单片机相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。所以说,一块芯片就成了一台计算机,它的体积小、质量轻、价格便宜,为学习和开发提供了便利。因此,单片机是对此设备起到控制作用最佳选择。同时对我来说,此课题的毕业设计是一次极好的学习与锻炼机会,可以完成本课题的毕业设计及提交合格论文。
绪论论文选题背景及意义论文选题背景目前我国随着发展的脚步逐渐加快带来的几大问题之一就是空气环境的恶化,其中影响空气环境的因素之一就是PM2.5浓度,PM2.5含量过高的问题不仅影响到人们的日常生活,同时还影响到工业生产以及基础设施的运行。尤其是我国北方大部分城市目前深受高浓度PM2.5的影响。所以此论文就以此为背景,设计并制作出一款可以实时检测出当前空气中PM2.5浓度,并在到达一定浓度时可以自动触发报警的设备,从而达到减少对人体健康的伤害以及减轻对工业生产的危害的目的。PM2.5检测意义PM2.5就是细微颗粒物,它能较长时间悬浮于空气中,它在空气中浓度越高空气污染就越严重。虽然PM2.5只是地球大气中含量很少的一部分,但它对空气质量和能见度的影响十分严重。与较粗的大气颗粒物相比,PM2.5粒径小,面积大,活性强,易附带有毒、有害物质,在大气中的停留时间长、输送距离远,所以对人体健康和大气环境质量的影响更大[1]。PM2.5检测仪是用来检测空气中PM2.5含量的专业设备。此设备通过PM2.5传感器来检测空气中PM2.5含量同时将数据传输到检测端,此时检测段再将含有PM2.5含量的数据传输到报警端,报警端将数据与预设值进行比较来判断是否报警。技术现状与发展趋势技术现状目前市场上所能购买到的PM2.5相关产品仅仅只有手持家用PM2.5检测仪以及数款昂贵的工业用PM2.5检测模块(不完整的系统),尚未发现类似的智能型、可反馈的PM2.5预报警系统。其中完整的PM2.5检测报警设备应当包括检测传感器和报警设备两大部分组成,经过上网调查,本课题所使用的单片机最小系统、各检测报警模块从技术角度讲已经是非常成熟的,并且从市场上就可购买得到,本人在编程、硬件制作等方面也进行了学习和进行毕业前的系统培训,具备了一定的应用基础。整体思路:检测端包括PM2.5检测电路与单片机最小系统,通过检测模块将数据传输到CPU进行处理。报警端包括蜂鸣器报警电路、GSM短信发送电路、液晶显示电路、按键电路与单片机最小系统,报警端CPU将检测段CPU传输过来的数据经过处理后显示到液晶屏来实现实时数据显示,同时与预设数值对比来判断是否进行报警。因此从整体来看,本课题从立项到研制都是可行的。发展趋势“PM2.5”这个词可以说是个热点话题,国家更是已经把治理空气质量设立为重点工程,目前北方已经关闭了多家制造以及化工企业,空气质量也已经得到了一些好转。空气治理一定要从每一家企业做起,作为一名普通民众个人防范更是不能少,所以家用以及商用的检测仪和空气净化器变得越来越热门,未来的趋势一定是越来越大众化和智能化,其中最基本的检测报警端正是我所研究和制作的,从此可见必定会有个很宽广的前景。作者所做工作与论文内容安排作者所做工作首先研读毕业设计任务书,根据任务进行检索查阅相关技术文献和资料。明确毕业设计任务书,对设计的设备进行分析与描述。在明确系统功能和技术指标要求的基础上进行系统方案的总体设计。在系统总体方案框架下进行系统硬件设计。通过仿真软件确定设计可行之后进行实体电路的焊接并进行调试。不断修改调试中发现的问题,确定最终作品。论文内容安排第1章为绪论,从当前的社会背景引出此次毕业设计所设计制作的设备。第2章从整体上对设备进行了介绍,阐明了设备的技术要求和总体设计方案,使读者能够对设备的功能有个基本的了解。第3章介绍了主、从机的硬件设计,分别介绍了两端各模块的工作方式以及接线方式。第4章介绍了主、从机的软件设计,详细的说明了设备各部分的工作流程。第5章为实物调试,通过测试确定了最后成品的工作模式。第6章为总结与展望,对整篇文章进行收尾,同时对自身的不足和遇到的问题进行讨论。
系统总体设计系统设计要求本课题所设计制作的设备主要包括以下几大功能:实时检测当前PM2.5浓度并显示到液晶屏。当PM2.5浓度到达一定值时能够实现本地端和远程端报警。可实现无人值守监控,触发报警后设备自动复位,准备进行下一轮检测。可进行人机交互,可自行设定报警值、报警短信显示的内容和接收报警短信的手机号码。设备的检测精度为1ug/m³。系统总体方案通过设计要求把设备分为主机(报警端)和从机(检测端)两部分,其中主机端由以下五部分构成:CPU最小系统蜂鸣器GSM通信模块LCD显示屏5VDC电源输入从机端包括由以下三部分构成:CPUPM2.5传感器5VDC电源输入设备示意图如下所示,图2-1设备示意图设备采用了分离式的设计,将检测端和处理判断端分别设置为从机和主机,通过之间的数据通信实现多台检测设备可分别不同位置的PM2.5浓度,大大的提高了设备工作效率。同时为了保证设备的稳定性在主机和从机两端分别设置一个CPU进行数据处理,通过RS485接口进行两部分通信,同时也在两端各设计了一个输入电源,来保证设备在任意一个电源断开的情况下仍能继续工作[2]。因为此次设计的目的是验证原型机设计和工作的可行性,所以在原型机的制作中为了简化处理,这里只制作了一台PM2.5检测设备(从机)来跟主机通信,而且主机和从机之间并不需要远距离传输数据,所以直接把两端通过数据总线链接的方式连接在一起,将经历主要的投入在软、硬件设计和配合部分。
系统硬件设计原件选型该设备计划使用的各单片机硬件如表3-1所示。表3-1整体硬件列表序号名称型号单位数量1PM2.5检测模块GP2Y1010AU0F个12单片机最小系统STC12C5A60S2个23液晶显示屏LCD1602个14GSM通信模块SIM900A个15蜂鸣器个16USB电源线条17PCB板块28电阻、电容、按钮、导线等个若干主机硬件设计主机电源电路设计电路在设计上由5VDC直流电直接供电给单片机驱动,整个过程中不需要其它的整流、升/降压装置,所以此设备可以直接通过5VDC1~2A的手机充电器或移动电源供电,同时为了保证设备在突发情况下可以继续运行,分别在主机和从机设置了两个并联的电源接口,任意接口接入电源即可对整个电路进行供电。选用此种电源的优势在于这样可以选择固定插座供电和移动电源供电,大大的增加了便利性,双供电口的设计也可以使设备在其中某一接口出现故障的时候保证不间断运行,提高了设备的稳定性。主机CPU电路设计这里给主机选用宏晶科技公司生产的STC12C5A60S2单片机,其引脚如图3-1所示。其引脚详细说明请见附录2。图3-1STC12C5A60S6引脚相比传统普通51单片机具有以下特点[3]:同样晶振的情况下,速度是普通51的8~12倍。有8路10位AD。多了两个定时器,带PWM功能。SPI接口。EEPROM。1K内部扩展RAM。多一个串口。I/O口可以定义,有四种状态。中断优先级有四种状态可定义。综合以上特点,在此认为此型号单片机最适合本次设计的设备,不仅可以提高设备检测的精度,还给两CPU之间的通信提供了便利。起振电路中的晶振选择11.0592MHz的晶振,经过测试可以使检测更加精确[4]。图3-2起振电路复位电路如图3-3所示。主机与从机电路全部通过高电平复位,通电后电容两端电压为5V,电容所连接的电阻接地放电(有电压差),放电后电容两端电压为0。故通电瞬间会产生高电平复位过程。通电过程中,按钮按下后短接电容,使单片机RESET端口产生5V电压,电路再次复位[5]。图3-3复位电路主机显示报警电路设计蜂鸣器报警电路蜂鸣器报警电路如图3-5所示。蜂鸣器端共有3个引脚,引脚1为与单片机通信引脚,引脚2为+5V供电引脚,引脚3为接地引脚。三极管充当电子开关实现电路的通断,此电路为低电平导通。当单片机引脚10输出低电平时三极管导通,+5V电压流向蜂鸣器,蜂鸣器工作。当单片机引脚10输出低电平时三极管断路,蜂鸣器停止工作[6]。图3-5蜂鸣器报警电路液晶屏电路液晶屏电路如图3-6所示。引脚1、2、3所连接的滑动电阻R2为调节屏幕背光亮度旋钮,通过旋转蓝白色调节器调整电阻大小,从而调节屏幕亮度,通常不需调节。P2.0~2.2引脚为命令输送端口。P0.0~P0.7引脚为数据输送端口,单片机从此端口输送显示命令,BLK引脚+5V供电引脚,BLA为接地引脚。图3-6液晶屏电路从机硬件设计从机电源电路设计从机部分在实物中另外设置了一个5V1~2DC直流电源接口,采用并联的方式与主机端电源接在一起,实际使用中,主机或者从机任意一端接入电源即可给整个设备供电[7]。从机CPU电路设计为保证设备的稳定性所以在从机端也设计安装了一个与主机型号完全相同的独立的CPU,主要任务是对传感器采集的模拟量进行AD转换,再将数字量发送到主机端,故从机端CPU起振电路、复位电路等于主机端完全相同,不再赘述。从机检测电路设计按照PM2.5传感器说明书中所写选取150Ω电阻R5[8]。电路连接方法如图3-7所示。图3-7PM2.5检测电路其中开通管一端接地,另一端接收脉冲,这里使用三极管实现此功能。从单片机P13端口输出脉冲,三极管相当于电子开关,高电平时开关开通,电流可以从传感器3号端口流向接地端;低电平时开关断开。电阻R29选取大小为1KΩ,因为产生高电平时电流流过电阻R29使三极管进入饱和状态,此时三极管管压降几乎为零。传感器的工作原理会下一章软件部分进行详细介绍,在此只进行简单的说明,传感器的其中一个引脚会发出下图所示波形的电压,图3-8某引脚发出电压波形图根据此电压会按照传感器说明书中所给的公式进行AD转换,最终换算出当前空气中PM2.5的浓度值[9]。通信电路设计主机与从机通信电路设计如前文所写原型机实物中主机与从机使用的是较为简单的数据总线通信,计划在实际中则使用RS458接口的数据传输协议来进行各从机与主机之间的数据传输,因为RS-485接口具有良好的抗干扰性,具有较长传输距离和更好的多站能力等,综合上述优点就使其成为首选的串行接口,RS-458端口还具有以下特点:电气特性:逻辑“1”以两线间的电压差为+(2-6)V表示;逻辑“0”以两线间的电压差为-(2-6)V表示。接口信号电平降低就不易损坏接口电路的芯片,且该电平与TTL电平兼容,方便与TTL电路相连接。最高传输速率为10Mbps采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。最大传输距离为4000英尺,实际可达3000米,RS-485接口在总线上允许连接多达128个收发器,即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。GSM通信电路设计GSM通讯模块采用SIMCom公司设计制造的型号为SIM900A模块GSM报警电路如图3-8所示,其中GSM模块共有4个引脚,这里只需要用到如图中所示其中3个。图3-8GSM报警电路引脚1为+5V供电引脚,引脚4为接地引脚,引脚2为与单片机通信引脚。因为这里只需要用到此模块的短信功能,所以不需要接其它引脚。
系统软件设计主机软件程序设计主机程序流程图如下图4-1,图4-1主机程序流程图首先对单片机和LCD显示屏进行初始化,Delay_xms(50); LCD_init();Delay_xms(50);LCD_clear();Delay_xms(50);经过延时整个系统稳定后,液晶屏显示初始数据并初始化串口,Display();InitUART();之后反复循环下边的函数来达到实时检测并显示设定值和当前环境中PM2.5浓度值的功能,show_ad7();此函数可以让LCD屏显示实时浓度,之后通过设备上S2,S3两个按键来改变预设报警值,if(!key_P_DOWN) { key_P_DOWN_flag=1; }if(key_P_DOWN&&key_P_DOWN_flag) { SET_N+=10;key_P_DOWN_flag=0;LCD_write_char(7,0,SET_N/100%10+'0'); LCD_write_char(8,0,SET_N/10%10+'0'); LCD_write_char(9,0,SET_N%10+'0'); }if(!key_P_UP) { key_P_UP_flag=1; }if(key_P_UP&&key_P_UP_flag) { SET_N-=10; key_P_UP_flag=0;LCD_write_char(7,0,SET_N/100%10+'0'); LCD_write_char(8,0,SET_N/10%10+'0');LCD_write_char(9,0,SET_N%10+'0');最后通过以下代码来实现GSM短信和蜂鸣器报警功能,首先对检测值和预设值进行比较,if(NOW_N>SET_N)经过比较后进行一个0.5ms的延时,来防止瞬间的干扰,因为空气中的PM2.5随时都在变化,可能瞬间飘过一阵粉尘触发误报警,为了减少这种情况所以设置一个延时函数,Delay_xms(500);经过延时之后再次进行判断,如果检测值大于预设值,则开始报警程序, if(NOW_N>SET_N);{ out1=0; Uart1Send_char("AT+CSCS=\"GSM\"\r\n"); Delay3000ms();//延时3秒 Uart1Send_char("AT+CMGF=1\r\n"); Delay3000ms();//延时3秒 Uart1Send_char("AT+CMGS=\"\r\n");将此处修改为接收报警短信者手机号码即可, Delay3000ms();//延时3秒 Uart1Send_char(sms_text); UART_1SendOneByte(0x1a); Delay3000ms();Delay3000ms();Delay3000ms(); out1=1; }总共经过大约18秒后,整个报警过程结束。单片机程序先对寄存器进行定义,#include<intrins.h>#include"STC12C5A60S2.h"#defineucharunsignedchar#defineuintunsignedint定义端口,其中1.0端口为蜂鸣器,2.4和2.5为按键,sbitout1=P1^0;sbitkey_P_DOWN=P2^4;sbitkey_P_UP=P2^5;sbitSPK=P3^6;2.0~2.2端口为LCD液晶屏sbitRS=P2^0;sbitRW=P2^1;sbitCS=P2^2;定义P0口为液晶屏数据传输口#defineLCDDATAP0定义变量,uintSET_N=100;ucharkey_P_DOWN_flag;ucharkey_P_UP_flag;ucharSPK_flag;ucharU;floatN;uintNOW_N;定义短信内容,可以将"warning!warning!warning!"修改为任意想要接收到的报警内容,ucharsms_text[]="warning!warning!warning!";最后定义一组延时函数,voidDelay_xms(uintx){uinti,j;for(i=0;i<x;i++)for(j=0;j<112;j++);}voidDelay_xus(uintt) {for(;t>0;t--){ _nop_();}液晶屏程序此部分函数中主要是定义液晶屏中显示预设值和当前值的设置,具体函数如下,DisplayListChar(1,0,"SET_N=");DisplayListChar(10,0,"ug/m3");DisplayListChar(1,1,"NOW_N=");DisplayListChar(10,1,"ug/m3");LCD_write_char(7,0,SET_N/100%10+'0');LCD_write_char(8,0,SET_N/10%10+'0');LCD_write_char(9,0,SET_N%10+'0');每一行语句括号中的内容为“列,行,‘显示内容’”这种格式,其中“列”和“行”从0还是计算,所以可以知道所显示的第一行为预设值,第二行为检测值。串口程序首先对串口进行初始化,代码如下:串口初始化函数串口1设置为发送,来控制短信发送。TMOD=0x20;//定时器1工作在方式2定时器时钟12T,8位自动重装,波特率9600SCON=0x50;//串口1工作在方式110位异步收发REN=1允许接收TH1=0xFD; //定时器1初值TL1=TH1;TR1=1; //定时器1开始计数EA=1; //开总中断//ES=1; //开串口1中断,此处要禁止串口1中断串口2设置为接收,接收从机发送过来的数据。AUXR&=0xF7; //波特率不倍速S2CON=0x50; //8位数据,可变波特率AUXR|=0x04; //独立波特率发生器时钟为Fosc,即1T,,波特率9600BRT=0xDC; //设定独立波特率发生器重装值AUXR|=0x10; //启动独立波特率发生器IE2=0x01;//开串口2中断ES2=1串口1发送首先定义串口发送1字节的数据,如果TI=0,在此等待,voidUART_1SendOneByte(unsignedcharc){SBUF=c;while(!TI);TI=0; }串行口连续发送char型数组,遇到终止号\0将停止,等待发送完成信号(TI=1)出现,voidUart1Send_char(uchar*str){ while(*str!='\0') { SBUF=*str; while(!TI); TI=0; str++; }}串口2接收voidUart2()interrupt8using1{if(S2CON&S2RI){S2CON&=~S2RI;//Clearreceiveinterruptflag}U=S2BUF;}最终把接收到的数据S2BUF发送给U。完成显示功能参照下表4-1的datasheet电压换算表可以发现,0.5V电压对应的PM2.5浓度为0.1mg/m³,表4-1电压换算表ParameterSymbolConditionsMIN.TYP.MAX.UnitSensitivityK*1*2*30.350.50.65V/(0.1mg/m³)同理可换算出1V电压所对应的PM2.5浓度为0.2mg/m³,所以可以根据此关系通过以下函数换算出电压值所对应的PM2.5浓度,从而显示到液晶屏中,voidshow_ad7(){ N=(float)U/255*5*100*2; NOW_N=(uint)N; LCD_write_char(7,1,NOW_N/100%10+'0'); LCD_write_char(8,1,NOW_N/10%10+'0'); LCD_write_char(9,1,NOW_N%10+'0');}其中NOW_N=(uint)N;液晶屏中第二行,也就是当前空气中PM2.5浓度值。从机软件程序设计从机程序流程图如下图4-2,4-2从机程序流程图如前文所述,从机端包括单片机最小系统和PM2.5传感器两部分,所以需要先设置单片机,将AD转换端口和串口初始化,再设置传感器进行采集,主函数代码如下:InitADC();InitUART();while(1){ show_ad7();}单片机程序首先定义所使用单片机型号对应的寄存器,并定义数据类型以方便调用。#include<intrins.h>#include"STC12C5A60S2.h"#defineucharunsignedchar#defineuintunsignedint设置11.0592MHz晶振所对应的3个延时,具体为何设定为这个时长在后文会详细说明。定义延时:voidDelay_xus(uintt) {for(;t>0;t--){ _nop_();}}延时1(9.642毫秒):voidDelay9642us(){ unsignedchari,j; _nop_(); i=104; j=183; do { while(--j); }while(--i);}延时2(0.253毫秒):voidDelay253us(){ unsignedchari,j; _nop_(); _nop_(); i=3; j=181; do { while(--j); }while(--i);}延时3(0.013毫秒):voidDelay13us(){ unsignedchari; _nop_(); _nop_(); i=33; while(--i);}设置AD转换电路在这里所调用的为单片机自带的转换模块,由于PM2.5传感器所连接的是单片机P1.0端口,所以令P1ASF=0x01,所测得的数据为P1.0端口接收到的电压值。P1ASF=0x01;ADC_RES=0;ADC_CONTR=ADC_POWER|ADC_SPEEDLL;Delay_xus(50);随后进行结果清零和打开电源的设置,最后的50us延时是为了让单片机稳定下来,以便进行下一步操作。读取AD转换结果首先定义ucharGetADCResult,在这里通过读取uchar函数值来得到AD转换结果,具体过程如下:ucharGetADCResult(ucharch){ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START;_nop_();_nop_();_nop_();_nop_();while(!(ADC_CONTR&ADC_FLAG));ADC_CONTR&=~ADC_FLAG;returnADC_RES;}其中前4个“_nop_();”为查询前必须等待标志。while语句中包含“非”和“与”两个符号,当“非与”结果为1时则继续循环等待,反之当“非与”结果为1时则跳出循环,并把完成的标志位复位,等待下一次循环,同时把得到的数值返回到函数uchar。PM2.5传感器程序串口2初始化首先对串口2进行初始化设置,波特率为9600,晶振选择11.0592MHz。这块单片机中定义P1.2为接收端口,P1.3为发送端口,初始化函数如下:AUXR&=0xF7; //波特率不倍速S2CON=0x50; //8位数据,可变波特率AUXR|=0x04; //独立波特率发生器时钟为Fosc,即1TBRT=0xDC; //设定独立波特率发生器重装值AUXR|=0x10; //启动独立波特率发生器串口2发送设置串口2发送测得的PM2.5浓度到单片机,所以调用含参函数c,voidUART_2SendOneByte(unsignedcharc){S2BUF=c;while(!(S2CON&S2TI));S2CON&=~S2TI;}其中S2BUF为内部寄存器,令其等于参数c。whil语句中若S2TI=0,则在此等待,反之进入下一步完成串口2发送设置。测量PM2.5浓度首先定义函数以及一个64位数组,这里将反复进行64次采样,并将采样得到的数值代入数组求得平均值,这样得到的结果更加精确。voidshow_ad7(ucharchannel) {uintad,ad1;floatadcal;ucharadave[64];floatad_sum;uchari; for(i=0;i<64;i++) { out2=1; Delay253us(); adave[i]=GetADCResult(0); Delay13us(); out2=0; ad_sum+=adave[i];Delay9642us(); } ad_sum/=64; adcal=(float)ad_sum/255*5*100; ad_sum=0;if(adcal>255) adcal=255; UART_2SendOneByte(adcal);}这里可以看到这个函数整体为一个负循环函数,循环的次数为0~63共64次,out2在本章已经定义为P1.1端口,这个端口会产生如下图4-3所示脉冲,图4-3out2产生脉冲波形图从波形图中可知周期T为10ms,脉宽Pw为0.32ms,当端口P1.1接收到高电平,即out2=1时,传感器开始读值。实际测量得到传感器实际输出波形如下图4-4所示,图4-4传感器实际输出波形图从产生脉冲开始算起,经过280us需要开始进行AD转换,转换得到的电压值与浓度成一定比例,并且AD转换也需要一定时间,经过实际测量得出AD转换一次大概需要54us,所以这里在波峰的前后两端分别取27us,保证在最接近280us的时候进行AD转换,从而确保取得的数据最为准确,故在第一个Delay语句中的延时设置为253us(280us-27us)。第二个延时语句Delay设置为13us,同样参考图3-2中脉宽Pw为320us,将13us+54us+253us刚好为320us一个脉宽。当out2=0即低电平时,把测到的数值进行求和运算,这个过程实际测量需要38us,所以在求和完成后再进行一个9642us的延时,相加刚好10ms完成一个周期。将以上过程循环64次之后,把得出的结果除以64求得平均值,再把平均值通过AD转换得出电压。这里知道AD转换中5V对应的为255,所以当结果为255时除以255再乘以5刚好就是5V,以此类推求得电压值。同时因为数据传输时无法传输小数点及小数点以后的位数,所以这里乘以100使结果取整。另如果计算结果大于255的话,则等于255.计算完成后把求和结果清零,最后通过串口把计算结果传输到主机端。检测端任务到此结束[10]。
调试设备实物如下图5-1,图5-1设备实物图整机共有5个物理操作按钮,图5-2主机端物理操作按钮主机、从机两端单片机最小系统分别设有一个复位键,当检测系统或报警系统出现问题时,按下相应的复位键即可恢复默认设置。其它三个按键分别为电源键、PM2.5+10ug/m³键和PM2.5+10ug/m³键。设备接通电源并按下电源按钮后,设备整体通电,液晶屏亮起并显示初始数值,如下图5-3所示,GSM模块电源指示灯闪烁。图5-3液晶屏初始状态液晶屏中第一行显示的为预设报警值(100ug/m³),第二行显示的是当前空气中PM2.5含量,当传感器检测到空气中PM2.5含量未超过所设定的报警值时,设备保持监控状态,第二行保持刷新显示实时PM2.5含量;当传感器检测到空气中PM2.5含量超过所设定的报警值时,第二行将保持显示PM2.5含量超过设定值一瞬间的数值,同时蜂鸣器开始报警并保持20秒,3秒延迟后GSM模块向指定号码发送预先编辑好的报警提示短信。液晶屏在检测工作状态如下图5-4所示。图5-4液晶屏检测工作状态当按下PM2.5+10ug/m³键和PM2.5+10ug/m³键后,液晶屏状态如图5-5和图5-6所示。相应的,传感器检测到空气中PM2.5含量所触发报警的数值变为液晶屏所显示的第二行数值。图5-5按下PM2.5+10ug/m³键后液晶屏状态图5-6按下PM2.5-10ug/m³键后液晶屏状态无灰尘情况传感器引脚5输出电压是0V,所以被测灰尘浓度=测量电压*K(K通常取值0.1mg/m3,下表5-1官方说明中Datasheet提供)。表5-1电压换算表ParameterSymbolConditionsMIN.TYP.MAX.UnitSensitivityK*1*2*30.350.50.65V/(0.1mg/m³)下图5-7,图5-8为波形发生器设置,模拟引脚3驱动信号,高电平为3V,低电平为0V。图5-7波形发射器设置1图5-8波形发射器设置2下图5-9为示波器实验结果,由此验证了前文说明里面的280US高电平过后AD转换采集电压[11]。图5-9示波器实验结果
总结本文主要完成基于GSM模块的可通信智能PM2.5检测设备的设计,实现对目标环境中的PM2.5含量进行实时检测,并且在超过设定值时进行报警,对工厂的工业生产以及人们的日常生活起到了一定的保障。采用单片机进行对整机的控制,同时使用了较为成熟的传感器,最终实现了最终的检测系统,主要工作总结如下:完成整个项目总体方案的设计,同时突出其优点。设计工作完成了基本的硬件设计方案,包括单片机最小系统的选择、检测传感器选择等硬件技术方案,采用宏晶科技公司的STC12C5A60S6单片机最小系统,PM2.5传感器采用夏普公司生产的GP2Y1010AU及其它相关硬件产品,保证整个硬件系统的稳定运行,并使用了AltiumDesigner软件和AutoCAD2016软件进行电路图纸的设计。完成基本的软件设计方案,程序设计上使用了Keil软件和MicrosoftVisualStudio软件进行编程。最终实现了设备所预期的全部功能。本设备的创新在于完善了市场上现有产品的不足,将检测和报警融为一体,弥补了现有产品只能检测PM2.5含量的不足。同时改善了人与设备的交互,增加了例如可以定制的接收短信号码和短信内容,以及可以自定义报警PM2.5数值大小等设定,使设备更加人性化,更加简单易用。工作中还是遇到了不少问题,以及一些重要突出的问题。首先夏普公司的PM2.5检测传感器是我第一次使用,在网络上以及书面上可以查询到的资料非常稀少,查询的过程中只找到了一个官方的全英文PDF手册,便以此为突破口,进行了一次又一次的电路连接尝试。在尝试的过程中出现了传感器接收数值与LCD显示屏显示端显示数值不符的问题,最终经过与导师的商讨和研究发现是所选电阻阻值过小和没有接地的问题。同时还因为之前对单片机软件编程的了解过少,导致在PM2.5含量检测,GSM短信发送端的控制等等出现了一些小麻烦,最终在与导师共同努力下进行一一解决,完成了对设备软硬件上的设计与制作,全面提升了我对单片机的了解,并且锻炼了我对问题的解决能力。对以后的展望和改进方向。随着工业自动化进程、工作人员的安全性、环保要求的提高,PM2.5检测报警需要完成的工作非常多,并且应用需求肯定会不断地扩大,不仅要对对更多不懂情况的检测,还要更大的增加易用性,降低成本,简便安装等等这都是以后升级中需要考虑道德,所以系统还有完善的空间。本文所设计的产品原本采用的是WIFI无线模块,打算接入互联网来达到功能更加完善的实时联网监控与检测,但是由于目前的学业水平有限尚未能完成设计与制作,希望能在后期个人不断地学习与发展完善本产品,使之能够更加的智能与易用。本产品使用的PM2.5传感器为夏普公司生产,精度有限,在未来科技的不断发展中可以不断地更新传感器来达到更高的检测精度,从而更加准确的报警。致谢语在此非常感谢姜老师在我大学的最后学习阶段——毕业设计阶段给自己的指导,从最初的选题、收集资料,到论文的写作、修改和定稿,全都给予我耐心的指导和非常有用的帮助。指导毕业论文的过程中他放弃了大量的休息时间,这种无私奉献的精神着实令人钦佩,在此我向他表示我诚挚的感谢。同时感谢所有曾经教导过我的任课教师和所有同学在这四年来带给我的指导和帮助,他们教会了我各种有用的专业知识,更是教会了我如何学习和如何在以后的职场上更好的大展拳脚。正是因为他们我才能在方方面面取得显著的进步,再次向他们表示我由衷的感谢,并祝所有的老师们培养出更多的优秀人才,桃李满天下!通过这一阶段的努力,我的毕业论文《基于GSM模块的可通信智能PM2.5检测设备设计》终于完成了,在大学阶段,我在学习和思想上都受益匪浅,这除了自身的努力更是与各位老师、同学和朋友的关心和鼓励分不开的。在本论文的写作过程中,我的指导教师姜老师花费了大量的时间,从选题到开题报告,从写作提纲,一遍又一遍地指出每一版本稿件的具体问题,在此我表示衷心感谢。同时还要感谢在我学习期间给我极大关怀和鼓励的各位教师以及关心我的同学们。毕业设计的制作和毕业论文的撰写对我来说是一次再系统学习的过程,完成了毕业设计和论文也意味大学时光的结束。我将铭记我曾是一名嘉庚学子,在今后的工作中把嘉庚学院的优良传统发扬光大。感谢各位指导教师的评述指导!
参考文献[1]曹军骥.PM2.5与环境[M].背景:科学出版社,2014.[2]洪永强.微机原理与接口技术[M].北京:科学出版社,2009.[3]徐爱钧.单片机原理与应用[M].北京:机械工业出版社,2013.[4]庹先国,余小平,奚大顺.电子系统设计[M].北京:北京航空航天大学出版社,2014.[5]阎石.数字电子技术基本教程[M].北京:清华大学出版社,2007.[6]王兆安,刘进军.电力电子技术[M].北京:机械工业出版社,2009.[7]刘健.电路分析[M].北京:电子工业出版社,2009.[8]孙传友,张一.现代检测技术及仪表[M].北京:高等教育出版社,2012.[9]胡宴如,耿苏燕.模拟电子技术[M].北京:高等教育出版社,2010.[10]谭浩强.C程序设计教程[M].北京:清华大学出版社,2007.[11]林育兹.电工学实验[M].北京:高等教育出版社,2010.
附录附录1整体电路图
附录2STC12C5A60S2引脚功能表VCC:供电电压。GND:接地。P0:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。P1:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口。同时P3口为闪烁编程和编程校验接收一些控制信号。P3.0:RXD(串行输入口)。P3.1:TXD(串行输出口)。P3.2:INT0(外部中断0)。P3.3:INT1(外部中断1)。P3.4:T0(记时器0外部输入)。P3.5:T1(记时器1外部输入)。P3.6:WR(外部数据存储器写选通)。P3.7:RD(外部数据存储器读选通)。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。
附录3程序源代码主机端程序//#include<reg52.h>#include<intrins.h>#include"STC12C5A60S2.h"#defineucharunsignedchar#defineuintunsignedintsbitout1=P1^0;sbitkey_P_DOWN=P2^4;sbitkey_P_UP=P2^5;sbitSPK=P3^6;uintSET_N=100;ucharkey_P_DOWN_flag;ucharkey_P_UP_flag;ucharSPK_flag;ucharU;floatN;uintNOW_N;ucharsms_text[]="warning!warning!warning!";sbitRS=P2^0;sbitRW=P2^1;sbitCS=P2^2;#defineLCDDATAP0voidDelay_xms(uintx){uinti,j;for(i=0;i<x;i++)for(j=0;j<112;j++);}voidDelay_xus(uintt) {for(;t>0;t--){ _nop_();}}voidLCD_en_write(void){CS=1;Delay_xus(20);CS=0; Delay_xus(20);}voidWrite_Instruction(ucharcommand){RS=0;RW=0;CS=1;LCDDATA=command;LCD_en_write();}voidWrite_Data(ucharWdata){RS=1;RW=0;CS=1;LCDDATA=Wdata;LCD_en_write();}voidLCD_SET_XY(ucharX,ucharY){ucharaddress;if(Y==0)address=0x80+X;address=0xc0+X;Write_Instruction(address);}voidLCD_write_char(ucharX,ucharY,ucharWdata){LCD_SET_XY(X,Y);Write_Data(Wdata);}voidLCD_clear(void){Write_Instruction(0x01);Delay_xms(5);}voidLCD_init(void){ Write_Instruction(0x38); Delay_xms(5); Write_Instruction(0x38); Delay_xms(5); Write_Instruction(0x38); Write_Instruction(0x08); Write_Instruction(0x01); Delay_xms(5); Write_Instruction(0x04); Delay_xms(5); Write_Instruction(0x0C); }voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData){ unsignedcharListLength;ListLength=0; Y&=0x1; X&=0xF; while(DData[ListLength]>0x19) { if(X<=0xF) { LCD_write_char(X,Y,DData[ListLength]); ListLength++; X++; } }}voidDisplay(void){DisplayListChar(1,0,"SET_N=");DisplayListChar(10,0,"ug/m3");DisplayListChar(1,1,"NOW_N=");DisplayListChar(10,1,"ug/m3");LCD_write_char(7,0,SET_N/100%10+'0');LCD_write_char(8,0,SET_N/10%10+'0');LCD_write_char(9,0,SET_N%10+'0');}voidDelay3000ms(){ unsignedchari,j,k; _nop_(); _nop_(); i=127; j=18; k=107; do { do { while(--k); }while(--j); }while(--i);}voidInitUART(void){ TMOD=0x20;SCON=0x50;TH1=0xFD;TL1=TH1;TR1=1;EA=1; AUXR&=0xF7; S2CON=0x50; AUXR|=0x04; BRT=0xDC; AUXR|=0x10; IE2=0x01;}voidUART_1SendOneByte(unsignedcharc){SBUF=c;while(!TI);TI=0; }voidUart1Send_char(uchar*str){ while(*str!='\0') { SBUF=*str; while(!TI); TI=0; str++; }}voidUART_2SendOneByte(unsignedcharc){S2BUF=c;while(!(S2CON&S2TI));S2CON&=~S2TI;}voidUart2()interrupt8using1{if(S2CON&S2RI){S2CON&=~S2RI;}U=S2BUF;}voidshow_ad7() N=(float)U/255*5*100*2; NOW_N=(uint)N; LCD_write_char(7,1,NOW_N/100%10+'0'); LCD_write_char(8,1,NOW_N/10%10+'0'); LCD_write_char(9,1,NOW_N%10+'0');}//主函数voidmain(void){Delay_xms(50); LCD_init();Delay_xms(50);LCD_clear();Delay_xms(50);Display();InitUART();while(1){ show_ad7(); if(!key_P_DOWN) { key_P_DOWN_flag=1; }if(key_P_DOWN&&key_P_DOWN_flag) { SET_N+=10;key_P_DOWN_flag=0;LCD_write_char(7,0,SET_N/100%10+'0');LCD_write_char(8,0,SET_N/10%1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于强化学习的移动边缘计算资源分配研究
- 基于引导滤波的稀疏角CT重建算法研究
- 2025年绿色建筑评价与智能家居系统集成商品房建筑工程施工合同3篇
- 二零二五版物业管理保洁人员招聘合同3篇
- 2025至2030年法式沙发项目投资价值分析报告
- 叶际微生物的筛选鉴定及其对水稻白叶枯病的防治研究
- 基于植被生长、冠层温度与光谱特征信息融合的冬小麦水分状况预测模型研究
- 供应链数智化管理对企业营运资金管理绩效研究
- 富硒罗伊氏乳杆菌的制备及其益生作用研究
- 2025年黑色皮革基布项目可行性研究报告
- “小学英语对话教学”研究课题方案
- 城市地下管网建设工程投标书(范文)
- 2024-2030年中国达克罗行业运行态势与前景展望分析报告
- 联合体三方协议合同模板
- 五上数学简便运算500道及答案
- 山东省临沂市2024年中考物理真题
- 第2课《“友邦惊诧”论》(教学设计)-【中职专用】高二语文同步课堂(高教版2024·拓展模块上册)(同课异构)
- 2024新苏教版一年级数学上册全册教材分析
- 温州市瓯海旅游投资集团有限公司下属子公司招聘笔试题库2024
- Altium-Designer-电路设计与制作教案
- 供应商评估与筛选管理制度
评论
0/150
提交评论