基于STM32单片机的智能家居测量系统设计*
编者按:为实现家居智能化的监控管理并且测量其温度、空气成分以及烟雾等重要数据,设计了基于STM32单片机的智能家居测量系统。硬件设计部分使用STM32单片机,并设计主电路;软件设计中设置自动检测家庭环境数据并实现实时上传云端,完成智能家具测量系统。仿真实验表明,该系统在一般环境和复杂环境中都有较高的测量精度和实时上传云端功能。
*本项目受北京信息科技大学大学生创新项目支持,项目编号:5102110802
当今的家庭生活面临着各种环境和健康问题,周围的生活参数存在潜在的隐患,包括室温、气体中有害物质的浓度等。在新时代,人们越来越关注健康及其相关因素。随着微电子技术的应用,电器的普及,以及单片机和传感器性能的快速提高,它可以通过单片机和传感器实现对室内各种环境参数的实时监测。进行调整,使生活体验更好[1]。当前智能家居测量系统已经可以实现基本环境数据的测量,但是目前智能家居测量系统在实际应用当中存在成本高、可测量数据少、无法进行实时调控、行业标准不统一、跨领域协作困难等问题[2]。
针对上述问题,为实现智能家居测量系统的价格合理化、标准化、简易操作、注重使用者体验、全面性等发展趋势。开发基于STM32 单片机的智能家居测量系统本设计主要论述了由单片机控制的室内环境监测装置,以实现数字化和智能化。各种室内环境参数可以通过显示装置实时显示在用户面前,再通过报警电路,用户可以根据环境情况及时采取相应措施,从而享受更健康、更安全的生活[3]。
1 智能家居测量系统总体设计方案
该系统由硬件系统、原子云服务器和移动设备三部分组成。总体方案结构如图所示。硬件系统由单片机、传感器模块、Wi-Fi(wireless fidelity,无线网络通信技术)无线模块、电源模块等组成。单片机作为硬件系统的主控芯片,对传感器模块采集的家庭环境信息进行处理,电源模块为整个硬件系统的各个模块供电[4]。原子云服务器作为本系统的中转站与硬件系统交互环境信息,并对登录信息进行处理,当用户在移动端设备界面中请求时将环境信息发送给界面,实现实时回传检测数据[5]。当界面中有控制请求信息时,对控制信息进行处理,移动端设备界面中包含注册界面、登录界面、控制界面三大模块,环境信息的显示及警报均在控制界面中实现[6]。如图1 为系统工作流程图。
图1 系统工作流程
2 系统硬件设计
2.1 STM32单片机
选择STM32 单片机作为智能家居控制系统的主控中心,实现系统高性能、低功耗的应用需求。本文选用正点原子生产的STM32F407 单片机系统,STM32F407提供了工作频率为168 MHz 的Cortex-M4 内核(具有浮点单元)的性能。
2.2 主电路设计
首先,设计外围电路,包含空气成分传感器、温湿度传感器、烟雾传感器、摄像头模块。其次添加了Wi-Fi 模块,使系统具备远程通信,控制以及触发警报的功能。除此之外,还包括微控制电路、串口电路以及串口通信电路等多个外围电路。
大量实验表明,最适宜人的温湿度是:夏天温度20~27 ℃,湿度为30%~60%;冬天温度18~25 ℃,湿度为30%~80%。一般情况下, 室内温度控制在18~26 ℃,湿度为30%~70% 时,人体感觉最舒适。因此对室内进行温度、湿度、空气质量等参数检测,并通过远程控制进行调整能获得人体舒适的家居环境。
2.3 传感器设计
2.3.1 温湿度传感器
BME680 环境传感器是一款MEMS(micro-electromechanical system,微机电系统) 的环境传感器,可测量温度湿度参数,非常适用于监测空气数据。由于采用了MEMS 技术,该传感器的体积非常小,功耗低,因此也适用于低功率场合,如可穿戴家居设备。
2.3.2 烟雾气体传感器
MQ-2 烟雾气体传感器模块是用于监控烟雾气体(例如液化气和天然气) 的模块。它具有信号输出指示和双信号输出的特点。可直接连接单片机,模拟输出0-5 V 电压,浓度越高,电压越高。对液化气,天然气和城市燃气具有良好的敏感性。具有长期使用寿命和可靠的稳定性,并具有快速响应恢复的特点。
2.3.3 空气质量传感器
SGP30 气体传感器模块TVOC/eCO2 空气质量甲醛二氧化碳测量模块。SGP30 是一种金属氧化物气体传感器,在单个芯片上具有多个传感器元件。四个气体传感元件集成在其中,并具有完全校准的空气质量输出信号。此外,SGP 易于集成,可以将金属氧化物气体传感器集成到移动设备中,为智能家居,家用电器和物联网应用中的环境监控开辟了新的可能性。
2.3.4 WIFI模块
该模块使用串口(LVTTL) 与MCN( 或其他串口设备)通信,并内置TCP/IP 协议栈,可实现串口和Wi-Fi 之间的转换。该模块支持串口到Wi-Fi STA,串口到AP 和Wi-Fi STA + Wi-Fi AP 模式,从而快速构建串口-Wi-Fi 数据传输方案。该模块体积小,通过6个2.54 毫米的间距引脚连接到外部,并且可以免费连接到原子云服务器。
3 系统软件设计
设计需要用到STM32F407 单片机上集成的电路系统,另外加装外部传感器,在环境参数超过人体健康范围的时候,使用单片机上集成的蜂鸣器发出警报声,使用声音警示环境变化[7]。
家庭环境参数使用传感器来收集信号。该功能与人类的感官一致,并且处于所有信息处理系统的最前沿[8]。传感器类型的选择应考虑传感器参数的设计要求,如测量范围、稳定性等,然后对每个测量参数进行不同的测试,最后以实际结果为准,选择最佳选择计划[9]。通过对传感信号采集和处理,单片机系统根据筛选结果分为数据采集、校正、分析和报警[10]。为保证信号的准确性,首先,主控芯片数字值进行校正和补偿,并对数据的准确性进行综合分析,是否超过设定的限值,否则报警[11]。
3.1 数据采集前端软件设计
按照中华人民共和国GB/T1883-2002《室内空气质量标准》,确定了室内温度、湿度、有毒气体含量等相关正常参数的范围。根据居家生活实际环境与国家标准确定传感器的工作模式,将其成本和体积降低,进一步提高性价比。一旦确定了测量参数,即着手制定一个总体设计计划[12]。
程序的一般流程如图2 所示。首先启动系统,然后各单片机和传感器模块开始工作。MQ-2 传感器对空气中有毒物质的浓度进行实时检测,如果达到预定限度,就会向单片机发送信号。如果接收到信号,它会发出警报。如果没有,它将继续被检测。BME680 温湿度传感器和SGP30 空气质量传感器同时实时采集室内空气成分含量,并将参数发送至单片机。单片机收到对Wi-Fi无线模块的请求后,通过串口向Wi-Fi 模块传输数据,Wi-Fi 模块透明实时传输数据。使用者可以在移动设备端登陆云账号并查询实时测量的家庭环境数据。图2 为系统总体设计的工作流程图。
图2 系统总体设计流程
系统软件设计流程复杂,涉及面广,包括数据硬件软件、原子云服务器设计、移动终端硬件设计,这是首次推出各传感器模块采集环境信息和监控控制系统名称信息。通过端口发送,服务器接收对设备的控制。指令过程中,可将数据通过网络传输至界面屏,通过无线通讯、数据采集、发送、发送等方式读取数据,进而实现报警作用。
3.2 数据处理方法
在前端过滤错误数据后,执行下一个数据操作。首先,在配置功能中,在寄存器中获取相关数据分析功能,以进一步获取所需数据。以下以BME680 传感器举例。
首先与BME680 进行交互,但是BME680 的读写取决于特定的硬件平台,因此它们被操作为对象。在执行相关操作时,如果需要控制时序,则需要使用延迟操作。延迟处理始终取决于特定的软件和硬件平台,因此延迟处理被视为对象的操作。而使用SPI(serial peripheral interface,串行外设接口)时,没有设备地址但有片选信号,如何操作片选信号依赖于硬件平台,将对片选的操作定义为对象的操作函数。一个对象必须对其进行初始化才可使用。初始化对象主要有四个方面的内容:检查对象赋值的合法性;属性赋初值;为对象操作指定函数指针;对象所指向设备的初始配置。通常一些设备需要定义操作码来实现读写区分,但BME680 采取了将寄存器地址的最高位置零表示为写。之所以可以这样定义,是因为BME680 寄存器地址分配的特殊性决定的。改变寄存器地址的最高位也能区分不同的寄存器,绝不会重复。
BME680 环境传感器支持SPI 和I2C(I2C总线)接口,SPI 也支持3 线和4 线模式,但在测试应用中只使用I2C 接口,SPI 接口还有待测试。BME680 环境传感器在使用SPI 接口时支持SPI 模式0(CPOL = CPHA = 0) 和模式3(CPOL = CPHA = 1)。使用I2C 接口时,支持标准模式、快速模式和高速模式。而且在使用I2C 接口时,SDO 引脚必须接高电平或低电平,以确定设备地址。
声明不能立即使用此对象变量,并且需要使用驱动程序中定义的初始化函数来初始化此变量。BME680 环境传感器有一个测量范围寄存器。这个寄存器的值对应于两组计算常数。这两组常数用于计算测量值。一般来说,BME680 环境传感器本身的读写操作并不复杂,但是计算和校正之间的关系相对复杂,尤其是空气质量数据更应该注意这种校正关系[13]。另外传感器与上述BME680 传感器数据处理方法基本类似,相似算法本文不做过多赘述。
3.2 云服务器软件设计
UI 界面作为用户与MCU 系统之间的交互界面,可以提高用户的直观感觉。但是,UI 接口不能直接与MCU 系统交互,需要服务器作为传输来实现它们之间的信息传输。因此,设计了系统的UI 界面和服务器。考虑到QT 具有可用C++ 编写UI 框采用QT 进行UI界面设计。此外,由于TCP 服务器在应对多网关数据同时接入时会存在一定的性能损耗,本系统采用基于Linux 下的C 语言编程设计原子云服务器。
4 系统可靠性测试和传感器标定
4.1 系统可靠性测试
4.1.1 居家环境测试
系统稳定性与可靠性的低下会直接导致抗干扰能力较差。单片机的应用范围远远超过了计算机和其他计算设备的总和,计算机工程的许多实际应用往往会产生比人类更多的控制程序。在这种情况下,很多技术人员往往会选择同时使用多个控制程序,相互补充完善。但是需要注意的是,在这个过程中,软件干扰是不活跃的,而硬件干预是活跃的。所以达到较高的抗干扰能力。只有技术人员将硬件与软件抗干扰相结合,并且在这一过程中更加细致周到地分析干扰源,才能够真正地起到完善系统稳定性的效果。
智能家居测量系统在实际居家环境中测试记录各传感器数据,并制成如图3 至图6。
图3 温度湿度
图4 气压
图5 天然气/VTOC含量
图6 二氧化碳含量
分析上述折线图可得,日温湿度曲线变化从上午八点到十二点是呈上升曲线,一般环境温湿度会随着日出而变化。气压折线图有一个上升曲线,查阅资料得知,一天中,气压有一个最高值、一个最低值,分别出现在9~10 时和15~16 时,还有一个次高值和一个次低值,分别出现在21~22 时和3~4 时。气压日变化幅度较小,一般为0.1~0.4 kPa,并随纬度增高而减小。二氧化碳折线图有小幅度的波动,经分析得出,这样的波动在误差范围内,是由于居家人数变化造成的数据轻微波动,峰值的出现不影响参数总体的测量。
4.1.2 测试结果分析
实测数据是一周内同一时间段同一环境下固定测量结果,取加权平均之后得到以上折线图。如图得到传感器的测量数据可知,在实际居家环境中,环境数据时刻在变化,系统整体稳定性可靠,可保证长时间工作不会过热死机,传感器可持续稳定的工作。
4.2 传感器定标
测试系统在真实家居环境中的工作状态,得到真实的传感器采样数据,反馈到相应的传感器数据计算函数。在更高精度的传感器同测量环境下进行对标,以获取更高精度的测量数据。
因为本测量系统涉及多个传感器同时工作,遂即采用单独定标法。由于传感器的设计不同,零件的加工存在误差,以及装配调整状态不完全相同的因素,校准后每个传感器的灵敏度不一致。但是,从用户使用的角度来看,希望同一型号的产品应具有相同的灵敏度,输入阻抗和其他技术参数,并且初始零输出应尽可能细微,从而最大限度地减少在使用中调整系统的工作量,最大限度地提高测量精度。传感器输入和输出之间的工作特性与非线性,滞后和非重复性问题有关。与线性传感器相比,最好的解决方案是在每个传感器测得的实际标准曲线中拟合一条直线,并且每个最大偏差曲线与直线的偏差将最小。例如,具有相同特性的传感器具有最高的精度。校准线可以用线性方程y = kx + B表示,因为方程中的B 是传感器输出零的初始值,k 是传感器输出的灵敏度斜率。其中,x 和y 是来自传感器的实验( 校准)数据,因此通常使用平均斜率法或最小二乘法来处理并获得直线。如图7 为最小二乘法拟合曲线图。
图7 最小二乘法拟合曲线
4.2.2 定标结果分析
综合测试结果的主要内容是对温湿度传感器、烟雾气体传感器、空气质量传感器进行静态定标、动态定标以及补偿。静态定标或静态校准的方法可以获得测量系统的静态特性。本次传感器定标校准操作过程简单,但是耗时较多,主要是多次重复性测量。得出各个传感器需要进行改善才可以拥有良好的静态特性,这是需要通过计算传感器的静态性能指标。对上述数据分别采用了分段拟合和分段直线拟合两种方法,保证了迟滞、精度和重复性的要求。通过拟合测试得到静态定标的基本方法,熟悉了数据处理的过程。测试系统的动态特性是其内的一种属性,这种属性只有系统受到激励之后才能明显表现出来,并且这隐含在系统的响应之中。阶跃响应法是以阶跃信号作为测试系统的输入,通过对系统的输出响应的测试,从中计算出系统的动态特性参数。本次定标已经知道上述传感器的动态特性符合一阶模型,所以用阶跃响应法可方便测出。
5 系统的提升与改进
智能家居测量系统相比较传统机械仪表测量,其功能全面性、智能化程度更高,可更快速便捷的获取实时数据。体积较小,集成化程度高,现已成为智能设备未来的发展新方向。在较为传统的机械仪表测量系统中,环境数据的监测需要依靠传统的机械测量方式,有误差大、反应慢、测量周期长等缺点,并且存在危害性环境不适宜机械仪器测量。但是智能家居测量系统正好克服这些缺点,因为其工作环境可以与监测显示系统分开,做到云上传数据并且云读取。这样大大减少了危害环境下对人体的伤害,并且可以做到在环境指数超标时及时警报提醒。对家居环境实时测量以抑制复杂环境对人可能造成的有害影响。集成化智能家居测量系统可以很大程度的节约成本,降低使用难度,并且在单一传感器出现故障的时候可以更换维修,降低维护成本。集成化的环境测量系统体积较小,耗能少,可与智能手机智能云互联,在外也可实时读取家庭环境数据。
参考文献:
[1] 林学伟,严明忠.基于STM32单片机的智能家居控制系统设计[J].廊坊师范学院学报(自然科学版),2020.20(4):35-38.
[2] 余云飞,朱得元,章平.基于Arduino和ESP8266的多终端智能家居控制平台的设计与实现[J].安庆师范大学学报(自然科学版),2019,25(3):36-40.
[3] 刘璐,袁战军,王希娟.基于ARM及ZigBee的智能家居远程监控系统的设计与实现[J].电子设计工程,2019,27(11):136-140+145.
[4] 郑凯,姜毅,赵永生.基于STM32单片机实验平台的测控综合实践教学探索[J].教育现代化,2020,47(53):12-14+18.
[5] 熊斯鹏,黄敏.基于STM32单片机动力环境监控终端的设计与实现[J].电子产品世界,2020,27(2):74-76.
[6] 王洪生.基于单片机与传感器的智能家居环境监测系统设计[J].智能应用,2020.22.(9):24-27.
[7] 胡学芝,程海博,南光群.基于STM32的智能家居系统设计与实现[J].湖北理工学院学报,2018,34(1):1-4.
[8] 冯伟.单片机应用系统可靠性的影响因素以及测试方法分析[J].技术交流,2016.10.(93):130.
[9] 陈建新.DHT11数字温湿度传感器在温室控制系统中的应用[J].山东工业技术,2016(18):120.
[10] 幸联星.基于单片机的智能家居环境检测系统设计[J].电子技术与软件工程,2020(1):59-61.
[11] 徐艇,张卫强,胡建平等.基于传感技术的室内监护系统设计[J].传感器与微系统,2019,38(2): 59-62.
[12] Y X Lin,R Kong,R B She,et al. Design and Implementation of Remote/Short-range Smart Home Monitoring System Based on ZigBee and STM32 [Z].STMicroelectronics,2013.2040-7459.
(本文来源于威廉希尔 官网app 杂志2022年4月期)
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码