郭红军
(焦作师范高等专科学校 信息化管理中心,河南 焦作 454000)
近年来,随着科学技术的发展及国民美好生活需求的日益增长,智能化、简洁化和自动化逐渐成为一种新型生活方式.智能控制系统完美契合新时代需求,智能家居照明控制系统有效减少了能源损耗,满足居民的智能化生活,符合我国现阶段环境保护与节能减排的要求[1-2].
目前市面上部分智能照明产品存在造价偏高、操作复杂,居民对智能家居产品存在认识误区,普遍认为智能照明系统价格昂贵、功能冗杂.本文从智能照明系统的短板出发,设计一款简单小巧的智能照明控制系统,根据外界光亮自动调整光强,通过手机控制灯具开关,调节灯光颜色,制作成本低、节能环保、功能精简、易于操控.
传统家用电器照明系统一般通过自锁开关对灯具进行开启或关闭的操作,前些年也有出现加装红外传感器的灯具,使用遥控器控制,但整体还不算智能.本设计在传统灯具的功能基础上,增加三种控制方式,分别是:检测人体通过而自动亮灯,通过手机控制灯具的开关、颜色,检测外界环境光强的变化自动调整灯光的亮度.
系统整体设计思路是将WIFI模块、WS2812灯珠、光敏电阻、红外感应模块和单片机控制板结合,在正常光照下,灯具光强正常;在强光条件下,灯具光强变暗;在弱光条件下,灯具光强变亮.通过使用ESP8266型WIFI模块,实现手机对照明系统的控制.控制器结构框图如图1所示.
图1 控制器结构框图
整个系统的主要硬件设计由芯片STC89C51单片机主控,外围电路包括复位电路、时钟电路以及指示灯电路,功能电路包括ADC转换电路、PWM控制电路以及WS2812灯珠控制电路,WIFI模块连接单片机主控板且通过串口通讯调试.
在系统中,时钟电路、复位电路、供电电路与STC89C51单片机组成最小系统,作为整个系统的控制中心.复位电路采用上电复位,加电时会通过一个电容给RST端一个短暂的高电平信号,接着高电平信号随着VCC对电容的充电过程逐渐回落,实现复位效果[3],如图2所示.
图2 最小系统原理图
本系统中,通过光敏电阻接收外界的光照强度属于模拟信号,而单片机只能处理数字信号,本小节引入以ADC0832芯片为主的A/D转换电路的设计解决这一问题.ADC0832是由美国著名半导体企业制造的支持8位分辨率、双通道A/D的变换晶片.变换晶片体积小,可靠性强,已经在国内普及,其最大亮度显示达256级,能满足一般的模拟量变换需求.额定电压和电源输入方面,该晶片对模拟电流的最大输入范围是0~5 V,晶片变换时限32 μS,具备双数据输出功用,可对数据进行校验,有效降低了数据误差,同时变换速度快,稳定能力强[4-5].
该设计使用GL3516型光敏电阻,对外界光照强度数据进行反馈,改变其电阻.外部光强通过光电寄存器反馈至ADC0832的CH0引脚,ADC0832又从D0/D1口将电信号转换输出为数字信号[6],如图3所示.
图3 光照强度检测电路
本系统除需满足根据外界光强自动调节照明亮度之外,还需实现对暖色光、冷色光与白光三种照明颜色的调节,普通LED灯管无法实现对颜色的自由调节,故本设计使用12位5050封装的WS2812灯珠组成灯带作为该系统的主要照明元件.WS2812是集合控制电路和灯光集成电路为一身的外控智能LED光源系统,数据信息协议采取单线的空符号通讯方法,在图像点ON-RESET之后,由DIN端直接接受控制器传来的所有数据信息,由第一图像点获得第一次传送的全部二十四个数据信息[7].
WS2812是一个数字控制的全彩LED灯珠,采用单总线通讯,每颗灯珠支持24 bit的颜色控制,信号线通过DIN输入,经过一颗灯珠之后,信号线上前24 bit数据会被该灯珠锁存,之后将剩下的数据信号整形之后通过DOUT输出,将每一颗灯珠的DO与DIN串联设计组成灯带,即可满足信号在每一颗灯珠之间传递,使灯带上所有灯珠在同一时间呈现相同的颜色[8].连接方式如图4所示.
图4 WS2812灯带连接方式
前文提到使用光敏电阻控制灯珠的亮暗,但是光敏电阻的特性是外界光强高的时候阻值降低,外界光强弱的时候阻值增高,要实现在外界光强高的时候灯光亮度减弱,外界光强弱的时候灯光亮度增强,只使用光敏电阻无法达到目标.实现本设计最初的预期,需引用脉冲宽度调制(PWM)控制调节.
PWM是使用微处理器的数码输出控制模拟电路的高效工艺技术,是对具体输入或输出信息采用数字编码的方式.使用高分辦率运算器,调控方波的占空比,解码具体输入输出信息的电平[9-10].本系统中对PWM控制电路设计如图5所示.
图5 PWM控制WS2812灯带电路
系统软件设计最重要且最复杂的部分是将ESP8266型WIFI模块与阿里云平台建立连接,根据云平台MQTT协议,以一机一密的方式将设备直连接入阿里云网络中.其余硬件部分控制程序采用STC89C51系列单片机识别的C语言编程.由于程序冗长,本文只展示核心设计程序.
3.1.1 将ESP8266型WIFI模块作为TCP客户端开启透传模式
将WIFI模块接入云端进行数据传输,需打开透明传输模式,把WIFI模块作为TCP客户端,可以与云端连接.本部分程序先完成串口发送数据的代码,使单片机通过串口通讯收发数据.由ESP8266芯片实现配网的AT指令,开启网络的连接与透传模式.
以下是本次设计中所用到的WIFI模块配网指令[11-12]:
AT+RST; #重启模块
AT+UART=
AT+CWMODE=1; #设置STA模式
AT+CWJAP=
AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com"
3.1.2 实现ESP8266型WIFI模块与阿里云平台连接
完成WIFI模块的配网操作并顺利打开透传模式.下一步需要将其接入阿里云,完成产品与云端的配置.在接入云端之前,需要先在阿里云平台新建一个“产品”,平台会自动分配给其在MQTT协议中用于建立唯一连接的产品证书(ProductKey、DeviceName和DeviceSecret),通过该证书完成ESP8266型WIFI模块与云端一对一的连接[13-15].
以下是MQTT协议中用于WIFI模块连接阿里云平台的配网指令:
AT+MQTTUSERCFG=0,1,"NULL","用户名","密码",0,0,""
AT+MQTTCLIENTID=0,"ClienId"
AT+MQTTCONN=0,"连接域名",1883,1
AT+MQTTSUB=0,"topic",1 //1. 订阅
AT+MQTTPUB=0,"topic","test",1,0 //2. 发布
//属性设置
/sys/a1TGuTWhjR8/TestDevice/thing/service/property/set
/sys/a1KIUPF4pAV/TestDevice/thing/service/property/set-reply
//属性上报
/sys/a1TGuTWhjR8/TestDevice/thing/event/property/post
/sys/a1TGuTWhjR8/TestDevice/thing/event/property/post-reply
主程序设计的主要思路是初始化定时器T0,对WIFI模块进行配网,打开透传模式,让WIFI模块开始透明传输.将WIFI模块与阿里云平台进行握手,实现产品与云端之间的连接.使灯带通电,初始化红外感应模块与PWM控制电路.具体程序如下[15]:
void main ()
{
Time1_Init();
esp8266_set();
MQTT_connect();
while (1)
{PWM = Hc_SR501;
Adc_dat = Adc_Read_data(1,0);
if (Hc_SR501) {
TR1 = 1;
Pwm_produce(~Adc_dat);
}
Else
{TR1 = 0;
}
delay_us(8000);
}
}
前文已详细介绍产品功能,使用相对低廉的STC89C51系列单片机作为主控板,其余元器件也经济实惠,本设计将硬件的成本控制在90元左右.与其它智能照明设备对比,本系统的设计功能实用且具有明显的价格优势.
设计使用STC89C51系列单片机作为主控单片机,利用ESP8266型WIFI模块与单片机建立串口通讯,设计价格低廉、功能精简的智能家居照明控制系统.最终成品可实现根据外界光强自动调整灯光亮度,有效减少电能的损耗,自动感应开关灯并通过手机控制调节,根据用户需求在三种灯光颜色之间自由切换.智能家居照明控制系统精简实用,方便操作,有效满足了居民智能化生活需求.