基于stm32的智能环境噪音监测系统.docx
基于STM32的智能噪音监测系统摘要:在国家逐渐发展壮大的今天,工业发展使我国经济快速增长,但也导致了各种在发展壮大之前没有被发现的问题日益浮现,噪音污染就是其中之一。环境噪音会给环境或周围人造成不良影响,严重的甚至会破坏环境或给人们的身心健康造成很大的影响,因此我们需要一种简易的噪音监测仪器,可以很方便地监测出当前环境的噪音分贝值是否适合人们生活,从而达到监控的目的。为了对环境噪音进行监测,本次毕业设计选题是对环境噪音监测系统,单片机采用的价格成本低、但功能性强大且稳定的STM32单片机芯片,用以对声音进行信号处理后得出当前环境分贝值。本设计还将增加一个环境粉尘浓度监测功能,用以模拟在工地上使用的扬尘噪声监测设备,将得到的分贝值和环境PM2.5浓度值显示在液晶屏中。最终通过蓝牙技术,将噪音分贝值和PM2.5浓度值发送给安卓手机的应用程序中,可以更加便捷地监测当前环境的情况。关键词:噪音监测,PM26,STM32,蓝牙IntelligentEnvironmentalNoiseMonitoringSystemBasedonSTM32Abstract:Inrecentyears,withthecountryisgraduallydevelopingandexpanding,industrialdevelopmentmakesourcountry'seconomygrowrapidly,butitalsoleadstovariousproblemsthatwerenotdiscoveredbeforethedevelopmentrapidlyofthecountry.Noisepollutionisoneofthem.Ambientnoiseaffectontheenvironmentoraroundpeople,seriousevencandamagetheenvironmentortopeople'sphysicalandmentalhealthcausedgreatinfluence.Therefbre,weneedasimplenoisemonitoringinstrument,whichcaneasilydetectwhetherthecurrentenvironmentalnoisedecibelvalueissuitableforpeople,slife,soastoachievethepurposeofmonitoring.Tomonitortheenvironmentalnoise,thegraduationprojecttopicistomonitortheenvironmentalnoisesystem,thesingle-chipmicrocomputerusedlowcost,butpowerfulandstablefunctionofSTM32single-chipmicrocomputerchip,usedforthesoundsignalprocessingtoobtainthecurrentenvironmentdecibelvalue.Thisdesignwillalsoaddanenvironmentaldustconcentrationmonitoringfunction,whichisusedtosimulatethedustnoisemonitoringequipmentusedontheconstructionsite.TheobtaineddecibelvalueandenvironmentalPM2.5concentrationvaluearedisplayedontheLCDscreen.Inaddition,thenoisedecibelvalueandPM2.5concentrationvaluewillbesendtotheandroidphoneappthroughbluetoothtechnology,whichcanmoreeasilymonitorthecurrentenvironment.Keywords:Noisemonitoring,PM2.5,Bluetooth,STM321绪论11.1 1.1研究背景和意义11.1.1 噪音监测系统的背景分析11.1.2 本课题的研究意义21.2 课题研究方法和内容题研究21.2.1 研究方法21.2.2 研究内容32系统分析42.1 系统背景及现状分析42.2 需求分析42.3 可行性分析53系统总体设计及硬件实现73.1 系统总体设计73.2 系统硬件实现83.2.1 STM32单片机模块83.2.2 声音监测模块93.2.3 PM2.5监测模块93.2.4 蓝牙通信模块103.2.5 液晶显示屏模块113.2.6 ADCO832模数转换模块113.2.7 硬件实现效果124系统软件设计与实现134.1 开发工具的介绍134.1.1 KeilUViSiOn4单片机开发工具134.1.2 AndroidStudio开发工具134.2 软件设计总体思路134.3 硬件控制代码设计144.3.1 Main主控函数144.3.2 AD转换模块154.3.3 分贝采集传感器模块174.3.4 粉尘传感器模块194.3.5 蜂鸣器模块214.4 客户端APP设计224.4.1 客户端APP总体设计思路224.4.2 逻辑流程234.4.3 数据接收并显示程序234.5 系统实现效果265总结28朝文献:29致谢301.11.1 研究背景和意义1.11.2 噪音监测系统的背景分析在科技飞速发展的21世纪,世界各国的经济情况也以快速的形式发展起来,人们一边享受着科技发达带来的摩登生活,一边也要承受着随它附来的各种问题,如气候的恶劣变化、温室效应、全球变暖、各类自然灾害等等,其中,环境噪音问题是我们如今所不能再回避的问题,尤其是生活在城市中的人们或近于施工处所的人们。环境对我们生活中的方方面面都有着巨大的影响,而环境因素又是随着环境时时刻刻变化的,声音本是无害的,甚至可以是悦耳的,但是过大嘈杂的声音却有时候会使人感到不舒适,即环境噪音,它会引起人们烦躁,如果音量过大或音调过高的高噪声环境,则可能危害到人们的生理和心理上的健康。其造成的危害可能是:L对听力造成损害2.对视力造成损害3.对人们的心血管造成损害4.对神经系统造成损害,即容易愤怒、激动甚至失去理智5.对睡眠造成影响,即容易疲倦、睡眠不足等等。因此对环境噪音的监测与控制在对人的身体健康和身心健康方面有着十分重要的作用,而加强对环境噪音的检测与控制则显得尤其重要。我国对噪音污染的关注开始于二十世纪70年代,1979年,第一期噪声训练班被举办,明确了培养噪声监测人员的决定,噪声监控从简单的噪音监测往多功能、便捷式、小型化发展,直至现在,噪音监控技术现在发展的己经相当成熟,并且衍生出多种功能。工地扬尘噪声监测设备就是这么一款多功能、应用性强的环境保护设备,它不仅能做到噪声的监测,还可监控工地扬尘浓度以及温湿度监控和图像抓拍与录制。不仅解决了民众对施工工地质疑的问题,也为工地环境奠定了良好自查基础。随着时代的发展,工业的发展规模也逐步扩大,因此很多为了发展而建造的场所如高楼、立交、地铁等的数量也逐渐增多,因此噪音防治迫在眉睫,而要进行防治,则必须从技术、经济和效果等方面进行综合权衡,具体问题具体分析。本文就是一款针对环境分贝值简易测量设计方案,用于监测当前环境分贝值是是否达到人们适宜居“百度百科z.https:/WWW.taodocs.8mp161811482.himl住的一个健康环境。1.11.3 本课题的研究意义随着国家政策的引导,城市的发展、交通、建筑工业和社会生活的规模不断扩大,就很容易导致各种污染问题丛生,环境噪声污染即是其中之一,它会对人体构成许多影响,如生理或心理上的,说它是人们最容易直观感受到的自然环境污染因素之一的原因是不同人类活动对环境分贝的要求也不尽相同。长期的处于噪音环境中生活容易导致人们会过激行动,甚至引发一些群发性事件从而影响社会的和谐和稳定。因此我们应该对声源进行控制和整治,而噪声监控系统则是助我们对环境噪声污染进行监控和改善的有力帮手,通过从噪声监控系统中得回的数据,我们可以知道当前环境质量是否良好,从而做出是否改变或改善当前环境使得人们生活更舒适的决策。本课题研究实现一个对噪音和空气质量值进行检测的系统,它具备监控当前环境的分贝噪音值和空气PM2.5浓度值功能,用于提示当前生活环境是否舒适,同时满足携带方便、价格低廉、操作简便等方法,希望能够对地球的环境健康保护有一定的帮助。1.2课题研究方法和内容题研究1.2.1 研究方法本论文在编写过程中主要采用了以下的研究方法:文献研究法:通过网络、查阅书籍和相关的文献来取得一些对于课题有用的资料和前人设计的结果,从中获取其中有用的信息,论证其可行性,从而科学、客观、全面地了解所要研究的问题,找出问题的本质属性,更高效的寻找解决问题的办法。实验法:通过对问题的研究和分析,从已得出的结论和经验出发,形成一种新的假设,再将形成的假设计划出一个可控的实验方法,通过多次的科学实验验证,观察自变量在变化过程中因变量的变化,从而的得出自变量和因变量的关系,最后统计得出假设是否成立。1.2.2研究内容本论文总共分为五个部分,每个部分内容安排如下:第1章:绪论。主要阐述本论文的研究内容和背景的,以及讲述研究过程中使用的方法。第2章:系统分析。主要对系统进行需求分析,从经济,技术等方面对噪音检测系统进行可行性分析。第3章:系统总体设计及硬件环境搭建设计。主要介绍硬件模块的描述及功能,逻辑流程,模块设计以及硬件模块的设计思路。第4章:系统软件功能设计与实现。主要介绍系统的全部模块的实现代码以及逻辑流程和APP端是如何实现从而得出运行效果。第5章:总结。主要对系统所实现的效果进行总结,并对系统存在的问题和可改进之处作出说明。最后是参考文献以及致谢内容。2系统分析随着噪音污染日益对人们的生活造成困扰,在经过对相关资料的收集整理之后,对智能噪音监测系统的现状以及系统的需求进行分析,包括对智能噪音监测系统的用户需求和功能需求,和对智能噪音监测系统的完成进行可行性的分析。2.1 系统背景及现状分析随着社会经济的发展,各大城市的建设发展进程加快,城市交通的扩建、人口基数的增大、各类施工项目持续增长等造成的噪音污染已然成为当今社会环境污染的四大污染之一,人们对噪音污染的看法与关注度也越来越高,其对人类健康的危害也引起了极大关注。因此为了减少这种污染带来的危害,人们便想出通过了解周围环境的声音的分贝值来知道当前环境的声音是否属于噪音污染,检测噪音的仪器便应运而生。噪音检测仪器从最初的指针式人工读数声级计发展到数字式声级计,再到后来的能够自动采集、存贮、处理数据等功能的自动监测环境噪音的仪器,到现在的小型化、便携式、多功能使用仪器,环境噪音监测技术发展的十分迅速也越加成熟。本设计拟采用声音传感器LM386作为分贝采集传感器。它可以将采集到的声音进行放大,再通过AD转换电路对信号进行处理,从模拟信号转换成数字信号,再通过蓝牙连接手机并在APP中显示出具体分贝值。2.2 需求分析2.3 2.1用户需求对于智能噪音检测系统,用户需求基本分析如下:(1)设备:低功耗、低成本方、操作简单且便于携带。(2)检测功能:系统在正常情况下能测出当前环境分贝值和PM2.5浓度值。(3)报警:一旦PM2.5浓度值高于设置的报警值马上点亮LED灯与蜂鸣器报警提示用户。(4)手机应用程序:能实时查看监测系统的测量出的噪音值和PM2.5浓度值,并且可以通过手机应用修改PM2.5报警阈值。2. 2.2功能需求系统要实现的功能内容包括:环境声音分贝值的测量、环境中PM2.5浓度值的测量、模数转换的处理、PM2.5超标警报,与手机数据共享等功能。为了实现以上功能,本次设计将采用STM32F103C8T6单片机作为控制核心,其具有低功耗、低成本、微型化、便于操控,便于携带且性能稳定等优点,用以测量出分贝值、PM2.5值,超标报警,与手机数据共享的基本功能。采用声音传感器LM386作为分贝采集传感器,GP2Y1010AUOF粉尘传感器作为PM2.5浓度值测量传感器,实现将分贝和PM2.5的模拟量以电流形式输出,再用模数转换器将两个传感器输出的电流信号变成能与单片机正常输入输出的电平。2.3可行性分析2.3.1经济可行性分析随着人们对环境污染的关注度增高,噪音污染问题也越被人们所注意,因此用来监测噪音分贝的仪器也层出不穷且功能越发多样化地被应用于社会生活中,目前复杂的多功能噪音监测系统一噪声扬尘监测系统被广泛应用于工地施工监测上,在普通生活中也随处可见简易的噪音监测系统的使用,如公园里,靠近马路的小区中,需要环境安静的图书馆中等等。当下,市面上使用的智能噪音监测系统功能性多,且针对场所较为专业,用在家用有小题大做。本系统设计结合单片机,降低成本实现资源利用最大化,每个家庭都能买得起。因此本次设计的智能噪音监测系统则是生活中便于人们操作使用的、成本也较为低廉的STM32单片机和传感器所组成,为普通生活中测量环境噪音和PM2.5浓度值提供便利。2.3.2技术可行性分析以STM32F103C8T6单片机和分贝采集传感器、粉尘采集传感器为核心设计出的噪音监测系统能够严格控制系统的体积大小,模块价格,以及单片机的耗能和稳定性,使用传感器来实现对环境的噪音和粉尘浓度检测,逻辑电路简单易懂,编程难度也不算高,还能够依照实际的使用情况对系统的部分功能做出改进,如加入温湿度检测模块等。综上叙述再结合现实中已经实现过的案例系统可知,本次设计方案以STM32F103C8T6和分贝采集传感器、粉尘采集传感器为核心设计出噪音监测系统是可行的。系统总体设计及硬件实现3.1系统总体设计经过前面系统分析,初步确定系统需要实现噪音和PM2.5监测功能以及PM2.5超值报警功能,系统组成分为硬件和软件部分,构成如下:1、硬件部分 STM32F103C8T6单片机 分贝采集传感器 GP2Y10IOAUOF粉尘传感器 MLT-BT054.0蓝牙模块和串口2、软件部分 STM32的初始化; 数据的采集、发送、接收; LCD显示; 客户端APP显示等。系统总体组成如图3-1所示,其中传感器和STM32通过GPIO口通信并将数据输出到LCDI602中显示出来,从而实现实时监测当前环境中噪音值、环境PM2.5浓度值;也可以通过蓝牙MLT-BTO54.0与单片中的串口相接,从而实现与手机蓝牙通信,实现数据实时同步;用户可以手动设置.报警阀值,当环境PM2.5浓度值超过网值时蜂鸣粉尘传感器器产生警报。显示屏手机客户端GPIO图3-1系统总体组成框图硬件部份包含功能模块分别是:STM32单片机、LM386分贝测量传感器、GP2Y1010AUOF粉尘传感器、1286LCD显示器、蜂鸣器、无线蓝牙收发器。将各个硬件模块线连成整一个硬件设计部分。3.2.1STM32单片机模块STM32单片机是由美国意发半导体公司研发的基于ARMCortexM-M处理器的微控制器芯片,它的功能比传统8位单片机更加完善和稳定,不仅可以使用寄存器进行编程,还可以使用官方提供的库文件进行编程,集高性能、实时功能、数字信号处理、低功耗与低电压操作等特性于一身,同时还保持了集成度高和易于开发的特点。本课题的主控芯片使用到的STM32F103C8T6微控制器就是一款典型的STM32单片机,它采用了COlleX-M3内核,使用的RlSC精简指令集拥有更高的代码运行效率和更大的FIaSh,CPU最高速度可达72MHz,且可兼容市面上所有的ARM工具和软件。主控模块跟其他模块的接线电路如下所示:PADtSARTIXADCD鼎AiPBI0DC8CL tSARDTXPBIMT2SDN LSARTS RNftnA Plowrp-Leartctb ADCE hnPALSART2LS AGCL IM TlNC CCTMD OO爆井的所侬预衣TIMCTRPDeTNHC Fanzvp M ax. shy; Tihiib pPSAM T PaoTTnn FASTD Paajtckswglk'然PA13*8SWNIOPA12LSAET RTY CANTXCSSP TII IRPAINATI CTE CRRX 网 NL TIM PAotsuix OOBablsarti tx timi CCPAatSARTICx flsn CHISTO;:1 i s>l, ,ls i Q, PHASRl NSO LSART RTHTIMD CHNPHBSPI-Cx USARB CTS TnNPS!25PILNS5 IQSABN LS ARTICR TT JRN 1 -* 皿Id) GD:W 二上-K÷2f图3-2主控芯片电路图百度百科z.htp:article585701.html声音监测模块采用了LM386声音传感器,用于周围环境声音进行采集,它是一种音频集成功率放大器,可以对采集到的微小声音进行集成放大且功耗低。声音采集传感器的引脚3与单片机P30引脚(数据接收RX)、引脚2与P31引脚(数据发送TX)相连,解调后的音频信号经滤波后进入LM386的引脚3,经过偏置电路再进入AD转换电路转换后将模拟量显示在LCD屏上。VCC-SVP2分贝测量模块存口Header4HGND分贝测量模块接口图3-3分贝测量模块电路图3.2.3PM2.5监测模块PM2.5监测模块使用的是型号为GP2Y10IOAUOF的粉尘传感器,用于检测周围环境粉尘浓度值,中间有小孔可让空气自由流过,红外光发射二极管和光电晶体管斜置于其内部,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。图3-4粉尘传感器实物图该模块电源正极接单片机P20引脚端口,负极接地,驱使传感器红外二极管及LED开始工作。P20端口是输出端,用于检测粉尘浓度电压模拟量,LED端是输入端,用于串行数据输入,从输出电压模拟量的大小来判定环境的PM2.5浓度值。VCCsV«16<150RHeader GHADCAQ-l+c TCaPPdIl 20ufGpzyioioaujfR15-VIOKF图3-5粉尘传感器电路图3.2.4蓝牙通信模块为了使单片机硬件与手机APP客户端之间进行通信,蓝牙模块采用了MLT-BT054.0芯片,它可支持与苹果程序端或安卓程序端通信或主从一体。用户可以通过串口和蓝牙芯片进行通信,串口使用TX,RX两根信号线对接入单片机P21(串行输入口)、P22(串行输出口)接口。OI03457O1 、(> rNErR>H)rlrlplpl321 JS X JS J <s- 二一二图3-6蓝牙模块电路图在单片机引脚中:SIMRX(ReceiveData)是P21,SIMTX(TransmitData)是P22。蓝牙串口协议中:RXD引脚为接收数据,TXD引脚为发送数据。所以用用蓝牙端的数据输出,输出到单片机的数据接收处,反之亦然来完成蓝牙端口跟单片机端之间的直接数据传输。3.2.5液晶显示屏模块-ROMINPB12ROMOUTPB15RQMSrKPB14RQMSPB13LREAVSSIIkzDDnIIBWLCDSCLK8LCDSDIOPB89LdbRSPB710IlICDRESTPB6PB5HeaderIZH图3-7LCD液晶显示屏模块电路图本次设计采用的是点阵式图形液晶显示屏12864LCD,它主要由行或列驱动器及128X64全点阵液晶显示器组成。使用通信模式为串行通信,与单片机P5-9,P12T5引脚相连,可完成图形显示,也可通过模块内部的RAM提供64X16的显示空间,显示4行8字(32个汉字)或64个ASCll码字符。3.2.6ADCO832模数转换模块模拟信号只有转化为数字信号后才能使用软件进行处理,而信号的转化得借助转换器来实现,本设计所使用的转换器为ADCo832,CS端为输入端,未工作时处于高电平状态,时钟信号(CLK)和数字地/数字信号输出(DI/O)可任意电平,当配置位的2位数据为1、0时,CHO进行单通道转换。ADCO832与单片机的接口分别是CS、CLK、DO、DL由于DO与DI端与单片机的接口是双向的,在通信时不能同时有效,所以将DO和DI可并联在一根数据线上使用,即电路图中整合为DI/O接口。图3-8ADC0832电路图3.2.7硬件实现效果经过努力,最终硬件实现效果如下所示:图3-9硬件实现效果图4系统软件设计与实现4.1 开发工具的介绍4.1.1 KeilUViSion4单片机开发工具KeilC51开发工具旨在解决嵌入式软件开发商面临的复杂问题,它提供了包括标准的C编译器、宏汇编器、调试器、链接器、存储器和一个功能强大的仿真器等在内的完整开发方案,通过一个集成开发环境(VisionIDE)将这些部分组合在一起。本设计采用KeiIVision4C语言软件开发系统,可使用多个窗口进行代码编程,使得代码环境视觉上整洁,运行上也更为高效,具有的RealVieWMDK集成开发环境,使得编译器、调试工具与ARM完美匹配。4.1.2 AndroidStudio开发工具Android从面世以来己经发布了二十儿个版本,Android系统的蓬勃发展,离不开手机厂商、开发者、用户,其中,开发者扮演着不可或缺的角色,AndroidStudio则是他们用来进行软件开发的工具。它是一个Android集成开发工具ECliPSeADT,提供了集成的开发工具用于开发和调试。在Java语言集成环境(IDEA)的基础上,它具备的功能有:支持基于Gradle的构建;重构和快速修复;支持ProGUard和应用签名;可基于模板来生成AndrOid应用设计和组件;以及可以对Ul控件进行操作和效果预览的布局编辑器。4.2 软件设计总体思路以STM32单片机开发板为控制核心,通过函数初始化,包括串口,引脚等的初始化,传感器函数的编写来实现应该呈现的功能,包括模数转换子程序、IlC串口总线子程序、PM检测子程序、噪音检测子程序、LCD显示子程序、警报子程序等。百度百jHz.httpsitemkeil4082184?ivk_sa=1单片机端: 实现串口收发功能 噪音值经过AD转换由程序输出分贝值功能 PM2.5浓度检测功能 LCD显示屏显示功能APP端: 接收单片机传送的数据功能 粉尘浓度检测阈值可调功能4. 3硬件控制代码设计5. 3.1Main主控函数Main主控函数主要完成以下功能:完成定时器、计数器、中断系统、串口以及按键的初始化,对功能实现所需要使用到的函数进行配置调用,包括:LCD显示、粉尘传感器初始化和报警、声音传感器读取数据,并循环工作和显示子程序所得数据。主函数代码如下:include"head,h”floatg_MeaSureDitan=O.0intmain(void)NVIC_PriorityGroupConfi晨NVIC_PriorityGroup_2);配置中断向量表delay_init();Key_GPIO_Config();LED_GPIO_Config();USARTlConfigOUSRT3ConfigOApplnitKeyO;GPIO_Configuration12864LCD();Initial_LCD_ST7684();TIM4ConfigurationO;InitGP2Y1010AU0F();StartBeepO;ReadlnitPassDataeO;g_MsgPage=1:while(1)(DisplayWindowO;delayms(10);4.3.2AD转换模块ADCo832共有18个通道,可测量16个外部和2个内部信号源,各通道的A/D转换的模式执行可以是单次、连续、扫描或间断,模式执行结果可以左、右对齐方式存储在16位数据寄存器中。噪声的采集采用声音传感器LM386,它是一种音频集成功率放大器,输出的是模拟信号,同样粉尘传感器输出也是模拟信号,因此需要使用转换电路将模拟信号转换为数字信号,即使用A/D模数转换器。声音传感器将环境中的信号采集后,经过放大电路,收集到的微小的噪音信号值放大,粉尘传感器则是将采集到的空气中灰尘经过折射光线计算出模拟量值,两者再通过ADCO832转换电路,对信号进行放大、量化,再通过单片机的内部程序将得到的分贝值和空气PM2.5浓度值输出到LCD液晶显示屏。开始使能芯片产生时钟信号输入通道控制字读取2字节数据结束将值传入指定寄存器字节数据校验图4-1ADC0832数据读取程序流程图其中A/D转换电路通道选择代码实现如下:/ADeO832读取函数读取ADCo832转换值函数/1入口函数:Channel选择通道ucharADC0832_Read(ucharchannel)uchari=0uchartmp=O:高字节数据uchartmpl=0;低字节数据开始标志位ADC0832_D0DT=l;_nop_O;_nop_();ADC0832.CS=0;/1片选信号ADC0832CLK=I_nop_();_nop_();ADC0832CLK=O_nop_();nop()选择通道switch(channel)case0:/通道0ADC0832_D0DI=l;/SGL=I;_nop_(;_nop_();DC0832-CLK=l;nop_(;_nop_O;ADCO832一CLK=0;_nop_();_nop().ADC0832_D0Dl=0;/ODD=O;_nop_();_nop_0;ADC0832_CLK=l;nop_O;_nopO;ADC0832_CLK=0;_nop_();nop()break;case1:通道1ADC0832DODI=I;/SGL=I;JOP_();_nop_0;ADCO832_CLK=I;_nop_O;_nop();ADC0832CLK=0;_nop_(l-11P-O;ADC0832_D0DI=l;/ODD=I;_nop_O;_nop_O;ADC0832_CLK=l;_nop_(;_nop);ADC0832_CLK=0;_nop_O;_nop();break;default:break;4.3.3分贝采集传感器模块分贝采集的流程大致分为5步:(1)获取声音的数据,通过MIC(麦克风)检测电压,对输出电平进行放大后经过AD采样和量化得到声音的波形数据,为时域离散信号。(2)进行时域变换,使用频谱,把时域信号转换为频域信号,可使用FFT/DFT算法。(3)分贝计算,声音分贝值是由各个频率分量的声音分量组成的,通过划分倍频程把频域信号绝对量转换为相对量(db)。(4)计算dba,引用A声级计量声压,让测量得到的分贝值值更符合人体主观感觉。因为人耳对不同频率的声音的敏感度不同,如当声音的分贝值相同时,3kHz比30OHZ听起来更响亮一些。(5)显示噪音值,把经过声级处理后得到的噪音值通过程序在液晶显示屏显示出来。领域信A级计权下噪音分贝值图4-2分贝采集传感器采集流程图AD信号的采集在定时器中断中进行,每采集100次取一次平均值,通过调用已经写好的显示函数显示在LCD显示屏中,显示的噪音值为全局变量,当每次采集并取平均值后,噪音值会被重新更新并显示出来。主要控制代码实现如下:/计算分贝值voiddbcountOad=ad100/采集100次ad值后计算平均值,均值滤波波V=VCC*ad255.0;计算所测电压,Vad=VCC255low_V=(low_V+V)/2;与上一次测量电压值求平均值1 ow_V=V;记录分贝电压值db=35+V4.0;根据电压对应计算分贝值voidmain()uinti=0:if(keyjian=O)(delayms(100);if(keyjian=O)AT24C02writedate(0,120);存储分贝值限值)db_up=AT24C02_read_date(0);LCDinitO;while(l)(scanO;if(setfO)(i+;ad+=ADC0832read(O);读取AD值,并累加记录到ad上if(i>=100)(i=0;db_count();display();ad=O;delayn40us(80)elsedisplay2();4.3.4粉尘传感器模块红外发光O 3Q 2放火电路(刘丁取感-O 设置排列线4 V-LED2 LED-GND3 LED4 S-GND5Vo管VeC图4-3粉尘传感器内部原理图从原理图可以看到,粉尘和烟雾粒子从圆孔进入,通过空气传导设备使进入圆孔的空气流通,红外发光二极管和光电晶体管斜置传感器内部,发光二极管发射光线,晶体管接受二极管发射出来的光,引起电压的变化,电压的变化经过放大电路进行放大处理,通过A/D数模转换电路将模拟量转换成数字量,再通过单片机内部程序使得LCD屏幕显示检测到的空气粉尘浓度值。模块主要涉及三个函数:传感器初始化函数、浓度值计算函数、取均值函数。(1)传感器初始化函数:使用串行通信,对红外二极管进行配置,GP2Y_Low打开红外开关,以及调用配置好的ADe初始化函数。(2)浓度值计算函数:通过ADC函数采集到的电压值经过计算得到粉尘浓度值g_GP2yNumbero(3)取均值函数:由于采样点只有圆孔内部一处,为了使计算出的浓度值产生的误差较小,对该采样点进行多次采集再取均值,即计算循环times次后得到的浓度值的均值g_GP2yNumber=pm_val/times。粉尘传感器相关控制函数如下:voidInitGP2Y1010L-0F(void)传感器初始化GPTO_TnitTypeDefGPTO-InitStructureRCC_APB2PeriphClockCmd(RCC_APB2PeriphGPlOB,ENABLE);GPlOA时钟GPIO_InitStructure.GPl(LPin=GPl(LPin0/PAI一二极管控制GPIOIni!Structure.GPIO_Mode=GPIO_Mode_Out_PP;GPIOInitStructure.GPIOSpeed=GPIOSpeed50MHzGPI0_Init(GP10B,&GPI0_InitStructure);GPlOSetBitsCGPIOB,GPlOPin0)GP2YLow;DCConfigurationO;floatTestGP2Y1010U0F(void)uintl6tADPMfloatpmGP2YHigh;关闭红外二极管delay_us(280);ADPM=GetAdC0;采样,读取AD值delay_us(40)GP2Y_Low;打开delay_us(9680);pm=0.17*DPM-O.1gGP2yNumber=pm-50;returngGP2yNumber;voidGet_GP2Y_Average(8times)uint32tpmval=0;uint8_tt;for(t=0;t<times;t+)pm_val+=TestGP2Y1010AU0F();delayms(5)gGP2yNumber=pmvaltimes;)4.3.5蜂鸣器模块蜂鸣器模块与STM32103单片机的P19引脚和蜂鸣器的b级相接,用于报警处理。当P19输出1蜂鸣器不工作,P19输出0时蜂鸣器开始工作。即当采集到环境PM2.5浓度值大于设置好的值时,蜂鸣器报警,单片机采用三极管来放大电流驱动蜂鸣器工作,是因为蜂鸣器工作电流较大,I/O口无法直接驱动。图4-4蜂鸣器模块电路图蜂鸣器控制代码如下。当采集到环境PM2.5浓度值大于预设值的时候就会调用该函数启动蜂鸣器发声。voidBeep(if(g_GP2yNumber<=AD_PM)becpl=l;elsebeepl=0;4.4客户端APP设计4.4.1客户端APP总体设计思路设计开发工具:(1)androidstudio开发软件(2)计算机(3)安卓手机按照总体设计思路,客户端APP需要实现一个简单的蓝牙数据接收客户端,蓝牙设备的启用以及其搜索功能均要开启,为软件接受外界信号作一个必要准备。在系统内设计一个简单的数据显示功能,将在单片机上得到的数据,通过蓝牙通信传输数据到手机APP端并显示出来,可设置单片机上PM2.5浓度阈值同步。具体可分为以下几部分:1. 硬件物理访问地址显示与单片机上蓝牙模块连接的MAC地址。2. 噪音值显示当前程序发送过来的噪音值数据。3. PM2.5值显示当前程序发送过来的PM2.5数据。4.设置上限值系统设置上限值为80ugm3,可手动修改,单片机掉电保存。4. 4.2逻辑流程C开始)图4-5手机端软件逻辑流程图5. 4.3数据接收并显示程序先检测设备是否支持蓝牙,支持后检查蓝牙是否开启,当用户没有开启蓝牙时提示用户是否开启蓝牙,开启蓝牙后对设备进行扫描,以连接到所需单片机上的蓝牙,扫描有周期限制,到达时间后不管是否扫除新设备都停止扫描,添加初始参数unknow-device,自动获取设备地址,但无法连接设备,用户设置设备为R.id.dcvice_name,通过扫描得到,MAC地址即单片机蓝牙的数据链路地址。设置蓝牙初始配置代码如下:(1)检查是否支持蓝牙设备,并咨询用户是否打开蓝牙检查来确定设备上是否支持BLUEif(!getPackageManager().Has