基于STM32单片机的环境实时检测报警系统设计与实现_第1页
基于STM32单片机的环境实时检测报警系统设计与实现_第2页
基于STM32单片机的环境实时检测报警系统设计与实现_第3页
基于STM32单片机的环境实时检测报警系统设计与实现_第4页
基于STM32单片机的环境实时检测报警系统设计与实现_第5页
已阅读5页,还剩38页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

PAGEPAGE69目录TOC\o"1-3"\h\u17496摘要 116939Abstract 24617引言 351441选题的背景及意义 440641.1选题背景 4209531.2国内外研究状况 4313401.2.1国外研究现状 4189231.2.2国内研究现状 44401.2.3关键技术对比与差距分析 586141.3研究意义 6320761.4设计目标 6173411.5问题模拟 63052系统设计及理论概述 8326842.1系统硬件架构 8256392.2程序主流程图 8188482.3管脚连接表 1021543硬件电路设计 11180793.1STM32F10C8T6单片机 119503.1.1STM32F10C8T6单片机介绍 11284133.1.2STM32单片机引脚图以及原理图 11267393.2温湿度传感器 1285423.2.1传感器功能概述 12166823.2.2温湿度传感器工作原理及引脚说明 1348143.3一氧化碳传感器 1463223.3.1MQ-7传感器功能描述 14114633.3.2MQ-7气体传感器工作原理及引脚说明 14319273.4OLED显示屏 15123023.4.1OLED显示屏功能描述 1555103.4.2传感器工作原理及引脚说明 16276003.5蜂鸣器 1613593.6光敏电阻传感器 1747183.6.1光敏电阻传感器功能描述 1746513.6.2光敏电阻传感器工作原理及引脚说明 18168514上位机系统应用 20172264.1编程软件keiluVsion5 204784.2界面设计软件QtCreator 20264105实物检测 22150085.1硬件模块检测 22171155.1.1OLED显示屏检验 22154255.1.2一氧化碳传感器检验 2330685.2软件模块检测 25211115.2.1ui界面控制与检测 2525006结语 2716640参考文献 287510致谢 3030175附录一 3120053附录二 35PAGEPAGE69摘要随着人们对环境质量的需求以及关注逐渐提高,实时监测环境参数并及时预警的需求也日益增加。本文设计并实现一种基于STM32F10C8T6单片机的环境监测系统,集成DHT11温湿度传感器、MQ-2/MQ-135气体传感器及光敏传感器,实现温湿度、PM2.5、CO、光照强度五参数同步采集。系统采用模块化硬件架构,创新性提出阈值预警机制:实时触发声光报警预警信息,报警响应时间<2s。通信模块整合串口(UART)传输,实时传输数据。使用Qt设计ui界面,显示采集数据并控制报警模块,形成反馈。实测表明,系统在正常环境连续工作24小时功耗为1W,界面控制响应时间<1s,适用于工厂、农业等场景。研究成果通过优化多传感器数据调度与低功耗设计,解决了传统系统在实时性与扩展性上的瓶颈,提供了低成本、高可靠的解决方案。关键词:STM32单片机;环境监测;报警

AbstractAspeople'sdemandsandconcernsforenvironmentalqualitygraduallyincrease,theneedforreal-timemonitoringofenvironmentalparametersandtimelyearlywarningisalsogrowing.ThispaperdesignsandimplementsanenvironmentalmonitoringsystembasedontheSTM32F10C8T6microcontroller,integratingtheDHT11temperatureandhumiditysensor,MQ-2/MQ-135gassensors,andaphotosensitivesensortoachievesynchronouscollectionoffiveparameters:temperature,humidity,PM2.5,CO,andlightintensity.Thesystemadoptsamodularhardwarearchitectureandinnovativelyproposesathresholdearlywarningmechanism:real-timetriggeringofsoundandlightalarmearlywarninginformation,withanalarmresponsetimeoflessthan2seconds.Thecommunicationmoduleintegratesserialport(UART)transmissiontotransmitdatainrealtime.TheQtisusedtodesigntheUIinterfacetodisplaythecollecteddataandcontrolthealarmmodule,formingafeedbackloop.Theactualmeasurementshowsthatthesystemconsumes1Wofpowerwhencontinuouslyworkinginanormalenvironmentfor24hours,andtheinterfacecontrolresponsetimeislessthan1second,makingitsuitableforfactory,agriculturalandotherscenarios.Theresearchresultssolvethebottlenecksoftraditionalsystemsinreal-timeperformanceandscalabilitybyoptimizingthemulti-sensordataschedulingandlow-powerdesign,providingalow-costandhighlyreliablesolution.Keywords:STM32microcontroller;environmentalmonitoring;alarm

引言在微控制器技术迅猛发展的今天,STM32单片机凭借其优异的性能、低功耗、多样的外设接口和强大的处理能力脱颖而出,在嵌入式系统设计界域之中,持续稳居行业领先地位,成为行业顶尖团队的一员。基于STM32单片机的环境监测系统不仅能够实现对多种环境参数的实时采集和处理,还可以通过多种通信方式将数据传输到客户端,方便用户随时随地查看环境状态,更能通过客户端实时控制元器件的运行。其灵活的编程特性和模块化设计也为系统的功能扩展和优化提供了便利。本文着力打造一套以STM32单片机为核心的实时环境监测与警报系统。本系统集成了多传感器模块群,集成了温湿度、CO和光敏等检测模块,实时监控环境参数的实施效果显著,并在检测到异常情况时发出声光报警信号,提醒用户采取相应措施。本文将详细介绍系统的整体架构设计、硬件电路设计、软件模块和ui界面设计以及系统测试过程,以验证系统的可靠性、准确性和实用性。通过本系统的研究与开发,期望为家庭、工业场所、农业大棚等场景提供一种高效、低成本的环境监测解决方案,给环境检测带来更大的便利。

选题的背景及意义选题背景环境质量直接影响人类的生活质量和健康水平。据世界卫生组织统计,全球每年因空气污染、燃气泄漏等环境灾害导致的直接经济损失超过5000亿美元,而传统监测系统存在三大痛点:设备成本高(均价超2000元)、检测精度低(湿度误差±10%)、续航能力差(仅8-12小时)。尤其在化工、农业等高危场景中,现有方案难以满足实时性、可靠性与经济性的综合需求。通过实时监测环境参数并及时发出警报,可以有效预防因环境问题引发的健康危害和安全事故,保障人们的生活安全。此外,通过Qt设计ui界面,以计算机作为上位机,能够将数据可视化的传输给用户,让用户安心更放心。国内外研究状况国外研究现状 在国外,基于STM32F10C8T6单片机(以下简称STM32单片机)对外界环境检测更深入,如通过硬件选型优化(如低功耗GNSS模块)与算法轻量化设计(如EKF并行化),将INS/GNSS/LIDAR融合导航系统REF_Ref7694\r\h[1]。随着国产传感器与AI工具链的成熟,基于STM32的“感知-决策-控制”一体化系统将在智慧城市、自动驾驶、工业检测等领域发挥更大价值REF_Ref7776\r\h[2],这项完整的生态链,也成为了全球环境智能化治理的核心技术方案。国内研究现状在国内,以STM32单片机为基础的智能环境检测控制系统研究主要围绕以下几个方面展开:一是通过对温度、湿度、光照、气体浓度等环境参数的采集;二是通过STM32单片机处理所收集的数据,以达到判断和预测环境状态的目的;最后,通过Wi-Fi、蓝牙等无线通讯模块实现数据的传输和远程控制REF_Ref7841\w\h[3]。在技术方面:国内厂商(如正点原子、黑金科技)针对中小型企业和科研需求,推出了一系列基于STM32,集成温度、湿度、PM2.5、CO等传感器,支持快速原型开发的开发套件。在政策方面:依托“十四五”规划中对生态环境保护的强调,政府大力推广智慧环保项目,例如“城市大气污染网格化监测系统”,大量采用STM32作为底层控制单元。最突出的如华为、兆易创新等企业推出国产MCU(如GD32系列),逐步替代部分STM32功能,但在高端性能(如ADC精度、RTOS稳定性)上仍存在差距。关键技术对比与差距分析如今,全球的关键技术呈多元化发展,发达国家在基础研究、核心专利和高端制造环节保持领先优势,尤其在芯片设计等领域占据主导位置。我国在5G通信、新能源等领域实现领跑,但在EDA工具等“卡脖子”技术方面仍有差距。据统计,我国依托超大规模市场优势,在算法迭代速度、应用场景转化效率方面展现独特竞争力,但在底层算力芯片、高端实验设备等基础支撑体系上对外依存度超过70%。国内外技术差距对比如表1.1所示。表1.1国内外技术差异对比技术领域国内现状国外现状差距原因传感器技术中低端传感器自给率高,高端依进口激光雷达、红外光谱传感器精度达ppd级别材料科学与工艺滞后算法集成基础PID控制,少量TinyML应用边缘端CNN/Transformer模型,算力达4TOPSAI芯片生态不完善通信协议主流LoRa/Wi-Fi,5G应用处于试点阶段全息通信(6G预研)、卫星物联网(Starlink)基础设施投入不足系统可靠性MTBF(平均无故障时间)<50,000小时军工级产品MTBF>1,000,000小时工业设计标准与认证体系缺失研究意义本文研究基于STM32F10C8T6设计的低成本环境监测报警系统,具有显著的技术价值与广泛的应用前景,在技术层面,通过多传感器数据融合与动态功耗优化,解决了传统方案中存在的精度低(±5%RH)、续航短(<24小时)及成本高等痛点,通过双报警机制,相比短信模块降低60%通信成本,且无需网络依赖,提升了系统的可靠性与普适性。进一步推动微控制器技术在物联网领域的应用。通过模块化设计和优化算法,提高系统的稳定性和可靠性,降低系统成本,为类似项目的开发提供参考。设计目标本文实现基于STM32的环境检测系统设计,实现用户通过网络对环境的实时监控,该系统可以使用户能够对想要知道的情况进行实时的掌握以及控制REF_Ref7920\r\h[4]。通过各种传感器获取环境信息(温湿度信息、光照信息、PM2.5),可以通过Qt设计的ui界面上对这些信息进行掌控。主要实现环境监控和远程监控等功能,其中涉及到多方面的研究,如对STM32进行深刻的了解和学习才能进行下一步的硬件和软件设计,实际情况设计出相应的应用软件REF_Ref7955\r\h[5]。问题模拟(1)启动系统基本配置过程,实施系统时钟调整、中断优先级分配、模块启动、串口参数配置,确定波特率为115200,定时器频率设定为100Hz。(2)STM32发送相关的AT指令,通过串口连接电脑;(3)如果电脑与串口连接成功,STM32会使采集到的环境数据每10秒通过发送给客户端,并且在OLED显示屏中显示收集到的数据;(4)用户可以根据个人倾向,在电脑端自主调整报警的敏感界限。当环境数值超过或等于既定的高点,发出警报声。(5)发生报警时,用户可以通过客户端实现调解,控制报警系统。

系统设计及理论概述系统硬件架构核心系统采用STM32微控制器作为基础,集成了多款感应装置,开发一套即时监测并实施报警功能的环境参数监控系统。系统整合了传感器、核心控制、数据传输、信息展示、警报及能源供应等核心模块。总体框图如图2.1所示。图2.1设计总体框图核心STM32代码在附录一中。程序主流程图程序流程主要是先将各个元器件进行初始化,再进行串口相连接,通过传感器采集数据后,发送给电脑终端,并通过实时对比,若环境中空气质量超过危险值则将会报警,用户可以通过终端管控报警元器件是否继续报警,其系统流程框图如图2.2所示。图2.2系统流程框图管脚连接表STM32拥有丰富的GPIO接口,将各个元器件进行管脚分配,管脚能够充分利用且不重复,可大大提升单片机的工作效率和使用率,其管脚连接表如表2.1所示。表2.1管脚连接表仪器名称管脚标注位备注温湿度传感器DAT-->PB4a温湿度光敏传感器AO-->PA3b光照强度三色灯R-->PA0G-->PA1B-->PA2蜂鸣器I/O-->PA62-->ON3-->OFF报警系统灯IN-->PA110-->ON1-->OFF是否连接电源电机4-->ON5-->OFF显示屏SDA-->PA7SCK-->PA5烧录器TXD-->PA10RXD-->PA9一氧化碳传感器AO-->PA4一氧化碳

硬件电路设计STM32F10C8T6单片机STM32F10C8T6单片机介绍STM32F10C8T6单片机(以下简称STM32)是一款基于ARMCortex-M3内核的32位微控制器,这是一种高性能、低功耗的32位RISC处理器,适用于嵌入式系统REF_Ref7991\r\h[6]。因为起具备12位ADC、6通道以及丰富的GPIO接口,还支持低功耗睡眠模式,所以被广泛用与智能传感器、电机控制及嵌入式学习项目,此外因其价格实惠,开放性较高,所以也被用于此次项目的核心开发板。STM32单片机引脚图以及原理图STM32引脚图和原理图如图3.1和图3.2所示,其核心功能包括3.3V供电、SWD调试接口、串口通信及通用GPIO。使用时需注意严格使用3.3V电源,通过BOOT0/BOOT1引脚配置启动模式,并搭配晶振电路和复位电路完成基础硬件设计。图3.1STM32引脚图图3.2STM32核心板原理图温湿度传感器传感器功能概述DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,内部由一个8位单片机控制一个电阻式感湿元件和一个NTC测温元件REF_Ref8031\r\h[7]。DHT11采用单总线通信体系,然而与仅针对温度测量的DS18B20的单总线架构形成对比,差异明显突出。它在基础的设计中,加入了湿度测量模块,使其功能更加广泛。实物如图3.3所示。图3.3温湿度传感器实物图温湿度传感器工作原理及引脚说明连接单片机与DHT11的是数据传输线,完成数据互通环节,数据交互所需时长大概在5毫秒左右。单片机启动信号发出之瞬间,实现从低功耗模式至高速工作状态的转换,启动信号传输完成,紧接着发送确认回应,执行信号采集,数据长度为40位。数据搜集阶段结束之后,用户权限确认,数据读取得以执行,可进入低速运行模式。DHT11不主动进行温湿度采集,如不接收主机发出的开始信号REF_Ref8119\r\h[8]。温湿度传感器原理图如图3.4所示。图3.4温湿度传感器工作原理图温湿度传感器引脚说明如表3.1所示。表3.1温度传感器传感器引脚说明表引脚名称备注1VDD供电3-5V电源2DATA串行数据,单总线3GND接地,电源负极一氧化碳传感器MQ-7传感器功能描述MQ-7型号的一氧化碳探测器模块,普遍应用于空气中一氧化碳浓度测量的设备,具体的实物展示见图3.5。该机制的基础原理与半导体气体敏感元件电阻的调整紧密相依。感应器表面接触到了可燃气体,气体一旦触及感应器表面,引起反应,此效应引起了电阻值的调整。。通过测量电阻值的变化,可以推断出一氧化碳浓度的大小REF_Ref8155\r\h[9],其规律是一氧化碳浓度越大,会导致导电率升高,输出的电阻就会降低,则输出的模拟信号就会生高。图3.5MQ-7气体传感器实物图MQ-7气体传感器工作原理及引脚说明MQ-7气体传感器工作原理图如图3.6所示,它将其转化为电信号输入STM32微控制器,当浓度超过预设安全阈值时触发报警(如点亮LED、启动风扇)并上传数据,实现危险气体的及时监测与防护。本次项目通过MQ-7气体传感器手机空气中一氧化碳的含量,通过连接核心板PA3接口,实时发送浓度数值。图3.6MQ-7气体传感器工作原理图MQ-7气体传感器引脚说明如表3.2所示。表3.2MQ-7气体传感器引脚说明表引脚名称备注1VCC提供5V电源2DOUT开关信号3AOUT模拟信号4GND接地,电源负极OLED显示屏OLED显示屏功能描述有机发光二极管(OrganicLight-EmittingDiode,OLED)如图3.7所示,它具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点REF_Ref8194\r\h[10],这也是本次使用OLED来显示数据的原因。图3.7OLED显示屏实物图传感器工作原理及引脚说明OLED显示屏是有多个发光二极管组成,其核心是由多个像素单元组成的矩阵阵列,它的分辨率通常是128×64像素点,其引脚图如图3.8所示,引脚说明如表3.3所示。图3.8OLED引脚连接图表3.3OLED显示屏引脚说明表引脚名称备注1VCC提供5V电源2SCLCLK时钟3SDA

MOSI数据4GND接地,电源负极蜂鸣器蜂鸣器是一种能够将电信号转换为声音信号的电子设备,其实物图如图3.9所示。电子与仪器普遍应用了蜂鸣器的功能,警示、提示及警报声是该功能实现的关键,实现安全结果。电流波动是蜂鸣器启动的基石,随之产生回音。电流流经蜂鸣器内部的振动机制,部件迅速颤动启动,声音随即响起。蜂鸣器的音量和音调的不同,主要取决于电流的强弱和振动片的振动频率REF_Ref8220\r\h[11]。项目中通过供给蜂鸣器电源,实现声频报警。蜂鸣器引脚说明如表3.4所示。图3.9蜂鸣器实物图表3.4蜂鸣器引脚说明表引脚名称备注1VCC提供5V电源2I/O接受数据4GND接地,电源负极光敏电阻传感器光敏电阻传感器功能描述如图3.10所示,光敏电阻可通过上方传感器,检测光照强后,在使用GPIO或ADC实现灵活应用:数字检测模式下,光敏电阻与分压电阻串联后接GPIO输入,通过电平高低判断光照有无(如自动照明控制);模拟检测模式中,其阻值变化经ADC转换为数值,可量化光照强度并实现分级响应(如光强调节)。在本次的项目中通过GPIO捕获数据后,通过串口发送给终端。图3.10光敏电阻传感器实物图光敏电阻传感器能够将光信号转换为电信号或其他可测量信号,从而允许我们在各种应用中利用光的信息REF_Ref8249\r\h[12]。在许多领域中都非常重要,包括但不限于照明控制、自动曝光、安全监控和环境监测等。光敏电阻传感器工作原理及引脚说明光敏电阻传感器又称为光电导探测器。入射光强,电阻减小,入射光弱,电阻增大,工作原理图如图3.11所示。光敏电阻传感器引脚说明如表3.5所示。图3.11光敏电阻传感器工作原理表3.5光敏电阻传感器引脚说明表引脚名称备注1VCC提供3.3~5V电源2DOUT开关信号3AOUT模拟信号4GND接地,电源负极

上位机系统应用编程软件keiluVsion5keiluVsion5是一款功能强大的集成开发环境,主要用于嵌入式系统的开发,尤其是针对ARMCortex-M、ARM7、ARM9等微控制器REF_Ref8279\r\h[13]。KeiluVision5通过硬件适配、代码优化、深度调试和高效烧录功能,大幅缩短STM32开发周期,提升代码可靠性与产品安全性,是工业级嵌入式开发的优选工具。示例代码如下:#include"stm32f10x.h"voidmy_music_delay(intn){ inti=0; while(n--) for(i=0;i<8050;i++);}这是一个基础的延时代码,最常用来设置某模块的工作时间。界面设计软件QtCreatorQtCreator简称Qt,主要编程语言以c++语言为主,该集成开发环境由Qt框架官方团队所创立,多系统兼容覆盖Windows及Linux嵌入式系统,如Android及iOS同样支持。开发者只需要创建一套指令流脚本,可在多平台间实施部署操作,明显提高了开发效率的效能表现,大幅削减开发费用。本次使用Qt用做项目上位机,是因为在界面上可以直观可视化动态数据:实时显示温湿度、CO浓度等。还具有高效硬件交互,通过界面按钮,使报警设备可控话,如可以暂停蜂鸣器、led闪烁等,设计页面如图4.1所示。图4.1ui界面设计图通过Qt设计ui界面,通过串口连接后,接受数据,可以实时监测当前空气质量,并通过按钮反馈给单片机,控制蜂鸣器或led的闪烁。

实物检测硬件模块检测OLED显示屏检验首先,先确定好OLED显示屏的引脚,进行单个模块检测。编写显示屏模块代码,主函数代码如图5.1所示。图5.1OLED主函数截图然后,将代码烧录之后,OLED显示屏按照设计的格式进行跳转,先显示温湿度,在1000ms后跳转显示一氧化碳浓度,跳转如图5.2和图5.3所示。图5.2显示屏显示温湿度图5.3显示屏显示一氧化碳浓度观察显示的位置和跳动的频率,可以得知显示器代码正确无误,可以完成基本实现的操作。一氧化碳传感器检验首先,先确定好MQ-7传感器的引脚并连接,在进行单个模块检测。编写一氧化碳传感器模块代码,主函数代码如下图5.4所示。图5.4一氧化碳传感器主函数截图连接传感器的引脚如图5.5所示,将代码烧录之后,打卡串口测试小程序SerialPortUtility(用来接收和发送数据的软件)连接串口并接收单片机采集到的数据,收集结果如图5.6所示。图5.5一氧化碳传感器连接图图5.6收集一氧化碳浓度数据通过数据分析可以得知,一氧化碳传感器的采集和单片机通过串口发送数据可以正常进行,能够完成基本的操作。软件模块检测ui界面控制与检测如图5.7所示将元器件连接起来,将总代码烧录至单片机中,再打开Qt启动ui界面。图5.7连接实物图启动ui界面代码,连接端口并接收数据,生成如图5.8所示的界面,将代码中的一氧化碳浓度阈值拉低至1,蜂鸣器持续报警,当按下界面中的deep-off按钮后,蜂鸣器停止报警。图5.8ui界面运行图最后,与显示屏中数据分析对比,ui界面可以正常实时显示数值并控制报警系统,能够完成基本操作。

结语本次研究基于STM32F10C8T6单片机设计了一款环境实时监测报警系统,实现了温湿度、一氧化碳(MQ-7)及光照强度等检测以及声光双重报警功能,系统具备多参数监测、实时显示和报警功能,采用模块化设计,通过SPI/I2C总线集成DHT11、MQ-7和光照强度传感器。在硬件部分,主要以STM32为核心,搭配OLED显示屏与蜂鸣器实现可视化的实时检测以及报警,通过串口(UART)传输发送数据发给上位机。软件部分以Qt设计的ui界面为基础,接收STM32收集的数据并通过ui界面显示。整个系统采用阈值触发式报警机制,当参数超过预设安全范围时,蜂鸣器立即响应并使LED灯闪烁,实现声光报警。通过对系统的不断优化和改进,将为环境监测领域提供一种高效、可靠的解决方案,为改善环境质量做出贡献。

参考文献LiN,GuanL,GaoY,etal.IndoorandOutdoorLow-CostSeamlessIntegratedNavigationSystemBasedontheIntegrationofINS/GNSS/LIDARSystem[J].RemoteSensing,2020,12(19):3271.CaiZ,PengZ,ZhangJ,etal.DesignandImplementationofIntelligentHeartRateDetectionSystemBasedonSTM32[C]//20206thInternationalSymposiumonSystemandSoftwareReliability(ISSSR).2020.刘立北,刘燕红.基于STM32单片机的居家环境检测控制系统设计[J].信息科技;工程科技Ⅱ辑,2023-12-26.陈运军.基于STM32的室外环境检测系统设计[J].电子设计工程,2019,27(02):166-171.朱银东,田会峰,庄豫玺,等.基于STM32的智能环境监测及处理系统[J].自动化技术与应用,2020,v.39;No.298(04):136-140.江里看花.嵌入式硬件——stm32F103C8T6[DB/OL].2023.09./2301_77630091/article/details/132897236.孙庆良.基于STM32和ZigBee的无线监测系统的设计与开发[D].沈阳:东北大学,2019.总结说学.数字温湿度传感器DHT11模块[DB/OL].2021,11./u011878611/article/details/110122644.赫少阳.一种红外热成像测温系统的设计[J].电子世界,2021(15):164-165.吴海红.基于51单片机的温度控制系统设计与实现[J].通化师范学院学报,2021,42(12):1-6.汪智琦,唐德东,董旭斌.基于STM32的微量硫化氢检测系统设计[J].仪器仪表用户,2019,26(01):21-25.森森.STM32入门项目——(3-5)光敏传感器控制蜂鸣器[DB/OL].2024.06./weixin_74734834/article/details/139397534.陈江萍,钟浩.基于单片机温度自动提醒的智能水杯设计[J].无线互联科技,2021,18(20):45-46.

附录一单片机主要代码#include"stm32f10x.h"//Deviceheader#include"beep.h"#include"Delay.h"#include"key.h"#include"key1.h"#include"led.h"#include"motor.h"#include"mq7.h"#include"oled.h"#include"uart.h"#include"dht11.h"#include"light.h"#include"uart.h"#include"Delay.h"unsignedchartem=0,hum=0;unsignedintlight_val=0;intmain(){/***********初始化**************/intppm=0;intled_num[4]={RGB_R,RGB_G,RGB_B,RGB_RG}; usart_gpio_init();usart_init();usart_nvic_init();led_c13_init();led_rgb_init();light_init();dht11_init();key_init(); key_in_init();OLED_Init();OLED_Clear();motor_init();beep_init();/*************实时检测************//*********当co值>250时报警********/while(1){dht11_get_data(&tem,&hum);printf("a%d\n",tem);printf("b%d\n",hum);light_val=light_get_value();printf("c%u\n",light_val);ppm=MQ7_GetPPM();printf("d%u\n",ppm);if(ppm>500){inti=0;beep_set(500,250);for(i=0;i<4;i++){led_rgb_set(led_num[i]);Delay_ms(250);}}/***********实时监控,oled显示数值*****/Delay_ms(500);OLED_Clear(); OLED_ShowString(0,0,"CO:",16); OLED_ShowNum(28,0,ppm,7,16); OLED_ShowString(0,2,"tem:",16); OLED_ShowNum(28,2,tem,6,16); OLED_ShowString(0,4,"hum:",16); OLED_ShowNum(28,4,hum,6,16); OLED_ShowString(0,6,"light:",16); OLED_ShowNum(45,6,light_val,5,16);/*********触摸板,按下时输出01********/if(key_flag==KEY_PRESS){key_flag=KEY_RELEASE;printf("1");}if(key_in_flag==KEY_in_PRESS){key_in_flag=KEY_in_RELEASE;printf("0");}}}

附录二Qt主界面代码#include"mainwindow.h"#include"ui_mainwindow.h"#include<QDateTime>#include<QDebug>#include<QSerialPortInfo>#include<QThread>#include<QTimer>MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);//查询所有串口设备QList<QSerialPortInfo>serialList=QSerialPortInfo::availablePorts();QStringListserialPortNameList;foreach(constQSerialPortInfo&info,QSerialPortInfo::availablePorts()){serialPortNameList<<info.portName();qDebug()<<"serialPortName:"<<info.portName();}//展示在下拉列表中ui->comboBox->addItems(serialPortNameList);ui->lineEdit->setText("115200");m_serialPort=newQSerialPort(this);connect(m_serialPort,&QSerialPort::readyRead,this,&MainWindow::handleReadyRead);connect(m_serialPort,&QSerialPort::errorOccurred,this,&MainWindow::handleError);}MainWindow::~MainWindow(){deleteui;}voidMainWindow::writeMsg(QStringstr){QStringstrLog=QString("%1[%2]%3").arg(QDateTime::currentDateTime().toString("hh:mm:sszzz")).arg(quintptr(QThread::currentThreadId())).arg(str);QTextCursortc=ui->textBrowser->textCursor();tc.movePosition(QTextCursor::End);tc.insertText(strLog+"\n");ui->textBrowser->moveCursor(QTextCursor::End);}voidMainWindow::on_connectButton_clicked(){if(ui->connectButton->text()=="连接"){QStringportName=ui->comboBox->currentText();intbaudRate=ui->lineEdit->text().toInt();m_serialPort->setPortName(portName);if(!m_serialPort->open(QIODevice::ReadWrite)){writeMsg(QString("串口[%1]打开失败,%2").arg(portName).arg(m_serialPort->errorString()));return;}m_serialPort->setBaudRate(baudRate,QSerialPort::AllDirections);m_serialPort->setDataBits(QSerialPort::Data8);//数据位为8位m_serialPort->setFlowControl(QSerialPort::NoFlowControl);//无流控制m_serialPort->setParity(QSerialPort::NoParity);//无校验位m_serialPort->setStopBits(QSerialPort::OneStop);//一位停止位writeMsg("打开串口成功");ui->connectButton->setText("断开连接");}else{m_serialPort->close();writeMsg("断开串口成功");ui->connectButton->setT

温馨提示

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

评论

0/150

提交评论