智能窗帘控制器:语音识别、可根据光线强弱自动开合窗帘

摘要

江苏职业技术学院无锡机电分院的研究人员张超敏、王雪娇,在2019年第3期《电气技术》杂志上撰文(论文标题为“基于单片机的语音识别智能窗帘控制器的设计”),系统以单片机STC89C52芯片作为主控模块,可以对窗帘实现光照度检测、语音识别、按键手动等智能控制功能。

光照度模块采集室外光照度数据上传至单片机,单片机发送控制指令驱动步进电动机驱动模块,控制步进电动机转动实现窗帘的自动开合,LCD显示屏显示实时的温度和时间。同时,系统还具备手动控制功能,通过语音识别模块或按键控制窗帘的开合。通过仿真验证该系统性能稳定、结构简单、抗干扰能力强、成本低廉、能够满足智能家居的需求。

随着物联网技术的高速发展,智能化建筑悄然兴起,传统窗帘操作不方便,智能窗帘为人们提供了一个舒适的家居环境。在智能家居领域,电动智能窗帘克服了传统窗帘操作不便的缺点,可以在设定的光线和温度下,自动开起窗帘和关闭窗帘,为人们提供了更方便、舒适的居住环境。因此,研究与设计智能窗帘控制系统具有深远的现实意义。

一些学者在智能窗帘的设计方面进行了研究,比如孙勇等通过红外遥控控制系统可实现窗帘的自动开合;孙勤设计窗帘光控智能控制系统;扬亚让通过主从式多机通信协议可实现窗帘控制信号的远距离传输。陈晓燕等通过串口多机通信实现了窗帘开合的远程控制。市场上现有的智能窗帘控制器价格较昂贵且尚不具备语音功能,而基于单片机的语音智能窗帘控制器具有更好的稳定性、更适中的价格、功耗更低、更实用,就这也为智能窗帘系统的研发提供了市场价值。

单片机STC89C52作为系统的核心芯片,由光控模块、按键模块、步进电动机驱动模块、语音识别模块、和LCD显示模块等组成。光控模块就是利用光照度传感器实时检测室外光照度的变化,从而控制窗帘自动开合,使室内保持恒照度控制。

当单片机接收到手动控制、自动控制、远程控制信号后驱动步进电动机驱动模块控制步进电动机的正反转,从而实现窗帘的开合。语音识别模块具有语言记忆功能,把语音“开关窗”的指令预先写入程序中,程序植入语音识别模块中,当有人发出相应语音指令时,通过与程序中原有指令比较,相符即控制窗帘开关。

1  系统硬件框图设计

系统硬件为模块化设计,包括语音识别模块、光控模块、按键模块、步进电动机驱动模块,LCD液晶显示模块。整个系统硬件框图如图1所示。温度检测模块和光照度检测模块主要完成温度和光照度数据的采集,并且通过液晶LCD显示屏显示;

图1  系统硬件框图

按键模块主要完成人工手动控制功能;步进电动机驱动模块通过控制步进电动机的正反转来模拟窗帘的开合;采用单片机STC89C52作为主控芯片,完成对接收到的光照度、语音、按键输入等数据进行处理,并通过驱动模块实现窗帘的开合。

2  系统硬件电路设计

2.1  语音识别模块

语音识别模块核心芯片采用LD3320芯片,是一种非特定人“语音识别”专用芯片。语音信号为模拟量信号,需嵌入在芯片内部A/D和D/A接口将语音模拟信号转换为数字信号,操作者无需提前经过语音训练,识别的关键语句如“开窗”指令以字符串的形式存入芯片中,识别的过程就是将操作者的语音与关键语句进行比较,若匹配,则执行相应控制功能。LD3320语音识别模块硬件电路如图2所示。

图2  语音识别模块电路

2.2  光控模块

利用光控模块,用户可以根据日常需求自行设定室内光照度,通过光敏电阻实时监测室外光照度,单片机控制窗帘开合实现室内恒照度控制。窗帘实现光照度自动控制,天亮窗帘自动打开,室外光照度超过3000lx自动关闭,天黑窗帘自动关闭。光敏电阻监测到的光照度数据为4~20mA电流模拟量信号,需经过A/D模数转换后输出数字量信号给单片机。

A/D转换器的功能是进行模数转换,把LD3320语音芯片接收到的模拟信号转换成数字信号输出至ST89C52。为确保A/D转换的精度和速度,A/D转换位数与整个智能窗帘控制系统测量控制的范围和精度有关。本系统中采用8位A/D转换器ADC0832芯片。整个光控模块硬件电路如图3所示。

图3  光控模块电路

2.3  步进电动机驱动模块

系统采用28BYJ-48型四相八拍步进电动机控制窗帘的开合,力矩较大、带负载能力强、控制精度高。单片机控制步进电动机驱动模块给电动机输入一系列脉冲信号,控制电动机连续转动,带动窗帘在轨道上移动。

步进电动机的转速、停止的位置取决于输入脉冲信号的频率和脉冲数,单片机控制发送一系列脉冲至步进电动机驱动模块,当步进驱动器接收到一个脉冲信号时,它就驱动步进电动机按设定的方向转动一个“步距角”0.62°,通过输出连续脉冲信号控制窗帘的连续移动。

步进电动机的工作峰值电流大范围为2.6~7A,若通过下拉电阻或三极管驱动产生的转矩小难以带动窗帘开合,通常需要专用驱动芯片驱动才能正常工作,本系统采用ULN2003专用驱动芯片驱动步进电动机。步进电动机驱动模块硬件电路如图4所示。

图4  步进电动机驱动模块电路

2.4  LCD显示模块

LCD显示模块采用LCD1602芯片,该模块用来实时显示室外光照度数据及窗帘工作状态。由于STC89C52单片机P0口带负载能力较差,故需先接10K上拉电阻排,再连接芯片LCD1602的DB1—DB7口作为数据输入输出端,传输光照度数据及窗帘开合状态指令。单片机P2.7数据端口接显示屏芯片LCD1602的使能端EN,P2.5口接液晶显示的RS数据指令选通端,LCD1602的5脚R/W读写选通接单片机P2.6。并用电位器RV2用来调节LCD1602的亮度,LCD显示模块硬件电路如图5所示。

图5  LCD显示模块电路

3  系统软件设计

3.1  主控模块流程设计

软件程序采用C语言编写,为了便于修改和调试,采用模块化设计,编程语言的开发工具用Keil C编程软件。系统主程序的流程图如图6所示。

系统首先上电复位完成对单片机、传感器、各端口模块初始化和Y值及Y值优先级设置,其中Y=3的优先级小于Y=1或Y=2。然后单片机根据接收到的外界信息的类型,进行相应的数据分析和处理后,通过电动机控制器控制步进电动机完成对窗帘的控制。

图6  主程序流程图

若Y=2有开合窗帘语音信号输入,则子程序驱动LD3320非特定人“语音识别”专用芯片,执行语音识别子程序,等待控制窗帘开合的语的输入。当LD3320接收到“开关窗”语音信号时,先对语音信号进行分析提取语音特征值,并与芯片中预存的开关窗控制关键字符比较,若匹配,则驱动步进电动机控制窗帘的开合。

若Y=3需执行光控子程序,则光敏电阻实时监测室外光照强度是否大于3000lx,若条件符合,则步进电动机正向转动,控制窗帘开起,直至碰到限位开关停止转动。在条件要求不符合时,返回到子程序入口重新初始化。检测窗帘开合状态,在打开状态下,光敏电阻检测到室外光照强度小于500lx时,控制步进电动机反转实现窗帘闭合。

显示子程序,当LCD1602芯片的读写选通端RW为低电平时,执行写操作;当数据指令选通端RS端工作状态为高电平时,选择指令寄存器;使能端EN为下降沿信号,显示数据被送到ST89C52单片机P2.0-P2.7口,LCD执行数据指令,判断数据指令是否执行完毕,若完毕,则在液晶屏显示光照度数据及窗帘开合状态,子程序退出。否则,返回到数据指令选择寄存器继续循环重复执行之前步骤。

3.2  系统仿真

利用Proteus软件进行系统仿真,根据智能窗帘控制系统的原理图,把相应的元件在库编辑器中找出来,然后进行绘制。电路图画好后再选择KEIL中已经编译好的*.hex文件,点击运行按钮,仿真结果如图7所示。

图7  系统仿真图

结论

在整个系统设计过程中,光控模块实时检测室外光照度数据传送至单片机,STC89C52作为主控芯片通过步进电动机驱动模块控制步进电动机正反转从而实现窗帘的开合,并通过LCD液晶显示屏显示光照度和温度。在实现光照度自动控制基础上,同时又添加了语音控制和按键控制功能,使智能窗帘的控制更加完善,更加人性化。

(0)

相关推荐