随着物联网技术的不断发展,智能家居概念悄然兴起,力求通过物联网技术,为人们创造一个集建筑居住、多功能家电、网络通信、安全保障等功能于一体的现代自动化居住环境。具体而言,智能家居能够统一各种家用设备(如照明灯具、空调、影音设备、安防和网络通信设备等),系统性地提供自动化的照明控制、温度调节、影音播放、防盗报警、网络通信等服务。相较于传统的家居方式,智能家居在传统的居住功能(舒适、安全等)的基础上,添加了智能服务。在提供便利及时的信息交互方式的同时,有效提高了人们的生活和社交效率。此外,智能家居的自动化属性还能改善人们的日常作息习惯,降低日常能源使用损耗,并可提高生活环境的安全性。
智能家居系统涉及的设备众多、功能复杂,本文仅针对智能家居系统下的温度和亮度控制功能,基于单片机设计和开发了一套温度自动控制系统。该系统包含温度检测和自动控制调节、火灾自动报警、时钟显示与定时、室内亮度自动控制调节等功能。经过调试与测试,系统运行良好,能够实现预定功能且满足设计需求。并为类似的温度自动控制系统设计提供了参考。
1功能需求
本文的温度自动控制系统涵盖了温度检测和自动控制调节、火灾自动报警、数字时钟显示与定时、室内亮度自动控制调节等功能,其功能需求具体为:
(1)系统能够在开启时进行初始化工作;
(2)系统能够扫描键盘,检测用户在系统初始化后的个性化参数设定,如闹钟的开启/关闭时间、温度调节的上下限等;
(3)系统能够对闹钟开启与否进行自动检测,并能根据系统时间对振铃进行判断和操作;
(4)系统能够对室内温度进行实时检测。若室内温度介于设定上限值和报警值之间,则系统会自动关闭加热装置和火灾警报,并启动制冷装置;若室内温度低于温度设定的下限值,则系统会自动关闭制冷装置和火灾警报,并启动加热装置;
(5)系统的温度报警上限默认设定为50℃,若超过该温度值,则系统能够自动进行火灾警报;
(6)系统能够对室内光线亮度进行自动检测,并根据光线强弱自动打开/关闭照明灯具。若亮度过高,且室内温度超过了设定上限值,则系统能够自动开窗;若亮度过低,且室内温度低于设定下限值,则系统能够自动关窗。
2硬件和软件设计
2.1硬件设计
本文温度自动控制系统的硬件包含了单片机电路、液晶屏显示电路(LCD1602)、时钟电路(DS1302)、温度检测电路、A/D转换电路、模拟光照强度及温度采集电路、火灾报警电路、制冷热电路、开关窗电路、电源电路和模拟指示灯电路等,如图1所示。其中,STC89s52单片机是整个系统的控制中心,其控制着各个模块的协调运行。液晶显示模块用于显示当前室内温度值,光照以及温度采集模块负责将光照和温度转化为电路中的模拟量。然后通过A/D检测电路将采集到的光强及温度的模拟量转化为数字量,温度检测模块负责对温度数字量进行检测。若温度过低,则启动制热模块对室内进行加热,使温度上升;若温度过高,则启动火警报警电路发出警报。同时,启动制冷电路对室内进行降温处理,并启动开关窗电路打开室内门窗进行热量的散出,进而能够动态保持室内温度处于所设定的温度范围。下面本文对部分电路的硬件设计进行介绍。

图1 温度自动控制系统硬件模块框架
2.1.1时钟电路
本文选用低功耗DS1302(DALLAS公司)作为时钟电路的芯片,该芯片内部含有一个静态RAM(31字节)和一个实时时钟/日历,并通过串口实现与单片机的通信。本文设计的时钟电路采用同步串行通信方式实现单片机和DS1302时钟电路芯片的通信,如下图2所示。其中,DS1302只需使用3个口线,分别为串行时钟SCLK、I/O数据线和RES复位。此外,该时钟芯片具有双电源管脚(连接主、备用电源),工作时具有较低的功耗(小于1mW)。

图2 时钟电路原理图
2.1.2温度检测电路
温度检测电路用于实时监测温度变化,如图3所示。其中,18B20引脚和单片机中的P3.7引脚相接。在连接好电路后,单片机可对DS18B20温度传感器(精度±0.5℃)执行操作。该电路的工作原理为:单片机首先对DS18B20温度传感器的序列号进行逐个读取,将其挂接到总线后发出匹配ROM的相关指令。
若此时只有一个DS18B20温度传感器则可跳过匹配操作,直接对传感器数据进行读写操作。单片机在温度检测阶段始终依照DS18B20温度传感器规定的工作时序,依次进行初始化和读写操作。

图3 温度检测电路原理图
2.1.3A/D转换电路
本文设计的A/D转换电路,如图4所示。其中,AIN0(AIN1)用于调节数据转换精度,J6中的两个接口用于连接光敏、热敏电阻,SDA和SCL引脚分别连接A/D转换芯片的数据与时钟线。由于光敏和热敏电阻可根据外界环境的光线强度及温度情况进行阻值变化,故A/D转换电路负责将阻值转换为数字信号,并将处理后的数字信号传送给单片机进行相应的处理。之后单片机按照阻值-温度(光线强度)关系进行计算,以实现对外界光线强度和温度的检测。

图4 A/D转换电路原理图
2.1.4模拟光照强度及光温度采集电路
本文设计的模拟光照强度及温度采集电路,如图5所示。该电路由光敏、热敏电阻构成,用于对外界光照强度和温度进行采集与检测,从而得到相应的模拟值。

图5 模拟光照强度及温度采集电路原理图
2.1.5电源电路
本文设计的直流USB接口电源电路,可见下图6所示。由于单片机的正常工作电压一般处于3.6~5.5V范围内,故图中单片机的20号引脚接地,40号引脚与5V电源相连。

图6 直流USB接口的电源电路原理图
2.2软件设计
本控制系统的单片机芯片使用的是STC89C52,软件设计部分需要涉及系统运行中的初始化、液晶显示、时钟、I2C、A/D转换、温度传感器、电灯(模拟灯)控制以及键盘扫描等模块的运行。利用KEIL软件对软件部分进行设计与编程,得到的主程序流程图见图7所示。从图中可以看到,系统在各模块初始化完成后依次进入键盘的扫描、闹钟的执行判断、光照和温度的判断,最终执行相关的操作。

图7 本文控制系统的主程序流程图
3调试及测试
3.1软件测试
实际软件测试过程中,会出现由于设计失误而产生的故障。如在程序中设置断点或连续运行程序时,程序并未按照指定功能执行;亦或是并未产生任何运行结果,这通常是因为程序处于死循环或“跑飞”的状态。此时,可以查看操作系统或是较高优先级的程序,看任务是否正确调度或成功释放。
此外,软件测试过程中也会出现CPU对中断无响应的问题。该种问题发生在程序连续运行过程中,对中断任务程序操作无响应,亦或是当断点设置在中断服务程序(中断入口)时到达不了断点位置。此时,可查看CPU的中断寄存器是否正确设置了初值、特殊功能寄存器亦或是扩展I/O口是否编程有误、中断状态寄存器在PC指针返回时是否及时释放以及外部中断源硬件是否发生故障等。
3.2硬件测试
本文采用仿真器在线调试方法,对温度控制系统进行硬件调试。具体而言,将单片机连入仿真器内,结合软件中自带的在线调试功能设置断点,使系统以单步方式运行。再观察实际运行情况与设计是否一致。
按照上述软件、硬件测试,对本文的温度控制系统进行综合测试和调试(如图8所示)。测试结果显示,系统中的各个模块电路均能正常运行。并可较好的实现本文的设计需求,完成温度检测和自动控制调节、火灾自动报警、时钟显示与定时、室内亮度自动控制调节、液晶显示及按键操作等功能。

图8 本文控制系统部分硬件调试图
4结束语
针对智能家居系统中的温度和亮度自动控制功能,本文基于STC89C52单片机设计并开发了一套温度自动控制系统。该系统包含温度检测和自动控制调节(精度±0.5℃)、火灾自动报警、时钟显示与定时、室内亮度自动控制调节等功能,其设计简单、成本低、操作便捷。经过调试和测试,系统运行良好,能够满足设计需求,并为类似的智能家居温度与亮度调节模块的开发提供技术指导。