在这里插入图片描述

一、项目介绍

摘 要
随着人们对室内空气质量关注度的不断提高,二氧化碳浓度监测成为环境监测领域的重要课题。本文设计并实现了一套基于STM32单片机的二氧化碳浓度监测系统,该系统以STM32F103C8T6为主控核心,集成DHT11温湿度传感器、SGP30二氧化碳传感器和光照强度传感器,可实时采集环境中的温度、湿度、CO₂浓度和光照强度四项参数。系统配备OLED显示屏实现本地数据显示,通过独立按键可设置各项报警阈值,当参数超限时LED指示灯和蜂鸣器发出声光报警。同时,系统利用ESP8266 Wi-Fi模块接入机智云物联网平台,将监测数据上传至手机APP,用户可远程查看环境状态并修改报警阈值。测试结果表明,系统运行稳定、数据采集准确、报警响应及时,各项功能均达到设计预期,具备良好的实用价值和推广前景。

关键词:STM32;二氧化碳监测;物联网;机智云

主要研究内容
本课题主要是设计并实现一个基于STM32单片机的二氧化碳浓度监测系统,该系统可以对室内环境里的二氧化碳浓度、温度、湿度和光照强度这四部分数据进行采集,并以本地显示、声光报警、远程传输等多种方式给用户传递环境信息。围绕该目标课题的主要研究内容有以下几点。
首先对系统硬件平台进行搭建。根据功能要求选择合适的单片机作为控制核心,配相应传感器、显示模块、通信模块、报警模块。在硬件设计过程中要考虑到各个模块之间的电气兼容性、信号完整性、电源稳定性等各方面的问题,保证系统可以长时间稳定的运行。另外还要设计人机交互接口,即按键输入电路、显示输出电路等,便于用户本地操作。
其次就是系统软件的设计和开发。软件部分要完成单片机底层驱动程序、主控逻辑程序和通信协议的编写。传感器驱动程序的正确性是保证数据采集准确的前提,需要按照各传感器数据手册和通信时序来实现。主控程序是对各个模块工作过程进行协调的,它包含数据采集、显示刷新、按键反应、报警判定和数据上载这些功能。通信部分要实现对ESP8266模块AT指令的控制以及与机智云平台数据交互。
最后就是系统测试和性能分析。完成硬件制作、软件开发之后,就要对系统进行功能测试、性能评价。测试内容有各个传感器数据采集的准确程度,OLED显示屏的清晰度及刷新频率,按键设定的反应速度,报警系统启动的稳定性,Wi-Fi通信的稳定性以及数据传输的速度等几个方面。经过测试得出系统存在的问题并加以改进,得到一个完整的、可靠的监测系统。

论文结构安排
本文以基于STM32的二氧化碳浓度监测系统为研究对象,从理论设计、硬件电路设计到软件编程设计进行了系统的论述,在各章内容分配上,第一章为绪论,第二章为系统需求分析,第三章为硬件电路设计,第四章为软件程序设计,第五章为实验与结果分析,最后给出了结论和展望。
第一章为绪论部分,主要论述本课题的研究背景和意义,分析国内外室内环境监测领域研究现状,确定本文主要研究内容,对全文结构做简要说明。本章论述使读者对本课题研究价值及总体框架有清楚的认识。
第二章为系统硬件设计部分,详细介绍监测系统的硬件架构和各功能模块的电路设计。首先给出系统硬件总体框图,然后分别对主控模块、传感器模块、显示和报警模块、按键模块、Wi-Fi通信模块和电源模块进行逐一说明。每个模块的选型依据、电路连接方式、设计要点会在本章中详细论述。
第三章为系统软件设计,主要对嵌入式软件开发的过程进行描述。首先说明软件开发环境以及使用的工具,最后给出系统软件的总体结构。接着按照功能模块分别对传感器数据采集程序、OLED显示程序、按键处理程序、报警逻辑程序以及Wi-Fi通信程序的设计思想和实现方法进行说明。
第四章为系统测试与分析部分,主要对已完成系统进行功能验证和性能评估。先介绍测试平台的搭建情况,再对各个功能模块进行单独测试,最后做系统的整体联调。通过分析测试结果,对系统的设计目的是否达到进行评价,并找出存在的问题。
第五章为结论和展望部分,对本文所做的工作加以总结归纳,指出系统主要特征与独特之处,进而对系统存在不足进行客观评价,对将来可能的发展方向做出预测。

硬件总体架构
本系统硬件设计按照模块化、低功耗、高可靠性的原则,用STM32F103C8T6单片机为主核心,外接温湿度传感器、二氧化碳传感器、光照传感器、OLED显示屏、按键输入、LED指示灯、蜂鸣器和Wi-Fi通信模块。从信号流向来讲,硬件架构可以分为四个层次,即数据采集层由DHT11、SGP30、光照传感器组成来把环境物理量转换成电信号,数据处理层由STM32最小系统负责接收数据并进行逻辑判断,数据输出层有OLED显示屏和Wi-Fi模块分别实现本地显示和远程传输,人机交互层包含按键输入以及声光报警输出。
电源设计时因为各个模块的电压不同,所以用多级稳压的方式。外部5V电源经过一个低压差线性稳压器降压成3.3V电压供OLED、蜂鸣器等外设使用的同时也供单片机、传感器和Wi-Fi模块供电。此种设计可以保证各个模块的供电要求,又不会造成电压不匹配的问题,为系统的稳定运行打下了良好的基础。

按键设置电路设计
本系统设四个独立按键分别用做菜单键、确认键、加键和减键来完成报警阈值的查看与修改。独立按键电路设计简单,每一个按键的两个端口分别与单片机的输入引脚和地相连。单片机内部把输入引脚设成输入上拉方式,按键没有被按下时引脚保持高电平,按下时引脚被拉低,用检测电平的变化来判断按键的状态。
为了消除按键机械抖动带来的误触发,在程序设计中加入软件消抖处理,在检测到电平变化之后再进行确认。该种方法简单有效、不增加硬件成本。按键布置时要注意安装位置方便用户使用,并且还要考虑到按键的机械寿命和手感,选择质量较好的按键开关.

二、文档介绍

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、項目设计

软件总体架构
本系统软件使用模块化、层次化的架构来分解复杂的功能成若干个相对独立的模块,从而达到降低程序复杂度、提高程序的可读性与可维护性的目的。软件架构由上而下可以分成三个层次,即应用层、驱动层以及硬件抽象层。应用层主要是对系统中的主控逻辑、阈值判断、报警处理、人机交互控制、网络通信进行控制,采用调用下层驱动接口的方式完成。
驱动层给应用层提供硬件操作接口,主要包含各种传感器驱动、OLED显示驱动、按键扫描驱动、串口通信驱动等。每一个驱动模块就封装了对应的硬件初始化、数据读写以及状态控制这些基本操作,给上层提供简单的函数接口。硬件抽象层是单片机寄存器操作和引脚控制最底层的函数,在此基础上驱动层才会有更高一级的功能。
在这里插入图片描述
Keil uVision5
本系统采用Keil uVision5集成开发环境进行软件开发,该工具是为ARM内核微控制器设计的,从编写代码开始到编译链接再到调试下载等各个环节都有支持。软件自带ARM编译器,可以把C语言源代码快速转换成机器代码,调整程度可以调节。利用ST-Link仿真器可以进行单步执行、断点调试、变量监视等调试操作,有利于快速找到问题。
使用Keil uVision5进行开发的时候需要创建工程然后选择对应的器件型号,配置输出文件格式、优化等级、调试器类型等参数。工程里加入STM32标准外设库或者HAL库文件,该类库把寄存器底层的操作封装起来,开发者可以直接使用库函数来完成外设的配置工作,从而降低了开发难度。

DHT11温湿度采集程序
DHT11使用的是单总线的数据格式,一次完整的传输包含40比特,湿度整数+湿度小数+温度整数+温度小数+校验和。驱动程序主要就是对数据线电平的变化时序进行准确的控制,以及正确读取数据。主机先是把数据线降到0伏左右,然后保持一定时间(18毫秒以上)的低电平状态之后再转成高电平,之后就放电并变成输入模式去等待对方的回答。
DHT11响应之后会先拉低80微秒再拉高80微秒,然后一直输出40位数据。每一个数据位用50微秒低电平开始,高电平的时间决定逻辑值,26~28微秒为0,70微秒为1。读取完数据之后要进行校验,前四个字节之和等于第五字节,则数据有效,否则舍弃重新试一次。

OLED显示程序设计
本系统使用0.96寸OLED屏幕,采用SSD1306驱动芯片,支持I2C接口。显示驱动程序的功能有初始化显示屏、清屏、显示字符和字符串、显示数字和图形等。初始化要设定显示开关、时钟分频、复用率、显示偏移、对比度、电荷泵电压等参数,一旦设置有误就会引起显示出错。
本系统的显示界面是分区域设计的,在上部是参数名称,在中间是测量数值及单位,在下部是系统状态。为了在指定的位置上显示字符,需要创建字符点阵库,每一个字符都对应着固定的大小点阵数据,显示时将该数据写入到屏幕上对应显存的区域。调用字符显示函数,设置坐标和内容,上层程序可以自由地对显示的内容进行组织。

按键与阈值设置程序设计
本系统使用4个按键设定报警的阈值。按键处理程序要实现按键扫描、去抖动、状态识别、功能执行。按键扫描使用周期性查询的方法,用状态机识别按下、释放和长按等事件。软件消抖用状态机方式来实现,依靠多次扫描的结果加以判断,不会造成延时等待。
按键功能是以设置阈值为中心的。按下菜单键进入设置模式,屏幕亮起显示当前可以设置的参数项,再次按菜单键在温度、湿度、二氧化碳、光照这四个参数之间进行切换。选中参数之后按确定键进入阈值修改状态,用加法键和减法键调节数值,再次按下确定键保存并退出。整个设置过程中屏幕实时显示,给用户提供明显的操作反馈。

报警逻辑程序设计
报警逻辑为集中判断、分路输出的形式。每次传感器的数据被采集完以后,主程序就会调用报警处理函数,把实时的数据同用户所设定的阈值加以比较。结果分成正常、超限和严重超限这三种。当所有的参数都超限时,相应的LED指示灯全部点亮,蜂鸣器发出报警声。本系统采用统一报警声,用户查看指示灯或者屏幕来获取具体的超限信息。
为了消除参数在阈值附近出现波动而造成蜂鸣器不断开关的现象,在报警时加入回差处理。当参数大于阈值时发出报警,但是只有参数下降到比阈值减去回差值还要小的时候才解除报警。回差设置把报警解除条件和触发条件都提高了一步,形成了滞回区间,防止参数在阈值附近频繁振动引起报警抖动。

测试平台与环境
系统硬件、软件开发完成后需做全面的测试来验证系统是否满足设计需求,找到存在的问题并加以优化。测试工作要有规范、可以重复的测试环境,还要有必要的测试仪器、工具。测试平台由已经焊接好的电路板、STM32仿真器、5V直流电源、智能手机以及各种测试辅助设备组成。测试环境为室内普通环境,环境温度、湿度、光照、二氧化碳浓度等均为自然状态,无特别控制。
功能测试阶段要对系统的各个模块一一进行测试。首先要对电源模块进行测试,测量电路板上各个关键节点的电压是否正常,看有无短路、过热等异常情况。电源正常之后,连接仿真器下载测试程序,检验最小系统能否正常工作。使用串口调试助手可以查看单片机输出的调试信息,保证程序按预期运行。在确定基础硬件、软件环境正常的前提下,再分步加入各个功能模块做联合测试。
性能测试阶段要评价系统在各种情况下的表现。传感器数据采集的准确性要和标准仪器比较,知道系统的测量值与真实的值之间存在什么差异。报警功能的响应时间可以人为改变环境条件或者模拟传感器输出来测试,记录参数超限时报警启动所需要的时间。Wi-Fi通信稳定度测试是对Wi-Fi通讯连接成功、数据传输断续、长时间运行的可靠性的一个标准。系统整体功耗用万用表或者功率计来测量不同工作状态下的电流消耗。

各模块功能测试
传感器数据采集测试是对DHT11、SGP30以及光照传感器分别做独立的验证。经过测试可知,DHT11在室内的温湿度测量中读数比较稳定,温湿度误差都在标称范围之内,对快速的变化环境有较好的响应速度。SGP30二氧化碳传感器同校准仪器对比,读数一致性高,可以区分出通风良好和人员密集场景下浓度的差别。光照传感器对自然光、台灯、遮光三种光照下进行了检测,并且检测到ADC值随着光照的不同而变化,但是变化幅度比较小。测试结果表明传感器安装位置会影响读数,实际使用时要加以注意。
OLED显示测试主要是初始化、显示清晰度、长期稳定性的测试。屏幕可以达到预期的初始化效果,在上电之后会正常显示并且没有闪烁现象。字符与数字显示位置正确、清楚可见,数字格式化及小数点显示均正常。长时间工作之后屏幕没有出现显示不正常、亮度降低或者闪烁等问题,符合系统设计要求。
按键设置以及报警测试验证了人机交互功能。四个按键可以被可靠地识别出来,菜单、确认、加、减等功能均正常,消抖程序可以防止误触发,长按可以连续快速地调节数值。阈值设定之后可以保存并使用,在报警判断时也能使用。在模拟超限测试中,当参数超过时LED就亮起,蜂鸣器响起来,当恢复到原参数时蜂鸣器就会停止鸣叫,当有多参数同时超出阈值的时候所有指示灯都会亮起来,这符合设计的要求。
通过WiFi通信和APP远程测试来验证物联网功能。ESP8266可以正确地响应AT指令并完成网络连接,在连接失败的情况下可以重试或者报错。传感器数据可以被机智云平台顺利上传到APP,并且在APP上能够实时显示出来,没有发生中断或者丢失的情况。APP远程修改阈值之后系统本地值同步更新,报警逻辑按照新的阈值进行判断,远程和本地设置的效果相同,大大提高了系统使用方便性的程度。
在这里插入图片描述
在这里插入图片描述

总结
本文主要研究基于STM32的二氧化碳浓度监测系统的设计与实现,从需求分析、方案设计、硬件选型、电路设计、软件开发到系统测试都进行了详细的阐述。经由本课题研究,创建出一套功能完备、性能稳固、成本低廉的多参数室内环境检测系统,可实时检测二氧化碳含量,温度,湿度以及光照强度这四种环境指标,而且还能完成本地显示,声光报警,阈值调节以及Wi-Fi远程数据传输等操作。
硬件设计上采用的是以STM32F103C8T6单片机为核心,采用的传感器有DHT11温度湿度传感器、SGP30二氧化碳传感器、光照传感器,并且加入了OLED显示电路、蜂鸣器和LED报警电路、独立按键输入电路、ESP8266 Wi-Fi通信电路等。各个模块电路的设计以模块化、低功耗、高可靠为原则,对电气回路以及信号完整性做了细致的设计。PCB设计把所有的功能模块合成为一个整体的系统硬件平台。
本系统软件设计上使用了模块化的架构,分别实现了各个传感器的数据采集驱动程序、OLED显示驱动程序、按键扫描及阈值设置程序、报警逻辑判断程序和基于机智云平台的Wi-Fi通信程序。程序设计过程中很好地考虑了实时性、可靠性以及用户的使用体验,在合理安排各个功能任务的前提下达到整体系统高效运转的效果。机智云平台应用大大简化了云端通信以及手机APP的开发工作,可以快速地实现物联网接入。
系统测试主要做系统各个功能模块单体测试及整体联调,保证数据采集准确、显示清楚、按键可靠、报警及时、Wi-Fi通信稳定。由测试结果可知,系统各项功能均符合设计要求,可以达到室内环境监测的实际使用目的。经过本课题研究,对嵌入式系统的设计、物联网应用的开发有丰富的经验,为以后工作打下了基础。

更多推荐