基于物联网的噪声监测系统设计
技术说明:本文围绕基于物联网的噪声监测系统进行方案整理,重点关注 STM32 控制器、传感采集、无线传输、OLED 显示、阈值报警和系统测试流程,内容用于嵌入式与环境监测系统设计复盘,不涉及商业推广或服务宣传。
摘 要
针对传统噪声监测系统存在的覆盖范围有限、数据更新滞后及智能化不足等问题,本文设计了一种基于物联网噪声监测系统。系统以STM32F103C8T6微控制器为核心,集成分贝检测模块、温度模块、无线模块及OLED显示屏共同构建“端-云协同”的数据采集与分析平台。STM32F103C8T6将采集的噪声及温度数据利用无线模块将数据实时上传至云端数据库,支持手机端访问与可视化分析。系统搭载OLED屏幕实现本地化参数显示与阈值报警功能,并通过独立按键实现噪声阈值与时间参数的灵活配置。该系统具备高实时性、低功耗及高精度特点,可广泛应用于城市交通噪声监测、工业厂区环境预警等领域,为智慧环保与城市治理提供可靠的数据支撑。
关键词:物联网;噪声监测;系统设计
ABSTRACT
To address the limitations of traditional noise monitoring systems, such as restricted coverage, delayed data updates, and insufficient intelligence, this paper proposes an Internet of Things-based noise monitoring system through systematic design. The system employs an STM32F103C8T6 microcontroller as the core, integrating a decibel detection module, temperature module, wireless communication module, and OLED display to construct a cloud-edge collaborative data acquisition and analysis platform. The STM32F103C8T6 collect noise decibel values and temperature data, while the wireless module facilitates real-time data transmission to a cloud database, enabling remote access and visualization analysis via mobile terminals. Equipped with an OLED display, the system achieves localized parameter visualization and threshold alarm triggering, supported by independent key adjustments for noise thresholds and time parameters. With high real-time performance, low power consumption, and exceptional accuracy, this IoT-driven noise monitoring system demonstrates significant potential in urban traffic noise surveillance, industrial environmental early warning, and other applications, providing robust data support for smart environmental protection and urban governance.
Key words: Internet of Things; Noise monitoring; System design
第1章 绪论
1.1 研究背景及意义
1.1.1 研究背景
随着城市化进程的加快,环境污染问题日益严重,噪声污染已成为影响人们生活质量的重要因素之一。城市中交通工具的增加、工业生产的扩张以及建筑施工的频繁进行,使得城市噪声污染问题愈加突出[1]。长期处于高噪声环境下,不仅会对人体听力系统造成损害,还可能引发心血管疾病、睡眠障碍、情绪焦虑等问题。此外,噪声污染还对生态环境中的动植物产生不良影响,改变其生存方式,影响生态平衡。因此,对噪声进行有效监测和控制,是当前环境治理的重要内容之一[2]。
传统的噪声监测方式主要依赖于固定监测点的人工检测或专门的噪声监测设备,但这类方法存在数据更新滞后、监测范围有限、成本较高等问题,难以满足现代环境管理对实时性、广覆盖、智能化的需求[3]。物联网(Internet of Things, IoT)技术的快速发展,为环境监测提供了新的解决方案。基于物联网的噪声监测系统可以通过分布式传感器网络,实时采集各个区域的噪声数据,并借助无线传输技术将数据上传至云端进行存储和分析。这种方式能够实现全天候、实时、自动化的噪声监测,提高监测效率,并为政府、企业及个人提供科学合理的决策依据[4]。
在此背景下,设计并实现一套基于物联网的噪声监测系统,具有重要的现实意义。该系统能够利用嵌入式控制、无线通信、云端存储和数据可视化等技术,构建一个高效、低成本、可扩展的噪声监测平台[5]。通过该平台,不仅能够提高环境噪声监测的效率,还可以结合大数据分析,为噪声治理、城市规划及环境保护提供更精准的数据支持。
1.1.2 研究意义
本研究将物联网技术应用于噪声监测领域,拓展了智能环境监测的研究范畴。系统集成了嵌入式技术、无线通信、云计算和数据可视化等多种技术,为噪声监测提供了新的技术框架。通过探索噪声数据的实时采集、传输、存储及分析方法,提高了噪声监测系统的数据处理能力和智能化水平[6]。研究中采用的传感器数据融合、远程监测和智能报警机制,为环境监测系统的优化提供了技术支持。在数据分析方面,研究噪声与环境变量(如温度)的关系,为环境噪声预测和调控提供了新的研究方向。
本研究在城市管理、环境保护和公共服务等方面具有广泛的应用价值。基于物联网的噪声监测系统能够实现大范围、全天候的噪声数据采集,为政府和环保机构提供科学的数据支持,助力城市规划和噪声污染治理[7]。系统可部署于学校、医院、居民区、工业园区等场所,帮助管理者精准监测噪声水平,降低噪声对公众健康的影响。用户端应用能够让公众实时获取周围环境的噪声情况,提高社会对环境保护的关注度[8]。
1.2 国内外研究现状
随着智慧城市建设的推进,基于物联网的噪声监测系统逐渐成为城市环境治理的重要技术手段。国外在该领域起步较早,尤其是在欧美发达国家,城市环境噪声长期被视为影响居民生活质量的关键因素之一。以美国和英国为代表的城市,早已建立起较为完善的噪声监测网络。例如纽约市通过部署大量传感器节点,实时采集建筑施工、交通运输等领域的噪声数据,并借助云计算平台进行集中管理与可视化展示。此外,一些国际项目如SONYC系统还结合了人工智能技术,实现了对噪声源的自动识别与分类,进一步提升了监测的智能化水平[9]。
国内在噪声监测方面起步略晚,但近年来发展迅速。在国家环保政策和智慧城市战略的推动下,各大城市纷纷启动环境噪声在线监测平台的建设。以深圳、杭州等城市为例,已经初步形成由物联网感知层、网络传输层和平台应用层构成的噪声监测体系[10]。在技术应用方面,国内较多采用低功耗、广覆盖的无线通信方式如NB-IoT和LoRa,使得系统具备较高的部署灵活性和成本优势[11]。同时,部分高校和科研机构也积极推动噪声监测算法的研究,如基于神经网络的噪声识别模型、数据清洗与预测方法等。但整体来看,目前我国在数据标准化、智能分析能力以及系统兼容性等方面仍存在一定差距,尚需进一步提升系统的综合性能和服务能力。
未来的发展趋势将呈现智能化、集成化、绿色化等方向。一方面,随着边缘计算与人工智能技术的成熟,噪声监测节点将具备初步的数据处理与声源分类能力,提升系统实时响应效率。另一方面,多源数据融合将成为趋势,噪声信息可与气象、交通、人流等多维数据结合,构建更精准的城市环境模型。此外,低功耗设计与太阳能供电技术将助力系统长期运行,适应户外复杂环境。从整体来看,基于物联网的噪声监测系统将在政策支持、技术进步与应用需求的共同驱动下,逐步走向标准化、智能化和普及化[12]。
第2章 系统原理设计
2.1 系统总体结构
本系统的核心目标是实现对环境噪声的实时监测,并依托物联网技术完成数据的远程传输、集中管理与可视化展示。系统的功能设计不仅关注数据采集的准确性与稳定性,还强调通信的实时性、界面的可操作性以及报警机制的及时性。系统具备如下六项主要功能:
(1)噪声数据采集功能。系统采用LM2904噪声检测模块,该模块能够将环境中的声音信号转换为模拟电压信号。通过STM32F103C8T6单片机内置的ADC模块将模拟信号转换为数字信号,并进一步进行处理与分析,得到代表环境噪声强度的分贝值。系统可根据设定的采样周期持续获取环境声音信息,实现对噪声的动态监控,确保数据的连续性与代表性。
(2)温度数据采集功能。在实际应用中,环境温度可能对噪声的传播特性及监测模块的灵敏度产生一定影响。因此系统引入DS18B20温度传感器,采集当前环境温度数据。该传感器具备较高的测量精度与抗干扰能力,通过与噪声数据联动分析,可为研究噪声变化的环境因素提供数据支持,也有利于系统运行状态的综合评估[13]。
(3)无线通信功能。系统选用ESP8266 无线模块作为无线通信的核心组件。该模块支持IEEE 802.11标准,具备低功耗、易配置、高可靠性的特点,可将本地采集的数据稳定传输至云端服务器,实现远程数据访问与共享。考虑到不同场景下的通信需求,系统设计上也预留了扩展接口,可选配NB-IoT或LoRa等低功耗广域通信协议,以适应工业区、农村等通信条件较差区域的部署需求[14]。
(4)云端存储与数据分析功能。系统通过与后端服务器连接,将噪声与温度数据实时上传至数据库中进行存储与管理。
(5)智能报警功能。为提高系统在环境异常状态下的反应能力,设计中集成了JQ8900语音模块。当采集到的噪声数据超过用户设定的阈值时,系统会立即触发本地语音警报功能,提醒用户及时采取措施。
(6)用户交互界面功能。系统配备了OLED显示屏用于实时本地数据显示,包括当前的分贝值、温度、时间等信息。同时,用户可通过APP远程访问系统平台,查看历史数据、调整报警阈值、控制系统运行状态等操作。
2.2 总体设计方案
本系统采用模块化架构设计,以STM32F103C8T6单片机作为核心控制器,负责噪声数据采集、处理、存储和通信。系统主要由噪声检测、温度监测、无线传输、用户交互及报警五大功能模块组成,如图2.1所示。
STM32F103C8T6单片机DS1302时钟模块ESP8266无线模块LM2904噪声监测模块OLED屏幕电源模块独立按键物联网平台手机APPDS18B20温度模块JQ8900语音报警模块STM32F103C8T6单片机DS1302时钟模块ESP8266无线模块LM2904噪声监测模块OLED屏幕电源模块独立按键物联网平台手机APPDS18B20温度模块JQ8900语音报警模块
图2.1 系统总体方案框图
LM2904噪声监测模块用于采集环境噪声数据,DS18B20温度传感器用于监测环境温度,为噪声分析提供辅助数据。ESP8266无线模块实现数据的无线传输,并与物联网平台对接,使用户可通过手机APP远程查看噪声与温度数据。系统通过OLED显示屏本地展示监测信息,并配备JQ8900语音报警模块,当噪声超出设定阈值时,自动触发警报。DS1302时钟模块提供时间戳,确保数据的时效性。电源管理模块和独立按键保证系统稳定运行,支持手动控制和参数调整。
第3章 系统硬件设计
3.1 设计原理
本系统原理基于物联网技术与嵌入式控制的深度融合,旨在构建一个能够实时监测环境噪声并远程传输数据的智能系统。系统整体架构采用模块化思路,核心控制器选用STM32F103C8T6单片机,具备高速处理能力和丰富的外设接口,可实现多种传感器和通信模块的高效协同工作。噪声数据的采集依赖于LM2904分贝监测模块,该模块能够对环境中声音强度进行模拟电压输出,通过ADC模数转换后转化为数字信号,由主控芯片进行数据处理和分贝值计算。
其中还集成了DS18B20温度传感器,用于获取环境温度数据,辅助分析噪声变化的外部影响因素。所有采集到的数据通过ESP8266 无线模块进行远程传输,上传至云端服务器。该模块兼容多种物联网通信协议,具有低功耗、高稳定性的优点,可实现远距离数据上传与设备控制。时间同步模块采用DS1302实时时钟芯片,确保所有噪声记录具备精确时间戳,便于后续数据的溯源与分析。系统还配备OLED显示屏用于本地数据显示和状态指示,界面简洁直观,便于用户快速掌握监测情况。用户可通过按键实现对系统时间、阈值等参数的本地设置。为增强系统的智能响应能力,引入了JQ8900语音播放模块,当噪声值超出预设阈值时,系统将自动触发语音警报,实现报警机制,提高系统实用性。整个系统设计遵循低功耗、可扩展、可远程管理的原则,适用于多种复杂环境下的噪声监测需求。
3.2 STM32F103C8T6开发版
本系统选用STM32F103C8T6单片机,相较于传统51单片机,STM32具备更高的运行速度,集成2个ADC模数转换通道。此外,STM32F103C8T6具有强大的通信和控制功能。
STM32F103C8T6采用48引脚封装,工作频率可达72MHz,并集成3个普通定时器和1个高级定时器。此外,该单片机具有64KB FLASH存储器和20KB SRAM,支持ST-LINK和JTAG调试下载功能。其电源部分采用3.3V稳压芯片,最大输出电流300mA,可满足大部分外设供电需求。
本系统所用的STM32F103C8T6如图3.1所示,其主要硬件特点包括:(1)电源指示灯(PWR):用于指示单片机的电源状态,正常工作时为常亮,异常时可能变暗或闪烁。(2)用户LED(PC13):用于单片机功能测试,如运行状态指示,便于初学者调试。(3)启动方式:支持3种启动模式,包括用户存储器、闪存及系统存储器模式。(4)复位电路:用于系统复位,保证单片机稳定运行。(5)8MHz主晶振:用于设置单片机系统主频至 72MHz。(6)32.768kHz RTC晶振:用于内部RTC计时,避免额外时钟芯片的使用。
图3.1 STM32F103C8T6实物图
3.3 核心控制模块电路设计
如图3.2所示,该设计的最小系统电路以STM32F103C8T6为核心,由主控芯片U8通过引脚连接启动方式选择电路、复位电路、晶振电路组成。晶振电路由8MHz晶振X1及匹配电容C2、C3(20pF)组成,OSC_IN/OSC_OUT完成时钟信号传输,为单片机提供稳定的高频时钟信号,确保指令执行时序精确;NRST负责复位控制,复位电路采用10kΩ电阻R1与按键key1串联设计,上电时通过RC延时强制复位,同时支持手动按键触发复位以应对程序异常;启动方式选择电路通过Header 3×2跳线帽连接BOOT0和BOOT1引脚接地,配合电阻R2/R3实现主闪存启动系统。SWCLK/SWDIO用于调试接口通信,其余GPIO引脚根据功能需求外接传感器或外设。
图3.2 单片机最小系统电路图
3.4 分贝采集模块电路设计
LM2904声音检测传感器模块是构成分贝采集模块电路的主要部分,其用于检测当前环境声音强度并输出模拟量再通过算法转换成分贝值,具有低功耗、灵敏度高的优点。图3.3为LM2940声音检测传感器实物图。
图3.3 LM2904实物图
分贝采集模块电路设计则如图3.4所示。模块主体通过三个引脚实现供电与信号传输,其中引脚1接入电源输入正极,外接3.3V直流电源以确保模块正常工作,引脚3接地形成闭合回路,引脚2连接到主控芯片的B1引脚上,输出与声音强度相关的电信号,接入主控的ADC输入引脚进行分贝值采集。
图3.4 分贝检测模块电路
3.5 温度采集模块设计
如图3.5所示,DS18B20温度传感器是由Maxim Integrated推出的数字温度传感器,其核心特性为单总线接口,仅需一根数据线即可实现与微控制器的双向通信,显著简化硬件设计。该传感器采用外部电源供电模式,工作电压范围宽泛,温度测量范围覆盖-55°C 至 +125°C,精度可达±0.5°C,支持9~12位可编程分辨率。其内部集成64位唯一序列号,支持单总线多点组网,并通过CRC 校验 确保数据传输可靠性。
图3.5 DS18B20实物图
该温度采集模块电路以DS18B20数字温度传感器为核心,如图3.6所示,芯片U4的引脚1连接至电源正极为传感器提供工作电压;引脚2与微控制器STM32的GPIO引脚PA8相连,作为单总线通信的数据输入/输出端,用于传输温度数据和控制指令;引脚3则直接接地,形成闭合回路。
图3.6 温度采集模块电路
3.6 数据传输模块设计
如图3.7所示,ESP8266模块是一款低功耗的UART-WiFi 透传模块,功能强大,通信距离远,价格低,体积小,功能强大内部跑LWIP协议,支持AP,STA,AP+STA三种模式,简洁高效的AT指令。其工作电压是3.3V。
图3.7 ESP8266实物图
数据传输模块以ESP8266为核心构建。如图3.8所示,VCC连接3.3V电源以供电,GND接地,形成闭合回路确保电源的稳定性;RX通过串口通信接收来自STM32的指令,TX向主控发送噪声数据。
图3.8 数据传输模块电路
3.7 数据显示模块设计
OLED屏幕是一种基于有机半导体材料自发光的显示技术,其核心结构由夹在透明阳极与金属阴极之间的有机发光层构成,当电流通过时,有机材料中的电子与空穴结合并释放能量,以光子形式发光,无需依赖背光源。这种自发光特性使其具备多项优势,在色彩表现上,通过三原色有机材料组合可以实现115%广色域与无限对比度,精准还原自然色彩且呈现纯黑色画面,响应速度快,动态画面无拖影。图3.9为OLED屏幕实物图
图3.9 OLED屏幕实物图
数据显示模块以OLED屏幕电路为核心构成。如图3.10所示,VCC接入3.3V电源为OLED屏幕供电;GND接地后形成闭合回路,SCL连接至单片机的时钟信号线用于同步数据传输,SDA连接至单片机的数据信号线实现数据双向传输。
图3.10 数据显示模块电路
3.8 独立按键模块设计
独立按键是基于机械触点的开关元件,用于单片机系统中实现用户交互。其核心结构由四个引脚组成,分为两组对称触点,未按下时两组触点内部断开,按下后四引脚全部导通形成通路。图3.11则为硬件所用的独立按键实物图。
图3.11 独立按键实物图
如图3.12所示,本设计中采用共阴极连接方式,按键一端接地,另一端通过内部上拉电阻连接至单片机I/O口,未触发时I/O口默认为高电平,按下后因导通转为低电平。当按下K1时进入参数设置模式,此时可以通过K1(加1)和K2(减1)对时间戳和噪声阈值进行修改调整。
图3.12 独立按键模块电路
3.9 语音报警模块设计
JQ8900是一款集成单片机内核的语音芯片,其实物如图3.13所示,支持3.3V~5.5V宽压供电和多种音频格式的硬件解码,采样率覆盖6K~48KHz,通过DSP硬件解码技术实现高保真音质。其优势在于灵活的控制模式,包括一线、两线串口、按键触发及SPI-FLASH直驱U盘更新功能,用户可通过上位机生成指令快速配置多种操作而不需复杂调试。芯片内置16位MCU及ADSP,支持SPI-FLASH、TF卡、U盘存储,语音文件需按00001.mp3等格式命名并存储于根目录,通过发送十六进制指令实现精准控制。
图3.13 JQ8900实物图
语音报警模块设计以JQ8900为核心,如图3.14所示,VCC接入3.3V电源为模块供电,GND接地与VCC形成闭合回路,VPP连接STM32的PA6引脚,是一线串口控制的关键接口,主要用于通过单根数据线实现与单片机的通信。通过高低电平的时序变化编码数据,实现指令传输。SPK+对应喇叭正极,SPK-对应喇叭负极,两者构成差分信号输出通道,用于驱动无源扬声器或外接功放模块。
图3.14 语音报警模块电路
第4章 软件设计
4.1 主程序设计
如图4.1所示,流程开始于OLED显示屏的初始化,随后进行WiFi模块的初始化并判断其是否成功。若初始化成功,系统将配置WiFi模块连接网络,实现与APP端的数据互联。之后系统开始采集环境中的噪声分贝值,并将结果通过屏幕实时显示,同时同步上传至云平台再通过APP端提醒用户。在用户按键操作或者在APP设置阈值后,系统将根据设定的阈值判断当前噪声是否超过限值。如噪声超标,则触发警报声音,并通过步进电机执行相应动作,直到当前环境分贝降低至所设置的上限才停止;若噪声没超标,则继续采集环境噪声。最后系统将状态回传至手机端进行实时显示。
图4.1 主程序
4.2 分贝采集程序设计
分贝采集程序主要用于实时监测环境中的声音强度,并通过计算和分析来判断噪音水平。如图4.2所示,在系统启动后,噪声监测模块会进行初始化,确保各个传感器及相关硬件设备正常运行。随后,系统开始采集环境中的声音数据,使用噪声传感器进行采样,并将采集到的信号转换为可计算的数字数据。采样数据获取后,系统会将其与预设的阈值进行比较。如果采样值低于设定值,则继续采集新的数据;如果达到或超过设定值,则进入分贝计算阶段。分贝计算算法将采集的声音信号转换为具体的分贝值以量化环境噪声的大小。计算完成后,系统会输出检测结果用于实时显示、数据存储或进一步分析,然后继续对数据进行采样收集。
图4.2 分贝采集流程图
4.3 数据传输程序设计
数据传输程序主要通过ESP8266无线模块对当前环境的噪声与温度传输到云平台后通过APP端进行实时反馈。如图4.3所示,在系统启动后,首先对无线模块进行初始化,随后ESP8266进入配网状态,若失败则继续进行配网直至连接成功,然后开始接收采集的数据,并通过无线通信传输至云平台后再发送到APP进行实时数据显示。数据传输后系统会判断当前采集信号是否发生改变,若信号变化则将信号传输至云平台再通过APP界面将更新最新数据;若信号未变化则保持原有数据显示不变。
图4.3数据传输程序设计流程图
4.4 温度采集程序设计
温度采集程序主要由温度传感器获取环境温度数据,将采集到的原始二进制数据经校验解析后转换为实际温度值并存储至系统变量中。如图4.4所示,该程序运行后首先对传感器进行初始化,然后开始对环境温度数据采样收集,将数据进行转换处理输出后继续对环境温度数据采样收集以保证该程序的实时性。
图4.4 温度采集程序设计流程图
4.5 数据显示程序设计
数据显示程序主要通过OLED屏幕实现,其在数据显示程序设计中的优势源于硬件接口的简洁性、动态控制的灵活性及环境适应能力,相较传统LCD的并行接口其引脚数量减少,降低PCB布局复杂度,为物联网提供从底层驱动到上层应用的全栈优化空间。如图4.5所示,首先单片机上电后对OLED屏幕进行初始化,然后定位显示位置后再实时接收并输出时间、温度、分贝值数据,将其显示在OLED屏幕上。
图4.5 数据显示程序设计流程图
4.6 独立按键程序设计
如图4.6所示,独立按键程序在本系统中用于设置分贝阈值以及修改年月日时分秒的数据,其运行流程始于系统上电后调用按键初始化函数,通过R1-R3按键的硬件驱动配置及中断触发模式设定。主循环中持续执行按键扫描任务,实时检测按键电平变化。当R1按键被按下时,系统切换至参数设置模式,此时R2(加)与R3(减)按键生效,支持调节噪声阈值和时间戳的参数,每次按键触发数值增减并同步刷新OLED显示界面。所有参数通过无线模块上传至云端数据库。在整个过程中,未检测到按键操作时,系统自动进入低功耗待机状态,仅保持定时唤醒与数据采集功能,确保噪声监测的实时性与操作交互的便捷性。
图4.6 独立按键程序设计流程图
4.7 语音报警程序设计
语音报警程序以JQ8900为核心实现了突破噪声阈值时触发的自动语音报警功能,能够将语音内容的高保真播放,无需专用上位机即可直接拷贝报警语音文件,显著提升部署效率,可适配不同环境噪声场景,其工业级-40℃~85℃工作温度范围与抗干扰设计,保障了复杂工况下的稳定运行,为安防、工业报警等场景提供高可靠性的语音告警解决方案。如图4.7所示,单片机上电后初始化通信接口,然后发送休眠指令进入低功耗休眠状态,系统会定期检测状态且当突破噪声阈值时会检测到触发条件并发送指令开始播放警报语音直到不再触发条件后发送休眠指令。
图4.7 语音报警程序设计流程图
4.8 软件APP程序设计
APP基于阿里云物联网平台开发,采用Android Studio作为主要开发工具,结合Flutter框架实现跨平台兼容性。如图4.8所示,该软件分为连接服务器、噪声监测、阈值设置三大功能模块,顶部显示实时连接状态,中部通过大字体突出当前噪声分贝值及等级,右侧同步展示环境温度,且设有噪声上下限输入框及发送按钮,用户可自定义阈值,点击后通过MQTT协议将数据推送至阿里云平台,触发云端报警规则,联动本地JQ8900语音模块播放警示语音。系统通过阿里云物联网平台实现数据存储。开发过程中集成MQTT客户端库保障通信稳定性,通过Retrofit实现与阿里云API的对接,确保噪声数据实时同步与远程控制功能的可靠性。
图4.8 APP界面图
第5章 系统测试
5.1 系统调试
系统调试阶段主要包括硬件连接确认、模块初始化以及网络配网等基础工作,确保系统具备完整的运行能力。图5.1即硬件总图,包含并体现了前文中所提及的所有硬件以及功能。通过连接电源,对STM32F103C8T6单片机、OLED显示屏及ESP8266无线模块进行上电测试,观察是否正常启动。此过程中OLED屏幕应显示初始化信息,表示各模块成功加载。随后进行Wi-Fi模块的连接调试。直接通过可以联网的WiFi与系统预设参数匹配,系统在初始化完成后可自动连接该热点,ESP8266模块将反馈连接状态,并尝试与云服务器建立数据链路,完成系统联网准备。系统调试过程中还包括按键控制功能测试,用户可通过实体按键调整OLED屏幕显示的时间、日期及噪声阈值,验证人机交互模块的响应性能与可靠性。
图5.1 硬件设计总图
5.2 系统功能测试
系统在接入电源后首先进入初始化状态,系统在接入电源后首先进入初始化状态。此时,下位机开始对OLED显示屏和无线模块进行模块检测与配置准备,屏幕上显示当前系统正在初始化并进行配网,以确保各硬件组件运行正常,进入待命状态。图5.2展示的是系统刚刚上电时的实物运行状态,能够看到OLED屏幕点亮并显示初始化内容,表示核心控制器和外设模块均已进入工作模式。
图5.2 系统初始化测试图
在系统完成基础初始化后,自动进入网络配网流程,此过程确保ESP8266模块与云服务器之间的数据链路建立,为后续数据通信与远程控制功能打下基础。图5.3为配网成功后OLED屏幕主界面显示状态。
图5.3 主界面测试图
在主界面状态下,用户可以按下按键R1依次选择所需设置的目标,如图5.4中的噪声阈值设置。
图5.4 噪声阈值设置测试图
在如图5.5的设置界面状态下,光标停在“上限”时,按下按键R2使得噪声上限增加1dB,按下按键R3使得噪声上限减少1dB。在阈值设置完成后按下按键R1继续进行设置选择循环。若需要调整下限同理。
图5.5 噪声上限设置测试图
继续按下按键R1将光标停留在时间戳的小时上进入小时时间设置状态,如图5.6所示。
图5.6 时间戳设置测试图
如图5.7所示,以小时为例时按下按键R2,单位加1;按下按键R3,单位减1。按下R1按键时,将设置模式循环至其他时间戳单位如分、秒、星期,在光标停留在其单位时同样按照以上方式操作改变数据。
图5.7 小时设置测试图
如图5.8所示,使用按键模块设置好噪声阈值后,当分贝检测模块检测到环境噪声突破阈值上限时,红色LED指示灯亮起,喇叭发出语音报警。
图5.8 按键设置阈值突破上限测试图
如图5.9所示,用户可以通过APP进行阈值修改,并实时通过APP观察到当前环境实时温度与分贝值数据情况。在手机APP内输入所需设置阈值的具体数值然后点击发送,OLED屏幕上将实时进行数据的改变更新。
图5.9 APP阈值修改测试图
如图5.10所示,通过DS18B20温度模块进行温度采集后将原始二进制数据校验解析转换为实际温度值,最后存储至系统变量中,实现APP与OLED屏幕实时数据同步。
图5.10 温度检测模块测试图
如图5.11所示,当系统检测到环境噪声超过设定阈值后,将立即触发报警机制。首先通过红色LED指示灯发出视觉警示,同时通过JQ8900语音模块的喇叭播放提示语音,提醒用户当前噪声水平异常。
图5.11 语音警告测试图
如图5.12所示,当系统检测到环境噪声小于设定值下限时,绿色LED指示灯发光提醒用户当前环境噪声水平优良。
图5.12绿色LED测试图
如图5.13所示,当系统检测到环境噪声处于设定值上下限之间时,蓝色LED指示灯发光提醒用户当前环境噪声水平良好。
图5.13 蓝色LED灯测试图
总结
本系统以STM32F103C8T6微控制器为核心,结合环境噪声分贝监测、语音报警、环境温度采集、物联网通信的功能构建了一款噪声监测系统。并集成DS1302时钟模块实现时间戳记录,通过LM2904分贝检测模块对噪声信号进行放大滤波处理,再结合DS18B20温度传感器监测环境温度,形成多维度数据采集体系。硬件设计采用OLED屏幕实时显示噪声分贝值、温度及时间,还支持独立按键和APP动态调整噪声阈值,为用户提供舒适方便的体验感。当检测到噪声超标时,JQ8900语音报警模块触发警示语音,同时ESP8266无线模块通过MQTT协议将数据上传至阿里云平台后实时同步到APP端,实现远程监控和控制。
该设计通过模块化硬件与云端协同架构,实现了噪声监测从数据采集到决策支持的全链路闭环。DS1302的时间戳与DS18B20的温度数据为噪声分析提供了环境上下文,OLED与APP的双端交互提升了用户体验,JQ8900语音报警与阿里云平台的联动响应满足了工业级应用的可靠性需求,适用于工厂车间、交通枢纽等高噪声场景的污染治理与设备维护。
未来基于物联网的噪声监测系统将向智能化、多维融合与全域协同方向深化发展。本系统的设计思路可拓展至更多应用场景,如农业与生态保护、应急管理与灾害响应等。随着时代的发展、技术的进步,监测类产品将更加智能化,为用户带来更加便捷生活体验。
参考文献
[1]雷浩,周德义.基于工业物联网传感器数据的噪声消除方法研究[J].物联网技术,2025,15(05):44-46+51.
[2]王睿,全萌凯.工业物联网中噪声源定位与故障诊断方法研究[J].电声技术,2025,49(01):180-183.
[3]赵玉霄.应用于低成本物联网的低功耗无晶振多址标签芯片设计及其关键技术研究[D].上海:复旦大学,2024.
[4]王伟.工业物联网中针对脉冲噪声干扰的通信控制一体化技术研究[D].成都:电子科技大学,2024
[5]张乐.混合信号噪声干扰下的物联网无线通信数据高效传输方法[J].重庆科技学院学报(自然科学版),2024,26(01):53-58.
[6]李菁菁.高干扰物联网场景下短分组通信的上行链路接收机设计[D].哈尔滨:哈尔滨工业大学,2023.
[7]蔡丽莹.面向物联网的自供电低功耗CMOS接收机关键技术研究[D].杭州:浙江大学,2023.
[8]王谢燕.基于摄像头指纹和签名的物联网安全标识与认证[D].合肥:中国科学技术大学,2022.
[9]罗丹,徐茹枝,关志涛.物联网环境中基于深度学习的差分隐私预算优化方法[J].物联网学报,2022,6(02):65-76.
[10]忻杨璇.基于降噪自编码器的物联网数据收集方法研究[D].杭州:浙江大学,2022.
[11]李松衍.基于差分隐私的物联网数据发布隐私保护研究[D].大连:大连海事大学,2021.
[12]王兴虎,袁家斌,杨东,等.基于物联网的机场噪声感知系统[J].自动化技术与应用,2021,40(04):85-88.
[13]刘小蒙,汪洋.Laplacian噪声下认知物联网频谱感知算法[J].计算机应用研究,2020,37(S2):279-281.
[14]刘学来,钟毅.基于物联网的作业场所噪声危害因素在线监测研究[J].中国卫生监督杂志,2020,27(06):569-572.
致谢
本研究的顺利完成离不开众多师长、同仁与亲友的鼎力支持与无私帮助,在此谨以最诚挚的敬意与感激之情,向他们致以深深的谢意。
首先,由衷感谢我的导师吴伟。从项目的立项构思到系统架构的迭代优化,从实验方案的反复推敲到论文框架的精心打磨,恩师始终以其深邃的学术洞察力与精益求精的科研精神为我指引方向。尤其在硬件选型瓶颈期,导师结合物联网技术发展趋势,建议采用ESP8266无线模块与DS18B20温补方案,为系统性能突破提供了关键思路;这份学术传承与创新思维的启迪,我将永远铭记于心。
感谢评审专家们提出的中肯建议,尤其是关于硬件增加与软件设计的完善意见,使论文成果更具学术价值与社会意义。
深深感恩父母二十余载的养育之恩,他们始终尊重我对技术的热爱,在论文攻坚阶段默默承担生活琐事,以无声的包容为我筑起坚实后盾。感谢挚友[姓名]在我焦虑迷茫时的暖心鼓励,那些关于“噪声治理关乎万家灯火”的深夜畅谈,让我重拾科研初心与使命担当。
最后,谨以此文献给所有为智慧环保事业默默耕耘的从业者——每一份微小的噪声数据背后,都承载着城市可持续发展的宏大愿景。尽管研究仍存在算法泛化能力待提升等局限,但我愿以此为起点,在环境监测技术的探索之路上继续砥砺前行。
附录A 系统原理图
附录B 程序
#include "stm32f10x.h"
#include "sys.h"
#include <stdio.h>
#include "Delay.h"
#include "ADC.h"
#include "gpio.h"
#include "Timer.h"
#include "OLED.h"
#include "ds18b20.h"
#include "AIR780E.h"
extern int miao,fen,shi;
extern int Flag_5s;
extern char phoneNumber[];
u8 phoneNumIndex = 1;
char display[16];
u8 count,beepCount = 20;
u8 setn = 0,keyNum = 99;
u16 temperature,coo;
u16 tempMax = 35,cooMax = 60;
u8 doorFlag = 0,sendMessageFlag = 0,warningFlag = 0;
void Init(void);
void KeyScanHandle(void);
void GetDataByADC(void);
void DisplayData(void);
void DisplaySetValue(void);
void BuzzerRingsNum(u8 num);
void ControlFun(void);
int main(void)
{
Init();
while (1)
{
KeyScanHandle();
if(setn == 0)
{
DisplayData();
GetDataByADC();
ControlFun();
}
}
}
void Init(void)
{
OLED_Init();
OLED_CLS();
OLED_ShowStr(0,3,(u8 *)" Linking...",2,0);
KEY_GPIO_Init();
BEEP_Init();
Adc_Init();
TIM3_Init(9999,7199);
TIM4_Init(999,719);
initair780();
OLED_CLS();
}
void KeyScanHandle(void)
{
if(keyNum == 0)
{
Delay_ms(20);
if(keyNum == 0)
{
setn ++;
if(setn <= 3)
{
if(setn == 1 || setn == 2)OLED_CLS();
DisplaySetValue();
}else{
setn = 0;
OLED_CLS();
}
}
}
if(keyNum == 1)
{
Delay_ms(20);
if(keyNum == 1)
{
if(setn == 1 && tempMax < 99)tempMax++;
if(setn == 2 && cooMax < 99)cooMax++;
if(setn == 3)
{
phoneNumber[phoneNumIndex] = phoneNumber[phoneNumIndex] < '9' ? phoneNumber[phoneNumIndex]+1 : '0';
}
DisplaySetValue();
}
}
if(keyNum == 2)
{
Delay_ms(20);
if(keyNum == 2)
{
if(setn == 0)
{
doorFlag = !doorFlag;
LED = !LED;
}
if(setn == 1 && tempMax > 0)tempMax--;
if(setn == 2 && cooMax > 0)cooMax--;
if(setn == 3)
{
phoneNumIndex = phoneNumIndex < 10 ? phoneNumIndex+1 : 1;
}
DisplaySetValue();
}
}
keyNum = 99;
}
void KeyScan(void)
{
if(count > 5)
{
count = 0;
if(KEY1 == 0)
{
keyNum = 0;
}
if(KEY2 == 0)
{
keyNum = 1;
}
if(KEY3 == 0)
{
keyNum = 2;
}
}
}
void DisplayData(void)
{
u8 i;
static u8 refresh;
if (warningFlag == 1)
{
if (refresh == 0)
{
OLED_CLS();
refresh = 1;
}
OLED_DrawBMP(40,0,88,4,3);
OLED_ShowStr(25,5,(u8 *)phoneNumber,2,0);
}else{
if (refresh == 1)
{
OLED_CLS();
refresh = 0;
}
for(i=0;i<2;i++)OLED_ShowCN(i*16+0,0,i+0,0);
temperature = DS18B20_Get_Temp()/10;
sprintf(display,":%2d",temperature);
OLED_ShowStr(32,0,(u8 *)display,2,0);
OLED_ShowCentigrade(56,0);
sprintf(display,"CO2:%2d%%",coo);
OLED_ShowStr(0,2,(u8 *)display,2,0);
if (doorFlag == 1)
{
OLED_DrawBMP(111,0,127,2,2);
}else{
OLED_ShowStr(111,0,(u8 *)" ",2,0);
}
if (INFRARED == 1)
{
OLED_DrawBMP(100,0,108,2,1);
}else{
OLED_ShowStr(100,0,(u8 *)" ",2,0);
}
}
}
void DisplaySetValue(void)
{
u8 i;
if(setn == 1)
{
for(i=0;i<2;i++)OLED_ShowCN(i*16+32,0,i+5,0);
for(i=0;i<2;i++)OLED_ShowCN(i*16+64,0,i+0,0);
sprintf(display,"%2d",tempMax);
OLED_ShowStr(56, 3,(u8 *)display, 2,0);
OLED_ShowCentigrade(72,3);
}
if(setn == 2)
{
for(i=0;i<2;i++)OLED_ShowCN(i*16+40,0,i+5,0);
OLED_ShowStr(72, 0,(u8 *)"CO2", 2,0);
sprintf(display,"%2d%%",cooMax);
OLED_ShowStr(56, 3,(u8 *)display, 2,0);
}
if(setn == 3)
{
for(i=0;i<2;i++)OLED_ShowCN(i*16+32,0,i+5,0);
for(i=0;i<2;i++)OLED_ShowCN(i*16+64,0,i+11,0);
OLED_ShowStr(25, 3,(u8 *)phoneNumber, 2,0);
OLED_ShowStr(25, 5,(u8 *)" ", 2,0);
OLED_ShowChar(phoneNumIndex*8+25, 5,'*', 2,1);
}
}
void GetDataByADC(void)
{
u16 adc1;
adc1 = Get_Adc_Average(9,20);
coo = adc1*99/4096;
coo = coo >= 99? 99: coo;
}
void BuzzerRingsNum(u8 num)
{
unsigned char i = 0;
for (i = 0; i < num; i++)
{
BEEP = 1;
Delay_ms(100);
BEEP = 0;
if (num != 1)
Delay_ms(50);
}
}
void ControlFun(void)
{
if (doorFlag == 1 && INFRARED == 1)
{
if(temperature > tempMax || coo > cooMax)
{
beepCount++;
warningFlag = 1;
if (sendMessageFlag == 0)
{
sendMessageFlag = 1;
sendMessage();
}
if(beepCount > 20)
{
beepCount = 0;
BuzzerRingsNum(1);
}
}else{
sendMessageFlag = 0;
warningFlag = 0;
}
}
}
void TIM4_IRQHandler(void)
{
if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
{
count++;
KeyScan();
TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
}
}