1. 引言
随着社会经济的发展和人们生活品质的提升,智能家居系统受到广泛关注。智能窗帘作为室内环境调节的重要组成部分,能显著提升居民居住舒适度和生活便利性[1]。以单片机为主的微控制技术的发展为实现智能窗帘控制系统提供了可靠的技术支持[2]。本文旨在设计一种智能窗帘控制系统,其系统核心STM32f103C8T6单片机,融合了光敏电阻模块、蓝牙通信模块等多种传感器,借助按键输入与OLED显示屏达成用户操作以及状态反馈[3]。硬件架构主要涉及时钟模块、电机驱动电路与显示模块等,此方案能成功实现手动控制、无线蓝牙遥控、自动控制以及定时控制等功能,极大地提升了窗帘系统的便捷性与适应性,在智能家居领域呈现出良好的实用价值与推广潜力。
2. 总体设计
2.1. 设计要求
本文设计基于STM32f103C8T6单片机的智能窗帘控制系统,主要内容如下:
1) 设计智能窗帘控制系统总体架构并根据需求选取各个模块。
2) 硬件电路的设计,控制系统采用最小单片机控制电路、OLED显示电路等。
3) 软件流程图设计与程序编写,介绍所用软件工具及其流程图设计。
4) 系统仿真与测试,运用Protues8.15仿真软件进行仿真验证以保证电路运行稳定,对控制系统实物功能分别测试保证设计准确。
2.2. 设计方案
本文设计的智能窗帘控制硬件设计原理框图如图1所示,采用STM32f103C8T6单片机作为主要控制电路,主要包括显示屏幕模块、按键模块、蓝牙模块、步进电机驱动模块等部分。
3. 系统硬件设计
3.1. 整体控制设计
本文设计以单片机主控电路为主体,通过无线红外遥控电路、液晶显示电路、步进电机驱动电路、光敏电阻电路、按键电路的相互结合组成的总体硬件电路。系统整体电路原理图如图2所示。利用STM32f103C8T6单片机丰富的外设资源,算法强大且应用范围广等优点来处理复杂任务。
Figure 1. Hardware design block diagram of the smart curtain control system
图1. 智能窗帘控制系统硬件设计原理框图
Figure 2. Overall circuit schematic diagram of the system
图2. 系统整体电路原理图
3.2. 按键模块
键盘按键模块是实现向STM32f103C8T6单片机输入数据、传送指令的功能,是主控系统中手动控制的重要功能。本设计使用按键模块可实现各功能切换,其中K1按键为不同模式的切换,可切换为自动控制模式、手动控制模式、无线蓝牙遥控模式、定时模式。K2按键为手动控制模式下的开启按键,当按下K2按键时主控系统发出打开指令,控制电机正转,以此来模拟窗帘开启;K3按键为手动控制模式下的关闭按键,当按下K3按键时,主控系统发出窗帘关闭指令,系统控制电机反转模拟窗帘关闭[4];K4按键为定时设置功能按键,可设置定时模式,并能通过K2,K3按键来调整定时时间。
3.3. 电机驱动模块
步进电机是一种将电脉冲信号转化为角位移的控制电机,它将电能转化为机械能。每次输入一个脉冲信号后,步进电机就会转动一个角度[5]。本设计采用ULN2003A驱动芯片,实现电机的调速和转动,步进电机控制系统由脉冲控制器、功率驱动电路、步进电机等组成。ULN2003A驱动电路流程如图3所示。
Figure 3. Block diagram of the stepper motor control system
图3. 步进电机控制系统方框图
3.4. OLED显示屏模块
为方便随时观察智能窗帘的运行状态,本设计采用0.96C寸的OLED显示屏,该显示屏有四个引脚,通过取定模软件给SCL和SDA两个引脚发送信号,可以在屏幕上输出数字、汉字、图片和英文。另外该模块还集成了电源和显示IC,只需要提供电源就能使用IIC进行显示内容控制。OLED显示屏模块液晶显示电路示意图如图4所示。
Figure 4. Schematic diagram of the LCD display circuit
图4. 液晶显示电路示意图
4. 软件设计
4.1. 开发环境介绍
选择STM32F103C8T6单片机作为核心控制芯片,选用Keil5编程软件。Keil5内置功能丰富、可以进行检测代码、仿真等功能,并且拥有功能强大的集成开发环境,为STM32单片机的开发提供了有力的支持[6]。智能窗帘控制系统使用C语言进行程序编写,它不仅能够进行代码的编写、编译和调试,还提供了丰富的库函数,极大地提高了开发效率。图5是Keil5的工作界面。
4.2. 系统流程设计
本文设计的软件主要实现功能以单片机系统为主体,与设计的各功能模块进行控制交互,从而实现智能窗帘控制系统应有的功能。系统整体流程图如图6所示。当系统初始化后,用户通过按键在自动模式、手动模式、定时模式以及蓝牙模式四种模式中任选其一。系统会根据用户所选模式检测相应信号(例如光照强度、按键动作、设定时间或蓝牙命令),并根据此决定驱动电机的转动动作,同时可通过OLED屏幕实时显示系统状态。
Figure 5. Keil Vision5 workspace interface
图5. Keil5工作界面
Figure 6. Overall system flowchart
图6. 系统整体流程图
4.3. BT04-A蓝牙模块配置设计
BT04-A蓝牙模块主要用于不同设备之间的无线通信,此模块可支持蓝牙4.0的标准。利用BT04-A模块,可以利用手机、平板等工具进行蓝牙通信,并且可以发送指令控制电机的转动。BT04-A蓝牙模块的程序流程图如图7所示。
Figure 7. Flowchart of the BT04-A bluetooth module program
图7. BT04-A蓝牙模块程序流程图
4.4. 光敏电阻控制模块程序
智能窗帘控制系统的自动模式是通过采集光照强度与设定值比较,判断是否超过或者低于系统设定值,进而控制电机的转动以及转动方向,以此来模拟窗帘的打开和关闭。
当执行光控模块程序时,系统进行初始化。电位器初始设定的光照强度阈值是当光照强度大于2500 LX时打开,光照强度小于1000 LX时关闭。此时光敏电阻采集的光照强度若大于2500 LX,电机正向转动,模拟窗帘自动打开。当光敏电阻采集的光照强度若小于1000 LX,电机反向转动,模拟窗帘自动关闭。
为防止电机误转动,在设计中加入了限位开关,当电机转动时,如果不慎接触到限位开关,电机便会立即停止转动,若没有接触到限位开关,代表电机没有转动到指定角度,会返回电机转动程序继续转动。光控模块程序设计图如图8所示。
Figure 8. Program design diagram of the light control module
图8. 光控模块程序设计图
5. 仿真测试
5.1. 仿真电路的搭建
本文使用Proteus 8.15软件对智能窗帘控制系统的电路图进行仿真验证。Proteus作为英国LabCenterElectronics公司开发的电子设计自动化工具软件,拥有市面上绝大多数的EDA工具软件基础的仿真功能,它能自行添加不同系列的单片机以及多种外围元器件进行仿真实验[3]。本文设计的智能窗帘控制系统由STM32103FC8T6单片机、按键、OLED显示屏、DS1302时钟模块、ULN2003A驱动芯片、步进电机、光敏传感器等模块构成,具有手动控制、自动控制、定时控制、无线蓝牙遥控这四个功能,借助Proteus8.15软件对其功能加以验证,新建原理图,可把各模块有效连接起来,实现多模块的功能交互。智能窗帘控制系统仿真图如图9所示。
Figure 9. Simulation diagram of the smart curtain control system
图9. 智能窗帘控制系统仿真图
5.2. 仿真测试
自动控制模式的原理是利用光敏电阻的特性来实现功能。光敏电阻传感器是一种以半导体材料为基础的装置,它通过分析半导体材料的阻值来探测光源的强度[7]。当光照强度增高时,光敏电阻的阻值会降低,当光照强度变低时,阻值变大[8]。在Proteus8.15仿真软件中使用滑动变阻器代替光敏电阻。利用电机正反转模拟窗帘的开启和关闭[9]。当电阻值低于设定值时,电机自动打开;当电阻值高于设定值时,电机关闭。
在仿真测试中共设计6个按键,其中K1按键为设置功能键,设置定时功能的时间以及当前时间,K2、K3按键是加减按键,可以调节时间。K4是时间按键,在定时模式下更改时间换行功能。K5按键是定时模式开启键,当按下K5按键时,定时模式启动、OLED会显示开启状态,此时定时功能开启。K6按键是手动开关键,当按下K6按键时,窗帘自动打开,OLED会显示开启状态,手动开启,松开K6按键后窗帘会自动关闭。通过上述操作能够成功实现智能窗帘控制系统的功能。智能窗帘控制系统的运行图如图10所示。
5.3. 实物测试
5.3.1. 硬件系统搭建
通过硬件和软件设计,使用嘉立创软件设计PCB底板,合理分配各模块的位置。嘉立创是国内领先的PCB设计与制造服务平台,提供电路设计、PCB制板、元件采购到SMT贴片,适合设计多功能电路。智能窗帘控制系统的PCB板如图11。
Figure 10. Operational diagram of the smart curtain control system
图10. 智能窗帘控制系统的运行图
Figure 11. PCB layout of the smart curtain control system
图11. 智能窗帘控制系统的PCB图
5.3.2. 功能测试
智能窗帘控制系统实物有手动控制、自动控制、定时控制以及蓝牙遥控控制四种模式。接通电源后,OLED显示屏亮起,显示时间、工作模式,并自动进入自动模式。PCB底板上一共有四个按键,从左到右(图12中10~13)分别是K1 (模式切换)、K2 (手动开窗、定时模式下时间加按键)、K3 (手动关窗、定时模式下时间减按键)、K4 (时间设置)。通过这四个按键可以控制智能窗帘的运行。智能窗帘的实物部分主要包括PCB板、时钟模块、步进电机以及无线蓝牙模块等元器件,智能窗帘控制系统的实物图如图12所示。
Figure 12. Physical prototype of the smart curtain. 1. STM32F103C8T6 Minimum System Board, 2. DS1302 Clock Module, 3. BT04-A Bluetooth Module, 4. ULN2003A Driver IC, 5. GL7516 Photoresistor, 6. Stepper Motor, 7. JR6001 Voice Module, 8. 4-Pin 0.96-inch OLED Display, 9. Speaker, 10. Button K1, 11. Button K2, 12. Button K3, 13. Button K4, 14. USB Type-A Female Port, 15. DIP Switch
图12. 智能窗帘实物图。1. STM32F103C8T6最小系统板,2. DS1302时钟模块,3. BT04-A蓝牙模块,4. ULN2003A驱动芯片,5. GL7516光敏电阻,6. 步进电机,7. JR6001语音模块,8. OLED4针0.96寸显示屏,9. 扬声器,10. 按键K1,11. 按键K2,12. 按键K3,13. 按键K4,14. USB母座,15. 拨码开关
自动模式下,根据光照强度,判断其是否达到设定值,如果光照强度大于设定值,窗帘会自动开启,保持室内光线明亮;如果光照强度低于设定值,窗帘会自动关闭,避免阳光过于刺眼。通过光敏电阻实时检测光照强度,并将结果传到单片机进行对比分析,再由单片机控制步进电机的正反转,实现窗帘的自动开合[10]。测试时,用手机灯模拟光源,观察电机是否转动。经过多次测试,智能窗帘在自动模式下的运行稳定可靠。自动模式工作情况如图13(a)所示。
手动模式工作情况如图13(b)所示。按下K1按键可以切换到手动模式,在此模式下,按下K2按键之后,电机正转,模拟窗帘打开;按下K3按键之后,电机反转,模拟窗帘关闭[11]。
按下K1按键系统从手动模式切换到定时模式,该模式下再次按下K4按键,可以进入时间设置界面,在此界面可以设置定时开关时间。智能窗帘根据预定时间,可自动实现开关功能。定时模式工作情况如图13(c)所示。
(a) (b)
(c) (d)
Figure 13. Functional testing diagram of smart curtain modules. (a): Physical operation diagram in automatic mode; (b): Physical operation diagram in manual mode; (c): Physical operation diagram in timer mode; (d): Physical operation diagram in remote control mode
图13. 智能窗帘各模块功能测试工作图。(a):自动模式下实物工作图;(b):手动模式下实物工作图;(c):定时模式下实物工作图;(d):遥控模式下实物工作图
当按下K1按键时,系统会从定时模式切换到遥控模式。此时需要配合手机、平板等产品使用。以手机为例,打开手机蓝牙,利用SPP蓝牙串口APP与单排机控制系统连接,成功后就可以发送指令,可以用手机控制智能窗帘的开启或关闭。遥控模式工作情况如图13(d)所示。
通过上述的操作,验证了智能窗帘控制系统完成了预期设定的目标。在各个模式下,控制系统工作稳定。在手动模式下,步进电机可以根据K2 (开按键)和K3 (关按键)的控制,开启正转或者反转,模拟窗帘的打开和关闭;在定时模式下,控制系统能够根据预设的时间准确地打开或者关闭窗帘。在遥控模式下,利用手机等蓝牙设备的配合,用户可以随时随地控制窗帘的开关。手机遥控界面如图14所示。
Figure 14. Smartphone remote control interface
图14. 手机遥控界面
6. 结语
本文设计的基于STM32f103C8T6单片机的智能窗帘控制系统实现了手动和自动控制窗帘开合的功能。通过集成蓝牙、按键、光敏电阻、液晶屏显示、时钟、步进电机等多种控制模块,实现了智能窗帘系统的多模式驱动。通过硬件和软件的优化设计与协同运作,系统在稳定性、响应速度与控制精度方面表现突出。基于Keil开发环境,通过嵌入式C编程实现对光敏传感器、电机驱动等模块的协同控制,完成窗帘的智能开合功能。本设计为智能家居中的窗帘控制提供了一种可行的方案,具有一定的实用价值和推广前景。在未来的研究中,可以进一步优化系统,如增加更多的传感器实现更复杂的控制功能,或者改进用户界面以提高用户体验。
NOTES
*通讯作者。