基于STM32单片机的智能窗控制系统设计

2021-12-23 02:29单立军孔永华
关键词:网关中断窗户

单立军, 孔永华

(东华大学 机械工程学院, 上海 201620)

随着生活水平的提高,人们对生活便利性的要求也越来越高,各种智能化产品逐渐进入人们的日常生活,如智能垃圾桶、智能锁、智能窗等,但智能窗的发展却非常缓慢。目前市场上存在一些以自动开窗器为主的智能窗户,但其功能较为单一,只能实现简单的自动开窗[1],缺乏一套可以使其与其他传感器相结合的控制系统,因而也就无法实现雨水感应、人体感应以及远程控制等功能。

国内许多学者对智能窗进行了研究。陈亚双[2]设计了可以根据室外环境参数自动开窗的智能窗系统,但缺乏后续的佐证,实用性不强。王鸿建等[3]设计了基于MSP430单片机的楼宇自动开窗系统,该系统具备风雨及烟雾的检测功能,解决了建筑自然通风和消防通风排烟的问题。杨锦辉等[4]设计了基于物联网技术的智能窗户系统,该系统可通过自动判断当前环境的温湿度、红外强度以及有害气体浓度等信息来实现窗户的自动开关。龙军等[5]研发了智能窗感测报警器,其能够采集危险信号并且经单片机处理后可触发报警。国内一些家居公司也开始涉足智能家居领域。海尔旗下的智能家居品牌U+,提供了智慧厨房、智慧卧室、智慧浴室、智慧客厅4大系统解决方案,但其未将窗户作为一个独立的系统进行研究,仅仅提供了与窗帘相关的服务,这在一定程度上阻碍了智能窗的发展;成都易慧家科技有限公司是一家专业从事家用电动智能门窗的物联网研发企业,其在电动智能窗领域研究多年并开发了几种智能窗样机,但仍处于实验室研究阶段;深圳欧瑞博科技股份有限公司为用户提供了智能照明系统、遮阳窗帘系统、音影娱乐系统、暖通舒适系统以及门锁安防系统[6-7]。

综上所述,虽然许多智能家居公司对整个房屋的控制系统有了成熟的方案,但很少涉及智能窗,并且国内学者对智能窗的研究还处于起步阶段。为使高端窗户能够实现多重智能化,开发了一套智能窗控制系统,通过将LoRa通信模块与雨水感应器相结合,设计了无线雨水感应器,使得雨水感应器的信号能够实现远距离传输。还对智能窗控制系统的关窗策略和硬软件进行设计,增加了中断程序并为各功能的运行划分了优先级,特别是在人为控制与雨水感应控制相冲突时,使人为控制优先级最高。通过对软硬件的设计并与多种传感器进行结合,实现了对窗户的智能化控制并提供了多种功能,可满足用户的多样化需求,有望推动智能窗的发展。

1 总体方案设计

基于STM32单片机设计了多功能智能窗控制系统,创新性地将传感器技术、无线网络通信技术、计算机软件开发技术运用到智能窗的系统设计中。智能窗控制系统的总体设计方案如图1所示。

图1 智能窗控制系统的总体设计方案Fig.1 Overall design scheme of intelligent window control system

该系统主要由终端、网关、服务器及移动端组成。终端分为控制终端和感应终端。控制终端的主要功能是控制智能窗的开/关,包括人体红外感应开窗、烟雾感应开窗、雨水感应关窗。雨水感应终端将雨水感应模块设置为一个独立的终端,放弃了传统的有线连接通信,改用终端间组建的无线通信网络进行信息传输。无线雨水感应终端通过LoRa网络控制家庭或同一个小区内多个窗户的控制终端。网关主要为终端组建一个无线通信网络,从而实现各终端间的信息交互,同时在终端与服务器之间组建通信网络,使终端与服务器之间可以进行信息交流。利用LoRa无线技术在终端与网关之间组建通信网络,采用WiFi技术在终端与服务器之间、终端与终端之间组建无线通信网络。服务器接收所有来自移动端和终端的数据,再按照设定好的方式发送给移动端和终端,同时对数据进行统一管理,并对重要的数据进行存储,主要用于确保移动端与终端之间的正常通信。用户可以通过移动端软件对窗户的开合状态进行远程控制[8-9]。

2 智能窗关窗策略研究

智能窗的关窗策略对于实现智能关窗而言是一项非常重要的内容。智能窗户要想保证打开/关闭过程中的安全性和稳定性,就需要对直流电机的转速进行控制。直流电机的转速(n)可根据式(1)进行计算。

n=(U-IR)/Kφ

(1)

式中:U为电机输入电压;I为电机输入电流;R为电路总电阻;K为电动机结构参数;φ为磁通量。

由式(1)可知,控制直流电机转速的方法有两种:一是控制励磁磁通大小的励磁控制法;二是控制直流电机输入电压的电压控制法。本研究控制励磁磁通不变,通过改变电机输入电压来调节直流电机的转速[10]。

大部分直流电机采用开关控制电机的启停,电机的控制开关可使半导体在开/关状态下工作,其通过脉宽调制(pulse width modulation,PWM)技术控制电机端的电压,从而控制电机的转速[11]。电机两端电压(U0)可根据式(2)进行计算。

U0=t1Us/T=αUs

(2)

式中:Us为电源电压;T为电压的脉冲周期;t1为导通时间;α为占空比,是直流电机的通电时间与电压脉冲周期的比值。控制Us不变,通过改变占空比的大小来调节电压,从而控制电机的转速。

基于STM32单片机对电机的转速进行控制编程,并对电机的转动圈数进行设定,以使电机转动圈数达到一定值后,电机的转速可直接降至零,从而确保智能窗打开/关闭过程中的安全性和稳定性。

3 控制系统硬件设计

为实现高端窗户的智能化,应用了集中式管理分析和分散控制等理念。为进一步提高控制系统的精准度与效率,基于分布式控制结构体系,构建了由管理层、监控层、执行层等3层结构组成的智能窗控制系统硬件体系,如图2所示。系统的硬件设计主要是针对执行层而言的。该智能窗控制系统以单片机为基础,结合无线通信技术,使窗户的智能化成为了可能。

图2 智能窗控制系统硬件结构的示意图Fig.2 Diagram of the hardware structure of intelligent window control system

3.1 控制系统的管理层

以服务器为主的管理层通过LoRa无线网络连接控制系统的监控层,接收从监控层传来的数据和信息,并对产生的数据进行储存、备份以及综合分析等。管理层也可通过与其他网络或系统连接从而实现设备的远程管理。

3.2 控制系统的监控层

为提高智能窗的响应速度和响应准确性,需要对窗户所处的状态进行实时监控。监控层通过LoRa无线网络监视所有单元的信息,从而对窗户的打开/关闭状态以及整个过程进行监控,此外还对各个模块的工作过程进行监控[12]。监控层通过LoRa无线网络与管理层和执行层进行连接,窗户状态监控程序在传送监控层信息的同时,电脑也可获取执行层的实时数据,从而实现对各控制单元的控制与状态监控以及历史数据的存储。

3.3 控制系统的执行层

执行层是智能窗户控制系统的基础,由电源电路、电机驱动模块、烟雾感应模块、人体红外感应模块、无线雨水感应模块、LoRa通信模块部成。无线雨水感应模块由雨水感应模块与LoRa通信模块组合而成;人体红外感应模块用于窗户感应到人时实现手动模式的切换,从而提高人手动控制窗户的优先级[13-14];烟雾感应模块在感应到室内的可燃气体或烟雾浓度达到限定值时,及时通过网关向控制终端发送信号,从而打开窗户使室内具有良好的通风环境,以达到降低室内烟雾浓度的目的。上述控制终端与网关共同组建无线射频LoRa网络,采用星形组网的方式,实现终端与网关之间的信息交互。

4 控制系统软件设计

使用MDK软件对STM32 单片机进行一系列的编译与调试。系统的软件设计主要包括主程序、中断程序和LoRa通信程序等3方面。

4.1 主程序

根据智能窗需要实现下雨关窗、烟雾开窗以及人体红外感应开窗等功能的设计要求对主程序进行设计,流程图如图3所示。主程序具体工作过程:通电后先对I/O接口、串口、LoRa模块进行初始化,为保证中断任务的顺利进行,设置中断任务的优先级分组,并初始化外部中断。初始化完成后程序进入主循环,此时程序会创建中断任务、LoRa数据接收任务。上述步骤完成后,进入等待任务调度的程序。

图3 主程序流程图Fig.3 Flow diagram of main program

4.2 中断程序

中断程序即设置各功能的运行流程并划分各功能运行时的优先等级。根据第3.3节硬件设计的要求,设定APP控制功能、烟雾感应功能、人体红外感应功能、雨滴感应功能的优先级别。中断功能的等级分为0~3级,其中零级的优先级最高,随后依次递减[15]。中断任务的设置是为了保证系统运行的稳定性与安全性。中断线及抢占优先级如表1所示。

表1 中断线及抢占优先级Table 1 Interrupt line and preemption priority

由表1可知,APP控制中断的抢占优先级最高,雨滴感应中断的抢占优先级最低。中断程序的运行是在主程序初始化之后,当接收到外部中断信号时,程序先进入优先级最高的外部中断函数并进行判断,根据判断结果选择是否继续执行后续的操作[16-18]。中断程序的运行流程如图4所示。

图4 中断程序运行流程图Fig.4 Flow diagram of interrupt program operation

4.3 LoRa通信程序

在设计通信程序之前,先设计LoRa 通信协议。通信协议即通信双方可以进行数据传输的方式,在这种方式下数据中的每个字符都代表固定的含义,而通信双方在这种协议方式下进行数据传输,可以快速、准确地知道数据的含义。LoRa通信协议的核心内容是数据域,其结构如表2所示。

表2 数据域结构Table 2 Data field structure

由表2可知,在该数据域中:主/从机目标地址和目标信道表示的是设备在LoRa网络中的网络标识,其中网关用0XFFB表示,控制终端用0X000-0XFFD表示;命令码是指终端或者网关下达的命令,终端或网关在接收到命令码时需要作出相应的响应;设备码是设备出厂时就已经设置好的,是对硬件设备进行溯源的标识;数据类别表示的是数据的类型和数据的传输来源;有效数据是数据域中的核心数据,特别是Data数据段,其定义了相互传输的信息内容。

在通信协议设计后进行通信程序的设计,以终端向网关进行数据查询的过程为例对LoRa通信程序进行介绍。当用户在移动端手机APP上查询窗户的状态时,网关会生成相应的申请报文,然后终端会将查询的数据上传至网关。终端向网关传输数据查询流程如图5所示。

图5 数据查询流程图Fig.5 Data query flowchart

终端向网关传输查询数据的相关核心代码如下:

1:→if(Q_ flag=1) //检验发送标志位是否为1(网关查询数据申请)

2:→end if

3:→fs_sj[i++]=(obj_dst>>8)&0xff;fs_sj[i++]=obj_dst&0xff;fs_sj[i++]=obj_dch;fs_sj[i++]=(src_dst)&0xff;fs_sj[i++]=src_dst&0xff;fs_sj[i]=src_dch;

3:→for(i=0;i<8;i++)

4:→fs_sj[6+i]=add[i]; //将目标/源地址、信道、设备号插入发送数据前

5:→i=i+8; //移位

6:→fs_sj[i++]=0x0f; fs_sj[i++]= 0x0f;fs_sj[i]=sen_data_len; //将数据类别和有效数据长度插入发送数据前

7:→for(i=0;i< sen_data_len;i++)

8:→fs_sj[i+20]= sen_data [i]; //补充需要查询的窗体状态数据

9:→for(i=0;i< sen_data_len+20;i++)

10:→usart_sd(fs_sj[i]); //将数据发送出去

11:→ end for

12:→ end for

13:→end for

14:Return Q_ flag

5 结 语

针对智能窗产品大多存在系统不完善、功能单一的问题,设计了基于STM32单片机的智能窗控制系统,主要对系统的软硬件进行设计,还对智能窗的关窗策略进行了研究,为智能窗平稳、安全的开窗打下了基础。从功能上看,所设计的智能窗控制系统,可实现下雨时自动关窗、室内烟雾浓度超标时自动开窗通风、人为控制窗户的优先级高于感应控制的功能。将雨水感应器与LoRa通信模块相结合,并与控制终端共同组建LoRa无线网络。通过WiFi无线传输技术,实现无线雨水感应终端通过LoRa网络控制一定区域内的多个终端,大幅降低了安装成本和维修成本。从现有产品来看,与安装开窗器的窗户相比,智能窗户控制系统实现了对窗户的多重智能化控制,可满足用户对窗户智能化的要求,提高智能窗户的安全性和运行系统的稳定性。该系统控制灵活、数据传输稳定且实时性较好,具有广泛的应用场景。

猜你喜欢
网关中断窗户
智能燃气表物联网运行体系网关技术研究
基于FPGA的工业TSN融合网关设计
大规模低轨卫星网络移动性管理方案
TMS320F28335外部中断分析与研究
一种航天器星上时间获取方法
一种主从冗余网关的故障模式分析与处理
多级中断屏蔽技术分析
擦窗户
跟踪导练(二)(5)
窗户知多少