物联网工程-基于stm32的智能环境噪音监测系统_第1页
物联网工程-基于stm32的智能环境噪音监测系统_第2页
物联网工程-基于stm32的智能环境噪音监测系统_第3页
物联网工程-基于stm32的智能环境噪音监测系统_第4页
物联网工程-基于stm32的智能环境噪音监测系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

PAGE 基于STM32的智能噪音监测系统摘要:在国家逐渐发展壮大的今天,工业发展使我国经济快速增长,但也导致了各种在发展壮大之前没有被发现的问题日益浮现,噪音污染就是其中之一。环境噪音会给环境或周围人造成不良影响,严重的甚至会破坏环境或给人们的身心健康造成很大的影响,因此我们需要一种简易的噪音监测仪器,可以很方便地监测出当前环境的噪音分贝值是否适合人们生活,从而达到监控的目的。为了对环境噪音进行监测,本次毕业设计选题是对环境噪音监测系统,单片机采用的价格成本低、但功能性强大且稳定的STM32单片机芯片,用以对声音进行信号处理后得出当前环境分贝值。本设计还将增加一个环境粉尘浓度监测功能,用以模拟在工地上使用的扬尘噪声监测设备,将得到的分贝值和环境PM2.5浓度值显示在液晶屏中。最终通过蓝牙技术,将噪音分贝值和PM2.5浓度值发送给安卓手机的应用程序中,可以更加便捷地监测当前环境的情况。关键词:噪音监测,PM2.5,STM32,蓝牙

IntelligentEnvironmentalNoiseMonitoringSystemBasedonSTM32Abstract:Inrecentyears,withthecountryisgraduallydevelopingandexpanding,industrialdevelopmentmakesourcountry'seconomygrowrapidly,butitalsoleadstovariousproblemsthatwerenotdiscoveredbeforethedevelopmentrapidlyofthecountry.Noisepollutionisoneofthem.Ambientnoiseaffectontheenvironmentoraroundpeople,seriousevencandamagetheenvironmentortopeople'sphysicalandmentalhealthcausedgreatinfluence.Therefore,weneedasimplenoisemonitoringinstrument,whichcaneasilydetectwhetherthecurrentenvironmentalnoisedecibelvalueissuitableforpeople'slife,soastoachievethepurposeofmonitoring.Tomonitortheenvironmentalnoise,thegraduationprojecttopicistomonitortheenvironmentalnoisesystem,thesingle-chipmicrocomputerusedlowcost,butpowerfulandstablefunctionofSTM32single-chipmicrocomputerchip,usedforthesoundsignalprocessingtoobtainthecurrentenvironmentdecibelvalue.Thisdesignwillalsoaddanenvironmentaldustconcentrationmonitoringfunction,whichisusedtosimulatethedustnoisemonitoringequipmentusedontheconstructionsite.TheobtaineddecibelvalueandenvironmentalPM2.5concentrationvaluearedisplayedontheLCDscreen.Inaddition,thenoisedecibelvalueandPM2.5concentrationvaluewillbesendtotheandroidphoneappthroughbluetoothtechnology,whichcanmoreeasilymonitorthecurrentenvironment.Keywords:Noisemonitoring,PM2.5,Bluetooth,STM32

目录255671绪论 165751.11.1研究背景和意义 1267871.1.1噪音监测系统的背景分析 1149901.1.2本课题的研究意义 263121.2课题研究方法和内容题研究 246591.2.1研究方法 2316721.2.2研究内容 3183432系统分析 4270252.1系统背景及现状分析 4217952.2需求分析 4141282.3可行性分析 563153系统总体设计及硬件实现 7152373.1系统总体设计 788383.2系统硬件实现 8200993.2.1STM32单片机模块 8308463.2.2声音监测模块 9158483.2.3PM2.5监测模块 9317513.2.4蓝牙通信模块 10197763.2.5液晶显示屏模块 11211873.2.6ADC0832模数转换模块 11171243.2.7硬件实现效果 12276414系统软件设计与实现 13209944.1开发工具的介绍 13212444.1.1KeiluVision4单片机开发工具 13291814.1.2AndroidStudio开发工具 13157684.2软件设计总体思路 13301114.3硬件控制代码设计 14324994.3.1Main主控函数 1422844.3.2AD转换模块 1527064.3.3分贝采集传感器模块 17129624.3.4粉尘传感器模块 19205704.3.5蜂鸣器模块 2178504.4客户端APP设计 22168384.4.1客户端APP总体设计思路 22248284.4.2逻辑流程 2345264.4.3数据接收并显示程序 2373714.5系统实现效果 2628915总结 286646参考文献: 29609致谢 30PAGE30绪论1.1研究背景和意义噪音监测系统的背景分析在科技飞速发展的21世纪,世界各国的经济情况也以快速的形式发展起来,人们一边享受着科技发达带来的摩登生活,一边也要承受着随它附来的各种问题,如气候的恶劣变化、温室效应、全球变暖、各类自然灾害等等,其中,环境噪音问题是我们如今所不能再回避的问题,尤其是生活在城市中的人们或近于施工处所的人们。环境对我们生活中的方方面面都有着巨大的影响,而环境因素又是随着环境时时刻刻变化的,声音本是无害的,甚至可以是悦耳的,但是过大嘈杂的声音却有时候会使人感到不舒适,即环境噪音,它会引起人们烦躁,如果音量过大或音调过高的高噪声环境,则可能危害到人们的生理和心理上的健康。其造成的危害可能是:1.对听力造成损害2.对视力造成损害3.对人们的心血管造成损害4.对神经系统造成损害,即容易愤怒、激动甚至失去理智5.对睡眠造成影响,即容易疲倦、睡眠不足等等。因此对环境噪音的监测与控制在对人的身体健康和身心健康方面有着十分重要的作用,而加强对环境噪音的检测与控制则显得尤其重要。百度百科[z]百度百科[z].\t"C:/Users/Administrator/Desktop/%E3%80%8A%E5%9F%BA%E4%BA%8ESTM32%E7%9A%84%E6%99%BA%E8%83%BD%E5%99%AA%E9%9F%B3%E7%9B%91%E6%B5%8B%E7%B3%BB%E7%BB%9F%E3%80%8BPaperTime%E6%96%87%E6%A1%A3%E6%A3%80%E6%B5%8B%E6%8A%A5%E5%91%8A/htmls/sentence_detail/_blank"/p-161811482.html我国对噪音污染的关注开始于二十世纪70年代,1979年,第一期噪声训练班被举办,明确了培养噪声监测人员的决定,噪声监控从简单的噪音监测往多功能、便捷式、小型化发展,直至现在,噪音监控技术现在发展的已经相当成熟,并且衍生出多种功能。工地扬尘噪声监测设备就是这么一款多功能、应用性强的环境保护设备,它不仅能做到噪声的监测,还可监控工地扬尘浓度以及温湿度监控和图像抓拍与录制。不仅解决了民众对施工工地质疑的问题,也为工地环境奠定了良好自查基础。随着时代的发展,工业的发展规模也逐步扩大,因此很多为了发展而建造的场所如高楼、立交、地铁等的数量也逐渐增多,因此噪音防治迫在眉睫,而要进行防治,则必须从技术、经济和效果等方面进行综合权衡,具体问题具体分析。本文就是一款针对环境分贝值简易测量设计方案,用于监测当前环境分贝值是是否达到人们适宜居住的一个健康环境。本课题的研究意义随着国家政策的引导,城市的发展、交通、建筑工业和社会生活的规模不断扩大,就很容易导致各种污染问题丛生,环境噪声污染即是其中之一,它会对人体构成许多影响,如生理或心理上的,说它是人们最容易直观感受到的自然环境污染因素之一的原因是不同人类活动对环境分贝的要求也不尽相同。长期的处于噪音环境中生活容易导致人们会过激行动,甚至引发一些群发性事件从而影响社会的和谐和稳定。因此我们应该对声源进行控制和整治,而噪声监控系统则是助我们对环境噪声污染进行监控和改善的有力帮手,通过从噪声监控系统中得回的数据,我们可以知道当前环境质量是否良好,从而做出是否改变或改善当前环境使得人们生活更舒适的决策。本课题研究实现一个对噪音和空气质量值进行检测的系统,它具备监控当前环境的分贝噪音值和空气PM2.5浓度值功能,用于提示当前生活环境是否舒适,同时满足携带方便、价格低廉、操作简便等方法,希望能够对地球的环境健康保护有一定的帮助。课题研究方法和内容题研究研究方法本论文在编写过程中主要采用了以下的研究方法:文献研究法:通过网络、查阅书籍和相关的文献来取得一些对于课题有用的资料和前人设计的结果,从中获取其中有用的信息,论证其可行性,从而科学、客观、全面地了解所要研究的问题,找出问题的本质属性,更高效的寻找解决问题的办法。实验法:通过对问题的研究和分析,从已得出的结论和经验出发,形成一种新的假设,再将形成的假设计划出一个可控的实验方法,通过多次的科学实验验证,观察自变量在变化过程中因变量的变化,从而的得出自变量和因变量的关系,最后统计得出假设是否成立。研究内容本论文总共分为五个部分,每个部分内容安排如下::绪论。主要阐述本论文的研究内容和背景的,以及讲述研究过程中使用的方法。:系统分析。主要对系统进行需求分析,从经济,技术等方面对噪音检测系统进行可行性分析。:系统总体设计及硬件环境搭建设计。主要介绍硬件模块的描述及功能,逻辑流程,模块设计以及硬件模块的设计思路。:系统软件功能设计与实现。主要介绍系统的全部模块的实现代码以及逻辑流程和APP端是如何实现从而得出运行效果。:总结。主要对系统所实现的效果进行总结,并对系统存在的问题和可改进之处作出说明。最后是参考文献以及致谢内容。

系统分析随着噪音污染日益对人们的生活造成困扰,在经过对相关资料的收集整理之后,对智能噪音监测系统的现状以及系统的需求进行分析,包括对智能噪音监测系统的用户需求和功能需求,和对智能噪音监测系统的完成进行可行性的分析。系统背景及现状分析随着社会经济的发展,各大城市的建设发展进程加快,城市交通的扩建、人口基数的增大、各类施工项目持续增长等造成的噪音污染已然成为当今社会环境污染的四大污染之一,人们对噪音污染的看法与关注度也越来越高,其对人类健康的危害也引起了极大关注。因此为了减少这种污染带来的危害,人们便想出通过了解周围环境的声音的分贝值来知道当前环境的声音是否属于噪音污染,检测噪音的仪器便应运而生。噪音检测仪器从最初的指针式人工读数声级计发展到数字式声级计,再到后来的能够自动采集、存贮、处理数据等功能的自动监测环境噪音的仪器,到现在的小型化、便携式、多功能使用仪器,环境噪音监测技术发展的十分迅速也越加成熟。本设计拟采用声音传感器LM386作为分贝采集传感器。它可以将采集到的声音进行放大,再通过AD转换电路对信号进行处理,从模拟信号转换成数字信号,再通过蓝牙连接手机并在APP中显示出具体分贝值。需求分析用户需求对于智能噪音检测系统,用户需求基本分析如下:设备:低功耗、低成本方、操作简单且便于携带。检测功能:系统在正常情况下能测出当前环境分贝值和PM2.5浓度值。报警:一旦PM2.5浓度值高于设置的报警值马上点亮LED灯与蜂鸣器报警提示用户。手机应用程序:能实时查看监测系统的测量出的噪音值和PM2.5浓度值,并且可以通过手机应用修改PM2.5报警阈值。功能需求系统要实现的功能内容包括:环境声音分贝值的测量、环境中PM2.5浓度值的测量、模数转换的处理、PM2.5超标警报,与手机数据共享等功能。为了实现以上功能,本次设计将采用STM32F103C8T6单片机作为控制核心,其具有低功耗、低成本、微型化、便于操控,便于携带且性能稳定等优点,用以测量出分贝值、PM2.5值,超标报警,与手机数据共享的基本功能。采用声音传感器LM386作为分贝采集传感器,GP2Y1010AU0F粉尘传感器作为PM2.5浓度值测量传感器,实现将分贝和PM2.5的模拟量以电流形式输出,再用模数转换器将两个传感器输出的电流信号变成能与单片机正常输入输出的电平。可行性分析经济可行性分析随着人们对环境污染的关注度增高,噪音污染问题也越被人们所注意,因此用来监测噪音分贝的仪器也层出不穷且功能越发多样化地被应用于社会生活中,目前复杂的多功能噪音监测系统--噪声扬尘监测系统被广泛应用于工地施工监测上,在普通生活中也随处可见简易的噪音监测系统的使用,如公园里,靠近马路的小区中,需要环境安静的图书馆中等等。当下,市面上使用的智能噪音监测系统功能性多,且针对场所较为专业,用在家用有小题大做。本系统设计结合单片机,降低成本实现资源利用最大化,每个家庭都能买得起。因此本次设计的智能噪音监测系统则是生活中便于人们操作使用的、成本也较为低廉的STM32单片机和传感器所组成,为普通生活中测量环境噪音和PM2.5浓度值提供便利。技术可行性分析以STM32F103C8T6单片机和分贝采集传感器、粉尘采集传感器为核心设计出的噪音监测系统能够严格控制系统的体积大小,模块价格,以及单片机的耗能和稳定性,使用传感器来实现对环境的噪音和粉尘浓度检测,逻辑电路简单易懂,编程难度也不算高,还能够依照实际的使用情况对系统的部分功能做出改进,如加入温湿度检测模块等。综上叙述再结合现实中已经实现过的案例系统可知,本次设计方案以STM32F103C8T6和分贝采集传感器、粉尘采集传感器为核心设计出噪音监测系统是可行的。

系统总体设计及硬件实现系统总体设计经过前面系统分析,初步确定系统需要实现噪音和PM2.5监测功能以及PM2.5超值报警功能,系统组成分为硬件和软件部分,构成如下:1、硬件部分STM32F103C8T6单片机分贝采集传感器GP2Y1010AU0F粉尘传感器MLT-BT054.0蓝牙模块和串口2、软件部分STM32的初始化;数据的采集、发送、接收;LCD显示;客户端APP显示等。系统总体组成如图3-1所示,其中传感器和STM32通过GPIO口通信并将数据输出到LCD1602中显示出来,从而实现实时监测当前环境中噪音值、环境PM2.5浓度值;也可以通过蓝牙MLT-BT054.0与单片中的串口相接,从而实现与手机蓝牙通信,实现数据实时同步;用户可以手动设置报警阀值,当环境PM2.5浓度值超过阀值时蜂鸣器产生警报。蓝牙分贝采集传感器蓝牙分贝采集传感器数据GPIOLCD显示屏手机客户端STM32单片机数据GPIOLCD显示屏手机客户端STM32单片机粉尘粉尘传感器GPIOGPIO图3-1系统总体组成框图系统硬件实现硬件部份包含功能模块分别是:STM32单片机、LM386分贝测量传感器、GP2Y1010AU0F粉尘传感器、1286LCD显示器、蜂鸣器、无线蓝牙收发器。将各个硬件模块线连成整一个硬件设计部分。STM32单片机模块STM32单片机是由美国意发半导体公司研发的基于ARMCortex™-M处理器的微控制器芯片,它的功能比传统8位单片机更加完善和稳定,不仅可以使用寄存器进行编程,还可以使用官方提供的库文件进行编程,集高性能、实时功能、数字信号处理、低功耗与低电压操作等特性于一身,同时还保持了集成度高和易于开发的特点。百度百科[z].\t"C:/Users/Administrator/Desktop/%E3%80%8A%E5%9F%BA%E4%BA%8ESTM32%E7%9A%84%E6%99%BA%E8%83%BD%E5%99%AA%E9%9F%B3%E7%9B%91%E6%B5%8B%E7%B3%BB%E7%BB%9F%E3%80%8BPaperTime%E6%96%87%E6%A1%A3%E6%A3%80%E6%B5%8B%E6%8A%A5%E5%91%8A/htmls/sentence_detail/_blank"/article/585701.html本课题的主控芯片使用到的STM32F103C8T6微控制器就是一款典型的STM32单片机,它采用了Cortex-M3内核,使用的RISC精简指令集拥有更高的代码运行效率和更大的Flash,CPU最高速度可达72MHz,且可兼容市面上所有的ARM工具和软件。主控模块跟其他模块的接线电路如下所示:图3-2主控芯片电路图声音监测模块声音监测模块采用了LM386声音传感器,用于周围环境声音进行采集,它是一种音频集成功率放大器,可以对采集到的微小声音进行集成放大且功耗低。声音采集传感器的引脚3与单片机P30引脚(数据接收RX)、引脚2与P31引脚(数据发送TX)相连,解调后的音频信号经滤波后进入LM386的引脚3,经过偏置电路再进入AD转换电路转换后将模拟量显示在LCD屏上。图3-3分贝测量模块电路图PM2.5监测模块PM2.5监测模块使用的是型号为GP2Y1010AU0F的粉尘传感器,用于检测周围环境粉尘浓度值,中间有小孔可让空气自由流过,红外光发射二极管和光电晶体管斜置于其内部,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。图3-4粉尘传感器实物图该模块电源正极接单片机P20引脚端口,负极接地,驱使传感器红外二极管及LED开始工作。P20端口是输出端,用于检测粉尘浓度电压模拟量,LED端是输入端,用于串行数据输入,从输出电压模拟量的大小来判定环境的PM2.5浓度值。图3-5粉尘传感器电路图蓝牙通信模块为了使单片机硬件与手机APP客户端之间进行通信,蓝牙模块采用了MLT-BT054.0芯片,它可支持与苹果程序端或安卓程序端通信或主从一体。用户可以通过串口和蓝牙芯片进行通信,串口使用TX,RX两根信号线对接入单片机P21(串行输入口)、P22(串行输出口)接口。图3-6蓝牙模块电路图在单片机引脚中:SIMRX(ReceiveData)是P21,SIMTX(TransmitData)是P22。蓝牙串口协议中:RXD引脚为接收数据,TXD引脚为发送数据。所以用用蓝牙端的数据输出,输出到单片机的数据接收处,反之亦然来完成蓝牙端口跟单片机端之间的直接数据传输。液晶显示屏模块图3-7LCD液晶显示屏模块电路图本次设计采用的是点阵式图形液晶显示屏12864LCD,它主要由行或列驱动器及128×64 全点阵液晶显示器组成。使用通信模式为串行通信,与单片机P5-9,P12-15引脚相连,可完成图形显示,也可通过模块内部的RAM提供64×16的显示空间,显示4行8字(32个汉字)或64个ASCII码字符。ADC0832模数转换模块模拟信号只有转化为数字信号后才能使用软件进行处理,而信号的转化得借助转换器来实现,本设计所使用的转换器为ADC0832,CS端为输入端,未工作时处于高电平状态,时钟信号(CLK)和数字地/数字信号输出(DI/O)可任意电平,当配置位的2位数据为1、0时,CH0进行单通道转换。ADC0832与单片机的接口分别是CS、CLK、DO、DI。由于DO与DI端与单片机的接口是双向的,在通信时不能同时有效,所以将DO和DI可并联在一根数据线上使用,即电路图中整合为DI/O接口。图3-8ADC0832电路图硬件实现效果经过努力,最终硬件实现效果如下所示:图3-9硬件实现效果图

系统软件设计与实现开发工具的介绍KeiluVision4单片机开发工具KeilC51开发工具旨在解决嵌入式软件开发商面临的复杂问题,它提供了包括标准的C编译器、宏汇编器、调试器、链接器、存储器和一个功能强大的仿真器等在内的完整开发方案,通过一个集成开发环境(μVisionIDE)将这些部分组合在一起。百度百科[z].\t"C:/Users/Administrator/Desktop/%E3%80%8A%E5%9F%BA%E4%BA%8ESTM32%E7%9A%84%E6%99%BA%E8%83%BD%E5%99%AA%E9%9F%B3%E7%9B%91%E6%B5%8B%E7%B3%BB%E7%BB%9F%E3%80%8BPaperTime%E6%96%87%E6%A1%A3%E6%A3%80%E6%B5%8B%E6%8A%A5%E5%91%8A/htmls/sentence_detail/_blank"/item/keil/4082184?ivk_sa=1本设计采用KeilμVision4C语言软件开发系统,可使用多个窗口进行代码编程,使得代码环境视觉上整洁,运行上也更为高效,具有的RealViewMDK集成开发环境,使得编译器、调试工具与ARM完美匹配。AndroidStudio开发工具Android从面世以来已经发布了二十几个版本,Android系统的蓬勃发展,离不开手机厂商、开发者、用户,其中,开发者扮演着不可或缺的角色,AndroidStudio则是他们用来进行软件开发的工具。它是一个Android集成开发工具EclipseADT,提供了集成的开发工具用于开发和调试。在Java语言集成环境(IDEA)的基础上,它具备的功能有:支持基于Gradle的构建;重构和快速修复;支持ProGuard和应用签名;可基于模板来生成Android应用设计和组件;以及可以对UI控件进行操作和效果预览的布局编辑器。软件设计总体思路以STM32单片机开发板为控制核心,通过函数初始化,包括串口,引脚等的初始化,传感器函数的编写来实现应该呈现的功能,包括模数转换子程序、IIC串口总线子程序、PM检测子程序、噪音检测子程序、LCD显示子程序、警报子程序等。单片机端:实现串口收发功能噪音值经过AD转换由程序输出分贝值功能PM2.5浓度检测功能LCD显示屏显示功能APP端:接收单片机传送的数据功能粉尘浓度检测阈值可调功能硬件控制代码设计Main主控函数Main主控函数主要完成以下功能:完成定时器、计数器、中断系统、串口以及按键的初始化,对功能实现所需要使用到的函数进行配置调用,包括:LCD显示、粉尘传感器初始化和报警、声音传感器读取数据,并循环工作和显示子程序所得数据。主函数代码如下:#include"head.h"floatg_MeasureDitan=0.0;intmain(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//配置中断向量表 delay_init(); Key_GPIO_Config(); LED_GPIO_Config(); USART1_Config(); USART3_Config(); AppInitKey();GPIO_Configuration_12864LCD(); Initial_LCD_ST7684(); TIM4_Configuration(); InitGP2Y1010AU0F(); StartBeep(); ReadInitPassDatae();g_MsgPage=1; while(1){DisplayWindow(); delay_ms(10);}}AD转换模块ADC0832共有18个通道,可测量16个外部和2个内部信号源,各通道的A/D转换的模式执行可以是单次、连续、扫描或间断,模式执行结果可以左、右对齐方式存储在16位数据寄存器中。噪声的采集采用声音传感器LM386,它是一种音频集成功率放大器,输出的是模拟信号,同样粉尘传感器输出也是模拟信号,因此需要使用转换电路将模拟信号转换为数字信号,即使用A/D模数转换器。声音传感器将环境中的信号采集后,经过放大电路,收集到的微小的噪音信号值放大,粉尘传感器则是将采集到的空气中灰尘经过折射光线计算出模拟量值,两者再通过ADC0832转换电路,对信号进行放大、量化,再通过单片机的内部程序将得到的分贝值和空气PM2.5浓度值输出到LCD液晶显示屏。输入通道控制字输入通道控制字产生时钟信号开始使能芯片读取2字节数据字节数据校验将值传入指定寄存器结束图4-1ADC0832数据读取程序流程图其中A/D转换电路通道选择代码实现如下://ADC0832读取函数读取ADC0832转换值函数//入口函数:channel选择通道ucharADC0832_Read(ucharchannel){ uchari=0; uchartmp=0; //高字节数据 uchartmp1=0; //低字节数据 //开始标志位 ADC0832_DODI=1; _nop_();_nop_(); ADC0832_CS=0; //片选信号 ADC0832_CLK=1; _nop_();_nop_(); ADC0832_CLK=0; _nop_();_nop_(); //选择通道 switch(channel) { case0: //通道0 ADC0832_DODI=1; //SGL=1; _nop_();_nop_(); ADC0832_CLK=1; _nop_();_nop_(); ADC0832_CLK=0; _nop_();_nop_(); ADC0832_DODI=0; //ODD=0; _nop_();_nop_(); ADC0832_CLK=1; _nop_();_nop_(); ADC0832_CLK=0; _nop_();_nop_(); break; case1: //通道1 ADC0832_DODI=1; //SGL=1; _nop_();_nop_(); ADC0832_CLK=1; _nop_();_nop_(); ADC0832_CLK=0; _nop_();_nop_(); ADC0832_DODI=1; //ODD=1; _nop_();_nop_(); ADC0832_CLK=1; _nop_();_nop_(); ADC0832_CLK=0; _nop_();_nop_(); break; default: break; }分贝采集传感器模块分贝采集的流程大致分为5步:获取声音的数据,通过MIC(麦克风)检测电压,对输出电平进行放大后经过AD采样和量化得到声音的波形数据,为时域离散信号。进行时域变换,使用频谱,把时域信号转换为频域信号,可使用FFT/DFT算法。分贝计算,声音分贝值是由各个频率分量的声音分量组成的,通过划分倍频程把频域信号绝对量转换为相对量(db)。计算dba,引用A声级计量声压,让测量得到的分贝值值更符合人体主观感觉。因为人耳对不同频率的声音的敏感度不同,如当声音的分贝值相同时,3kHz比300Hz听起来更响亮一些。显示噪音值,把经过声级处理后得到的噪音值通过程序在液晶显示屏显示出来。频域信号频域信号分贝计算波形数据声音AD采样和量化频谱处理计算出的分贝值噪音值A率加权后计算dbaA级计权下噪音分贝值图4-2分贝采集传感器采集流程图AD信号的采集在定时器中断中进行,每采集100次取一次平均值,通过调用已经写好的显示函数显示在LCD显示屏中,显示的噪音值为全局变量,当每次采集并取平均值后,噪音值会被重新更新并显示出来。主要控制代码实现如下://计算分贝值voiddb_count(){ ad=ad/100; //采集100次ad值后计算平均值,均值滤波 V=VCC*ad/255.0; //计算所测电压,V/ad=VCC/255 low_V=(low_V+V)/2; //与上一次测量电压值求平均值 low_V=V; //记录分贝电压值 db=35+V/4.0; //根据电压对应计算分贝值}voidmain(){ uinti=0; if(key_jian==0) { delayms(100); if(key_jian==0) AT24C02_write_date(0,120);//存储分贝值限值 } db_up=AT24C02_read_date(0); LCD_init(); while(1) { scan(); if(set_f==0) { i++; ad+=ADC0832_read(0);//读取AD值,并累加记录到ad上 if(i>=100) { i=0; db_count(); display(); ad=0; } delay_n40us(80); } else display2(); }}粉尘传感器模块图4-3粉尘传感器内部原理图从原理图可以看到,粉尘和烟雾粒子从圆孔进入,通过空气传导设备使进入圆孔的空气流通,红外发光二极管和光电晶体管斜置传感器内部,发光二极管发射光线,晶体管接受二极管发射出来的光,引起电压的变化,电压的变化经过放大电路进行放大处理,通过A/D数模转换电路将模拟量转换成数字量,再通过单片机内部程序使得LCD屏幕显示检测到的空气粉尘浓度值。模块主要涉及三个函数:传感器初始化函数、浓度值计算函数、取均值函数。传感器初始化函数:使用串行通信,对红外二极管进行配置,GP2Y_Low打开红外开关,以及调用配置好的ADC初始化函数。浓度值计算函数:通过ADC函数采集到的电压值经过计算得到粉尘浓度值g_GP2yNumber。取均值函数:由于采样点只有圆孔内部一处,为了使计算出的浓度值产生的误差较小,对该采样点进行多次采集再取均值,即计算循环times次后得到的浓度值的均值g_GP2yNumber=pm_val/times。粉尘传感器相关控制函数如下:voidInitGP2Y1010AU0F(void)//传感器初始化{ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //GPIOA时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //PA1--二极管控制 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_0); GP2Y_Low; ADC_Configuration(); }floatTestGP2Y1010AU0F(void){ uint16_tAD_PM; floatpm; GP2Y_High;//关闭红外二极管 delay_us(280); AD_PM=Get_Adc();//采样,读取AD值 delay_us(40); GP2Y_Low;//打开 delay_us(9680); pm=0.17*AD_PM-0.1; g_GP2yNumber=pm-50; returng_GP2yNumber;}voidGet_GP2Y_Average(u8times){uint32_tpm_val=0;uint8_tt; for(t=0;t<times;t++){pm_val+=TestGP2Y1010AU0F();delay_ms(5);}g_GP2yNumber=pm_val/times;}蜂鸣器模块蜂鸣器模块与STM32103单片机的P19引脚和蜂鸣器的b级相接,用于报警处理。当P19输出1蜂鸣器不工作,P19输出0时蜂鸣器开始工作。即当采集到环境PM2.5浓度值大于设置好的值时,蜂鸣器报警,单片机采用三极管来放大电流驱动蜂鸣器工作,是因为蜂鸣器工作电流较大,I/O口无法直接驱动。图4-4蜂鸣器模块电路图蜂鸣器控制代码如下。当采集到环境PM2.5浓度值大于预设值的时候就会调用该函数启动蜂鸣器发声。voidBeep(){ if(g_GP2yNumber<=AD_PM) beep1=1; elsebeep1=0;}客户端APP设计客户端APP总体设计思路设计开发工具:(1)androidstudio开发软件 (2)计算机 (3)安卓手机按照总体设计思路,客户端APP需要实现一个简单的蓝牙数据接收客户端,蓝牙设备的启用以及其搜索功能均要开启,为软件接受外界信号作一个必要准备。在系统内设计一个简单的数据显示功能,将在单片机上得到的数据,通过蓝牙通信传输数据到手机APP端并显示出来,可设置单片机上PM2.5浓度阈值同步。具体可分为以下几部分:1.硬件物理访问地址显示与单片机上蓝牙模块连接的MAC地址。2.噪音值显示当前程序发送过来的噪音值数据。3.PM2.5值显示当前程序发送过来的PM2.5数据。设置上限值系统设置上限值为80ug/m3,可手动修改,单片机掉电保存。逻辑流程图4-5手机端软件逻辑流程图数据接收并显示程序先检测设备是否支持蓝牙,支持后检查蓝牙是否开启,当用户没有开启蓝牙时提示用户是否开启蓝牙,开启蓝牙后对设备进行扫描,以连接到所需单片机上的蓝牙,扫描有周期限制,到达时间后不管是否扫除新设备都停止扫描,添加初始参数unknow-device,自动获取设备地址,但无法连接设备,用户设置设备为R.id.device_name,通过扫描得到,MAC地址即单片机蓝牙的数据链路地址。设置蓝牙初始配置代码如下:检查是否支持蓝牙设备,并咨询用户是否打开蓝牙//检查来确定设备上是否支持BLUEif(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)){Toast.makeText(this,R.string.ble_not_supported,Toast.LENGTH_SHORT).show();finish();}//蓝牙适配器通过蓝牙管理器初始化finalBluetoothManagerbluetoothManager=(BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);mBluetoothAdapter=bluetoothManager.getAdapter();if(mBluetoothAdapter==null){Toast.makeText(this,R.string.error_bluetooth_not_supported,Toast.LENGTH_SHORT).show();finish();return;}if(!mBluetoothAdapter.isEnabled()){IntentmIntent=newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(mIntent,1);//通过startActivityForResult()方法发起的Intent将会在onActivityResult()回调方法中获取用户的选择,开启,收到RESULT_OK,拒绝,则RESULT_CANCELED}设备扫描,检测创建的用户mLeScanCallback是否被扫描出来,扫描结果为false,周期扫描后停止,为true,调用方法打开菜单。privatevoidscanLeDevice(finalbooleanenable){if(enable){//在预先定义的扫描周期后停止扫描mHandler.postDelayed(newRunnable(){@Overridepublicvoidrun(){mScanning=false;mBluetoothAdapter.stopLeScan(mLeScanCallback);invalidateOptionsMenu();}},SCAN_PERIOD);mScanning=true;mBluetoothAdapter.startLeScan(mLeScanCallback);}else{mScanning=false;mBluetoothAdapter.stopLeScan(mLeScanCallback);}invalidateOptionsMenu();}获取蓝牙传输过来的设备参数,使用getView()方法,传入一个convertView的参数,返回的TextView就是单片机中蓝牙的数据,以及设备初始参数unknow-device配置。classDeviceListAdapterextendsBaseAdapter{

@Override//获取实例,单片机蓝牙传输

publicViewgetView(intposition,ViewconvertView,ViewGroupparent){

if(convertView==null){

convertView=LayoutInflater.from(DeviceScanActivity.this).inflate(

R.layout.listitem_device,null);

viewHolder=newViewHolder();

viewHolder.tv_devName=(TextView)convertView

.findViewById(R.id.device_name);

viewHolder.tv_devAddress=(TextView)convertView

.findViewById(R.id.device_address);

convertView.setTag(viewHolder);

}else{

convertView.getTag();

}//添加初始参数

BluetoothDevicedevice=mBleArray.get(position);

StringdevName=device.getName();

if(devName!=null&&devName.length()>0){

viewHolder.tv_devName.setText(devName);

}else{

viewHolder.tv_devName.setText("unknow-device");

}

viewHolder.tv_devAddress.setText(device.getAddress());

returnconvertView;

}

}系统实现效果打开手机APP,打开蓝牙搜索功能,搜索并且连接上单片机。图4-6手机APP连接单片

温馨提示

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

评论

0/150

提交评论