基于单片机的光控窗帘电气自动化控制系统设计

2022-09-09 02:16殷海文
电子技术与软件工程 2022年11期
关键词:窗帘手动阈值

殷海文

(武汉轻工大学 湖北省武汉市 430000)

随着信息化的快速发展,人们的工作、生活与信息技术的结合趋势越来越明显。信息技术、电气自动化技术等除了改变工作方式、习惯以外,对于传统的住宅也提出了新要求。社会、技术以及经济的发展促使人们对家居在功能上的观念发生巨大转变,人们对于家居的要求早已不满足于单纯的功能实现,而是在实现基本功能的基础上,尽可能地提供智能、便捷的使用体验,以打造安全、舒适的居住环境。基于大众的新需求,“智能家居”这一概念应运而生。智能家居通过现代信息技术、物联网技术令传统家电更新迭代,在实现传统家具功能的基础上,打造具有全方位信息交互功能的,安全舒适的住宅环境,极大地优化了人们的生活方式,同时顺应了消费转型、高质量发展的趋势。

1 设计思想及基本功能

本设计包含了普通电动窗帘通过按钮操纵窗帘启闭的功能,并在此基础上增加电气自动化模式,简称自动模式,可根据当前环境光照强度与时间是否在设定范围内自动控制窗帘的启闭。本设计追求简单的电路设计与经济适用的元器件满足相关功能的实现。本设计具有以下功能:

1.1 手动控制

在手动模式下,通过按键对窗户进行电气自动化启闭控制。

1.2 自动控制

当开启自动模式且当前时间在设定的时间范围内时,当检测到的环境光照强度大于设定的光照强度阈值且窗帘处于开启状态时,关闭窗帘。当检测到的环境光照强度小于光照强度阈值且窗帘处于关闭状态时,开启窗帘。当处于自动模式时,开启、关闭按键失效。

1.3 设置模式

通过按键对当前时间、光控生效时间范围、光照强度阈值进行设定。

1.4 模式切换

通过按键实现自动模式与手动模式的切换。

2 系统总体方案设计

2.1 方案选择和论证

2.1.1 系统控制器的选择

单片机在编程软件上成熟,学习成本较低,另外支持反复擦写的特性让后期测试调试更加容易开展。再者单片机功耗低,体积小的特点符合智能家居的使用场景。此外单片机在电子产品中的应用广泛,可用元器件多样,价格普遍廉价。综上所述,单片机型号选用STC-89C52。

2.1.2 显示方案的选择

方案一:LED(LightEmittingDiode)数码管。此方案的优点是占用的单片机I/O 口少,但数码管的显示是通过动态扫描,即一次只能显示某一组LED 代表一个数字,在余辉还未消失时快速切换下一组达到同时显示的效果,占用单片机资源,在显示时无法处理其它环节。同时还需要使用如74LS164 等设备驱动,该芯片对于时钟的要求较高,在实际使用时会有很多阻碍,且显示时占用单片机,影响时间、光强的读取。同时LED 数码管只能显示数字,本设计还需要显示英文字母来反馈当前处于自动或者手动模式,光照强度单位等,因此不采用此方案。

方案二:点阵式数码管,共64 个发光二极管组成,有共阳极和共阴极数码管。点阵式数码管一般用于广告牌等需要显示大号字体或是汉字的设备中,如在电气自动化光控窗帘中采用此方案,功能超出需要的同时价格也相对较高。

方案三:LCD 液晶显示屏。液晶显示屏LCD1602 最显著的特点是自带DDRAM(DisplayDataRAM)用于存放显示数据,每一个显示单元都有一个内部寄存器地址,向对应地址写入显示内容后将一直保持直到新内容被写入,明显优于方案一的显示方式。同时其可显示大小写英文字母、阿拉伯数字等,内部有CGRAM(CharacterGeneratorRAM),支持用户自定义显示内容。综上所述本设计的显示模块使用LCD1602 液晶显示屏。

2.1.3 时钟模块的选择

本设计使用DS1302 时钟芯片实现独立计时,目的是为了减少对单片机的占用,其具有高性能、低功耗的优点。内部具有多个寄存器分别储存日期,星期与小时、分,秒,并在计时过程中实时修改。芯片采用三线接口与CPU 进行同步通信,如接入备用电源,可在单片机掉电情况下保持计时应对实际使用中可能会遇到的停电。

2.1.4 电机的选择

本设计执行机构使用28BYJ-48 步进电机,窗帘支架长度、位置等是固定的,因此在启闭时应该避免开启后电机仍在转动这类情况出现导致的设备损害。而步进电机的特点是良好的定位能力,因其转动是根据脉冲数决定的,满足本设计的使用需求。此外步进电机电气自动化启停迅速,操纵方式简单。

2.1.5 光照传感器的选择

本设计光照传感器模块使用BH1750FVI。其具有以下优点:光谱范围与人眼相近,无需任何外部零件,对光源的依赖性不大,受红外线的影响很小,测量精度最高可以精确到0.5LUX。

2.2 整体方案

2.2.1 系统框图

本设计的系统各个模块如图1所示。

图1:系统框图

2.2.2 系统概述

其中液晶显示模块用于显示基本信息如时间,以及提示用户当前的运行模式,包括正在启闭窗帘、当前为手动模式等;光照传感器使用GY-30 模块,光照强度直接以16 位2进制数的形式输出至单片机;窗帘使用28BYJ-48 步进电机代替模拟,窗帘的开关状态由单片机记录并在LCD1602 上显示;本设计还有4 个独立按键用于进入设置模式、切换控制模式、在手动模式下的窗帘启闭控制等;最后,供电采用常用的USB5V 进行供电。

3 系统硬件设计

3.1 最小系统模块

3.1.1 STC89C52 简介

STC89C52 是由ATMEL 公司生产的增强型8051 单片机,自带8K 字节的可擦写的Flash,集成512 字节RAM,兼容标准MCS-51 指令系统,其小巧、廉价的特性使其广泛应用于各种设备。本设计采用PDIP(PlasticDualIn-LinePackage)封装形式的STC89C52 具有40 个端口,包括32 个外部通用双向输入/输出,同时具有4 个下降沿有效的外部中断,无需仿真器即可通过ISP(InSystemPrograming)通讯,通过串口即可完成程序下载。

3.1.2 最小系统电路

最小系统电路如图3所示,最小系统即是单片机能够正常运行的最简单的系统,包含了上电复位电路、外部晶振电路及电源三部分。外部晶振电路包含的元器件有一个12MHZ 的晶振X1,以及电容C2 和C3,均为30Pf。电容作用是帮助起振。晶振的频率决定了单片机执行程序的速度,在允许范围内越高则速度越快。复位电路采用上电复位的形式。上电后RESET 将置为高电位,高电位的时间取决于复位电路中的电阻与电容的值,STC89C52 的RESET 保持高电位超过两个机器周期加上起振时间时,单片机将复位。电源部分采用5V的USB供电,供电设备可以是电脑USB 端口。此外,由于STC89C52 的P0 口是开漏输出,无法真正输出高电位,因此需要外接电阻,电阻另一端接电源,当P0 任一端口为逻辑1 时,电源将代替单片机输出高电位。另外,本设计的程序将存储在内部寄存器,因此EA 需要拉低电位。

3.2 液晶显示模块

LCD1602 是一款液晶显示屏,具有低功耗、显示信息量大(文本)、使用寿命长的优点,因此得到广泛应用。虽然因为显示点阵之间有间隙,无法很好地显示图像,但能够完全满足文本显示,符合本设计只显示数字与英文字母的需求。LCD1602 可分两行显示,每行最多可分别显示十六个字符,支持ASCII 字符显示以及数量有限制的自定义字符。

3.3 时钟模块

DS1302 是美国DALLAS 公司推出的时钟芯片,具有涓细电流充电、低功耗、实时计时等优点。主要特点是数据通过串行传输,具有掉电保护功能,也可关闭充电功能,采用32.768kHz 晶振。DS1302 带有12 个寄存器,其中7 个用于存放年(2100年以前)、月、日、周、以及三个当前时间小时、分钟、秒的数据并进行计时。芯片通过SPI 总线进行数据交换,可单次传输多字节的时间数据。

3.4 光照传感器模块

GY-30 模块是一款包含BH1750FVI 及其外围电路的数字型光强度传感器。其具有下述特点:接近人眼的光谱灵敏度特性、直接输出光照强度的数值、可测量光照强度范围大(1-65535 勒克斯)、精确度最高可达0.5 勒克斯、几乎不受红外线影响、数据通过IIC(Inter-Integrated-Circuit)总线传输等,使用方法与其核心BH1750FVI 一致,外围电路的作用是使VCC 接+5V 电源使,仍能满足BH1750FVI 的运行条件(VCC 最小值2.4V,最大值3.6V),本设计使用芯片手册推荐的模式,此模式下,测量一次环境光照强度的时间为120ms-180ms,精确度为1Lx。

3.5 按键模块及元器件清单

本设计共使用4 个独立按键,以KEY1、KEY2 的形式编号,接线图如图3所示。KEY1 是模式切换按键,实现自动模式与手动模式的切换。KEY2 是设置键,用于进入设置模式、保存当前变量并进行下一步设置、退出设置模式。KEY3、KEY4 在设置模式中分别是加键、减键,按下后对当前变量加一或减一;在手动模式中分别是窗户的开启键与关闭键;在自动模式中两者均无效。

图3:实物总体

4 系统软件设计

4.1 总体程序流程图

本系统的软件总体流程如图2所示,程序开始先进行初始化,包括对时钟芯片、光照传感器、液晶屏幕的初始化。时钟芯片的初始化即向时钟芯片写入默认时间并开始计时;光照传感器的初始化为写入通电指令。初始化后电机断电是因为单片机IO 口默认高电平,此时电机四相都处于通电状态,如果不断电(即P2 口拉低),电机将持续发热,损坏电机。接着将验证当前时间是否在光控时间范围内并对变量TimeFlag 赋值,随后是读取当前时间、当前光照强度,并与设定的阈值进行对比,同时会将数据转换成ASCII 码值写入LCD 屏幕的寄存器中完成显示。

图2:总体程序流程图

4.2 LCD1602程序设计

LCD1602 开始显示之前,在把内容的ASCII 值写入寄存器前,需要先指定光标位置即内容显示的位置,指定光标位置后输入的ASCII 值会自动存入对应的寄存器中,在下一次指定该位置并写入数据之前,屏幕会一直显示该字符。本设计使用的是光标自动右移模式,最开始指定光标位置后,每次写入数据都会自动右移,因此在同一行显示时不需要再次令光标定位。

4.3 按键扫描及处理程序设计

这部分程序用于实现手动模式下窗帘的启闭控制,以及进入设置模式,对光控生效时间范围,当前时间,光照强度阈值进行修改。当处于手动模式,且未进入设置模式时,按键KEY3、KEY4 分别用于开启、关闭窗帘,程序还通过一个状态变量windowstatus 记录窗户的启闭状态,只有窗户的状态在操作执行后与当前的状态不同时,操作才会执行,反之则表现为按键无效。例如,当前窗户处于电气自动化开启状态,按下KEY4 窗帘将会关闭,按下KEY3 则无动作。在手动模式下,电机动作时,屏幕还将显示“Opening”或是“Closing”提示用户。

KEY1 用于切换自动模式与手动模式,实现方法是定义位变量mode 记录当前所处模式,当KEY1 按下时,对mode 取反,实现两种模式的来回切换。

KEY2 用于进入设置模式。设置模式是一个大循环体,一共包含了六个小循环体,每个小循环体用于修改一个变量,按照执行顺序分别是当前时间的小时、分钟,光控生效时间的开始时间、结束时间,最后是光照强度阈值的十位与个位。进入设置模式后,首先修改的是当前时间的小时,小时的修改通过KEY3、KEY4 实现,KEY3 被按下时小时加一并写入屏幕寄存器中更新显示内容,KEY4 被按下时小时减一后更新显示内容,重复执行上述程序直至修改完毕,按下KEY2 打破当前小循环进入下一个小循环,当前时间的修改在完成小时与分钟之后,经过处理一同写入DS1302 芯片中。其他循环体与当前时间相似,不同的是其它循环体修改的变量只需要储存在单片机内部。

4.4 自动模式程序设计

自动模式如何进行除了光照强度外,还由是否处于光控生效时间范围内决定,由此分为光控生效模式与光控失效模式。光控生效模式满足的是用户日常活动时的需求,而光控失效模式满足的是用户的隐私需求,如夜晚光照强度低,而多数人晚上入睡时习惯关上窗帘,仅靠光照强度无法满足这一需求。处于自动模式下,若当前时间处于光控生效时间范围内,进入光控生效模式,反之则进入光控失效模式。

光控生效模式下,若当前测量的环境光照强度大于设定的光照强度阈值且此时窗户处于开启状态,则等待一段时间后再次测量光照强度,若延时后光照强度仍然大于设定的光照强度阈值,则驱动电机关闭窗帘,电机驱动完毕后回到主程序,而本模块是主程序的循环体中的最后一步,因此驱动电机完毕后从主程序中的电机断电开始执行;当延时后光照强度不大于光照强度阈值,则电机无动作且返回主程序。判定条件后先延时再测量的原因是防止灯光闪烁等干扰造成不必要的启闭。

光控生效模式下,当光照强度小于阈值且窗帘处于关闭状态时,后续程序与前述相似。若是光照强度与窗帘的状态均不符合上述两者条件,则维持原状并回到主程序。光控失效模式下,驱动电机关闭窗帘后也同样回到主程序中。

5 实物功能演示

5.1 总体概述

本设计使用普中科技的A2 开发板进行功能演示,如图3所示,当前时间显示在第一行的最左侧,即“17:04”;“M”代表的是当前处于手动模式下,若处于自动模式,该处应显示为“A”;“I”表示的是当前时间在光控生效时间范围内,若在范围外,则该处应为“O”;“09-18”表示的是光控生效时间范围,为9 点至18 点,应LCD 显示空间有限,本设计光控生效时间仅能设置为整点。

第二行从左至右分别是当前环境光照强度、窗帘当前启闭状态与光照强度阈值。光照强度最高为65535,图中环境光照强度为40Lx,数字4 前的无效数字已自动省略,同时光照强度阈值也已做相同处理。当窗帘关闭后,“Open”将变为“Shut”。

5.2 手动模式

窗帘处于开启状态,按下KEY4 后,屏幕显示“Closing”,同时电机顺时针旋转,代表窗帘关闭。

5.3 设置模式

按下KEY2 后,系统进入设置模式,此时屏幕除当前修改变量处闪烁显示外,其他显示内容静止。通过KEY3、4可修改各变量,本次演示修改当前小时为19,阈值为300,可见当前时间脱离时间范围,“I”变为“O”。

5.4 自动模式

根据上述分析可知,当前环境光照强度低于光照强度阈值且处于窗帘关闭状态,但此时处于光控失效模式,因此按下KEY1 改变模式后,除了屏幕中的“M”变为“A”外,系统不会有其他变化。手动调整时间至范围内后,屏幕显示“Checking”,延迟一段时间并等待传感器测量环境光照强度后,驱动电机反转开启窗帘,最后屏幕重新显示各个变量。

6 总结

从智能家居总体上看,我国智能家居销售收入在国家上与其它发达国家相比也毫不逊色,2019年的总体销售收入仅次于美国,但美国的销售收入接近我国的三倍。但从普及率看,我国的普及率却与销售收入表现相反,仅为4.9%,这是因为我国人口众多,销售收入的高排名得益于此,实际普及率并不高,与发达国家相比较还有很大差距。这也意味着我国的市场潜力足够强大,具体表现为从2017年开始市场规模都以翻倍的趋势增长。智能家居通过现代信息技术、物联网技术、电气自动化等令传统家电更新迭代,在实现传统家具功能的基础上,打造具有全方位信息交互功能的,安全舒适的住宅环境,极大地优化了人们的生活方式,同时顺应了消费转型、高质量发展的趋势。

在本次设计中,预期的主要功能已经实现,有通过按键进行模式切换、设定参数、手动启闭窗帘的功能,以及综合时间与光照强度的自动模式。在程序设计中,在细节上也尽可能地在完善,如当前光照强度值的显示,把有效数字前的数字零全部变为了空白;在设置模式中光照强度阈值这一个变量,有两轮调整环节,分别调整光照强度阈值的十位与个位,兼顾了调整度速度以及精度。但仍存在一些问题,如设置模式中循环体比较多,在程序设计初期没有定义相关的子函数,造成程序比较臃肿;因为屏幕空间限制,时间范围只能设置小时。此外,本打算实现基本功能后额外增加如红外遥控、温度检测等功能,但因为时间限制没有实现,这也是下一步工作研究的重点。

猜你喜欢
窗帘手动阈值
风儿撩起了窗帘
小波阈值去噪在深小孔钻削声发射信号处理中的应用
基于自适应阈值和连通域的隧道裂缝提取
巧做窗帘
比值遥感蚀变信息提取及阈值确定(插图)
小巧手动起来
风行S5001.6L手动尊享型
宝骏5601.8L手动豪华型
C4世嘉 1.6L手动豪华型
室内表面平均氡析出率阈值探讨