,,
(常熟理工学院 电气与自动化工程学院,江苏 常熟 215500)
一个智能照明控制系统主要由三个部分构成,分别是传感器网络、照明灯具及其控制技术以及照明控制系统的组网方式。传感器网络为智能照明系统提供对环境的感知,使系统更加人性化、节能效果更好。随着技术的进步和成本的下降,LED照明逐渐代替白炽灯照明已经是大势所趋。LED照明不仅功耗低、效率高,而且采用PWM技术进行调光的LED照明系统解决了传统的白炽灯照明采用可控硅调光的场合会产生较多的谐波、低功率因数以及低效率的问题,更契合环保绿色的发展理念。随着人们节能意识的增强和生活品质的提升,关注人本身的需求,能够为人们提供舒适、安全、节能的光环境的LED照明系统是未来智能照明系统的发展方向。
照明控制系统组成方式主要有总线式、电力线载波式以及无线网络等。传统的总线式和电力线载波式智能照明控制系统在建筑照明、大型体育场馆照明等领域已经有了很多的应用。但是迄今为止,这些照明智能控制系统在系统安装、设定上存在专业性太强,编程麻烦而难以在家用领域得到普及[1]。
家用智能照明控制系统应该是一种组网灵活、使用方便、成本低廉的系统。随着物联网技术的发展LED灯具等智能电器都可以实现无线网络接入[2],而无线通信技术也是种类繁多,出现了诸如ZigBee、蓝牙以及Wi-Fi等无线通信技术。这些无线通信技术各有优点,也各有其应用领域。但相比较而言,Wi-Fi无线网络的覆盖范围最广,信号的穿透能力更强,因此在家用领域也更为普及,成为住宅智能照明系统首选的组网方式。由LED照明设备、Wi-Fi无线网络以及智能手机应用程序构成的智能照明控制系统成为一种趋势,并且正逐渐取代传统照明控制系统[3]。传感器使智能照明控制系统能够聪明的感知周围环境,并根据环境的变化对室内LED照明进行控制,为用户提供方便高效的服务[4]。
基于Wi-Fi的家用智能照明控制系统总体方案如图1所示。整个系统包括基于STC12C5A60S2单片机的最小系统、红外及光敏参数检测电路、LED驱动控制电路以及ESP8266与单片机的接口电路等几个部分。人体红外传感器用以检测是否有人,微处理器根据其检测信号控制照明灯具;需要自动调光的场合则依赖于光敏传感器的检测数据。为了满足室内照明的功率的实际需求LED驱动电路采用了大功率驱动模块。
图1 家用智能照明控制系统总体方案
ESP8266模块与单片机采用UART串口连接可以实现串口到Wi-Fi无线网络之间的控制信号转换;通过配置可以让ESP8266工作于AP服务器模式并以此来构建室内的Wi-Fi无线局域网。
基于Android实现的手机应用程序使用户能够很方便地在Wi-Fi覆盖到的地方通过手机进行照明控制。对于无线局域网而言,通信协议是基于Wi-Fi的住宅智能照明控制系统的重要部分[5]。手机客户端与AP服务器之间的无线通信是基于UDP协议的。AP服务器将接收到的指令后,经相应处理后再通过UART串口将控制指令发送给单片机,最终由单片机实现LED灯的开关控制、延时关断控制和调光控制等功能。
家用智能照明控制系统按照三室二厅居的普通住宅进行设计,整个系统设有两路调光照明和若干路开关照明。调光照明用于主卧室和次卧室的房间照明;其余房间及楼道、阳台等地方的照明采用开关照明。开关照明的控制分为两种:一种方式完全由手机App实现其开关控制,适合于室内灯光的控制;另一种方式由手机App的控制信号和人体红外检测信号共同实现的灯光延时关断控制,比较适合楼道照明的场合。
基于上述控制要求,家用智能照明控制系统选用STC12C5A60S2单片机作为主控制器,该单片机是一款增强型的8051单片机,自带2路PWM输出以及8路高速10位A/D转换。满足采用PWM技术的调光输出以及处理光敏传感器的模拟输入信号的需要。STC12C5A60S2单片机的控制电路如图2所示,除了复位、晶振电路构成的最小系统以外,主要还包括基于LHI778 探头的HC-SR501热释电人体红外感应电路和光照度模拟信号采集电路。人体红外传感器探测距离可达7 m且对10 μm的人体红外辐射敏感,其输出端OUT接单片机P0.0端口。光照度采集电路由阻值为10 kΩ的电阻R2与光敏电阻R3串联构成,利用光敏电阻的光线敏感特性,当室内光照发生变化时采样电压也随之变化,两个电阻的分压输出信号接单片机ADC0引脚,由单片机完成信号的模数转换,单片机控制的LED调光的电路以该信号为基础。
图2 单片机主控制电路
ESP8266是一款专为移动设备和物联网应用设计的具有超低功耗的UART-WiFi芯片,该模块为用户提供了高度集成的WiFi SoC解决方案,可以作为从机搭载于其他主机MCU运行[6]。该模块为Wi-Fi无线网络嵌入其他系统提供了途径,在ESP8266的开发环境(SDK)下,通过相应配置即可组建一个小型的无线局域网。ESP8266的硬件接口丰富,支持UART、I2C、PWM、GPIO以及ADC,对于物联网的应用而言是一款非常合适的模块。
图3 ESP8266WiFi模块电路
由于采用STC12C5A60S2单片机为主控制器,ESP8266模块是作为从机使用的,其作用是接收手机端的控制指令并转发给单片机,该模块的硬件电路如图3所示。EN是芯片工作使能端,芯片正常工作时该引脚应由外加电源置高电平。TXD0和RXD0两个引脚与单片机的TxD和RxD引脚交叉相连,实现正确的UART通信。RST(GPIO16)引脚是外部复位引脚,正常工作时应置高电平。GPIO0用于工作模式的选择,当按钮S3按下GPIO0被置为低电平,此工作模式用于UART下载程序;S3未按下时GPIO0为高电平。默认情况下,在模块初始化时GPIO0和GPIO2两个引脚为高电平,使芯片处于正常工作模式。
LED灯的控制方式有:开关控制、延时关断控制和调光控制,虽然控制方式不同但驱动电路是一样的,只是控制方式有所不同。这里采用XL4005芯片设计了降压型LED驱动电路。XL4005芯片是一款大功率的LED驱动芯片,其输入电压范围5~32 V,输出电压范围0.8~30 V,采用300 kHz固定频率工作。如图4所示为调光LED驱动电路,输入为交流220 V,经AC/DC转换后得到24 V直流电压作为XL4005的输入电源。SW为芯片驱动输出引脚,输出电压12 V,最大驱动电流为4 A。FB为反馈引脚,该引脚采样得到的反馈电压与芯片内部的0.8 V基准电压比较后通过改变PWM波形占空比从而得到稳定的输出电压。输出电压由公式(1)确定。
(1)
式中,Vfb取0.8 V,R8取2 kΩ,R9取28 kΩ,此时输出电压Vout为12 V。
EN为芯片的使能端,高电平工作。需要进行调光控制时,该引脚与单片机P1.3或P1.4相连,利用单片机输出的PWM波控制EN引脚,改变PWM的占空比即可实现LED的亮度调节。对于不需要调光的LED灯来说,只需要将XL4005的使能端改为由单片机IO口控制其通断即可,比如单片机的P0.5输出接XL4005的EN使能端。STC12C5A60S2的IO口能够满足普通住开关式控制的实际需要。
图4 LED驱动电路
系统电源主要有给各类芯片供电的直流24 V、5 V和3.3 V。24 V直流电源为LED驱动芯片XL4005的输入电源,采用MAY50-220S24N的AC/DC模块实现,该模块输入交流220 V,输出直流24 V,输出额定功率为48 W。5 V直流电源采用LM7805三端稳压芯片得到,作为STC12C5A60S2单片机和LM358运放的输入电源。3.3 V直流电源是ESP8266模块的输入电源,采用低噪声的LDO稳压芯片SPX3819M5得到。
如图5所示为ESP8266模块的供电电路,SPX3819M5芯片采用5个引脚的SOT-23封装,其EN使能端电压大于2 V时芯片正常工作,因此将EN与输入端Vin短接后接5 V输入电源。ADJ/BYP是调整/反馈复用引脚,这里不使用调整输出功能,因此BYP引脚串接1个10nF的电容后接地以减少输出噪声。
图5 ESP8266模块供电电路
整个智能照明控制系统的软件主要包括单片机的主控程序、ESP8266模块的通信配置程序以及手机移动端App程序三个部分。
单片机上电后系统进行初始化,然后调用串口中断服务函数等待触发中断。串口中断由ESP8266模块发出,中断触发后单片机提取控制信息。开关方式控制的LED灯根据相应的控制信号改变LED灯的开关状态。而其他方式控制的照明灯需要综合其他检测信号实现控制。调光LED灯打开后根据室内光敏电阻的检测信号进行调光,采用定时中断方式采集光敏信号并对采集信号进行了平均值处理,这样有效避免了因环境明暗变化较大造成LED灯忽亮忽暗。楼道LED灯是否开启取决于控制信号和红外检测信号,两个信号同时满足则LED灯亮,30秒以后自动关闭。如图6所示为单片机主程序流程图。
图6 单片机主程序流程图
ESP8266模块内置32位MCU,因此上电时该Wi-Fi模块也有初始化,初始化主要包括设置ESP8266模块的工作模式、建立Wi-Fi热点以及配置UDP通信方式这几个步骤。ESP8266的通信配置程序在专用的开放环境(SDK)中编写,编写好的程序通过该模块自带串口下载至模块。
ESP8266模块的工作模式的设置及Wi-Fi热点的建立步骤如下。首先通过调用wifi_set_opmode(uint8 opmode)函数来设置模块的工作模式,将opmode参数设置为0X02使ESP8266模块工作于SOFTAP_MODE, 即AP服务器模式。AP服务器的作用是建立Wi-Fi热点,为此需要设置Wi-Fi热点的服务集标识(SSID)及其密码,通过调用softap_config结构体完成参数设置,其中os_memcpy(config.ssid, "WiFi_AP", 7)语句设置了Wi-Fi热点的SSID,os_memcpy(config.password, "12345678", 8)设定热点的连接密码。另外在该结构体内还指定了无线安全类型及接入点的数量,无线安全类型需要给config.authmode赋值,默认情况下赋值为“AUTH_WPA_WPA2_PSK”;接入点数量需要给config.max_connection赋值,该值根据实际情况设置。
Wi-Fi热点建立后需对数据报协议(UDP)通信协议进行配置。UDP是OSI参考模型中一种无连接的传输层协议,提供面向事务的信息传送服务。实现UDP通信的配置流程如下:①调用wifi_set_broadcast_if(SOFTAP_MODE)函数设置UDP广播采用soft-AP模式发送数据。②设置建立的数据连接为UDP类型,通过将PhoneConn.type 赋值为ESPCONN_UDP来实现。③设置本地及远程端口为5555,本地端口通过语句PhoneConn.proto.udp->local_port = 5555设置;远程端口通过PhoneConn.proto.udp->remote_port = 5555设置。④注册UDP数据包的接收回调与发送回调函数。调用函数espconn_regist_recvcb(&PhoneConn, udpclient_recv)注册接收回调,;调用函数espconn_regist_sentcb(&user_udp_espconn,user_udp_sent_cb)注册发送回调。 ⑤调用 espconn_create(&PhoneConn)函数建立UDP通信。⑥调用发送回调或者接受回调函数来发送/接受数据。接收回调函数用于接收手机App的LED控制信号;发送回调函数将LED灯的实际开关状态发送给手机App,使手机上灯标点亮与否与LED灯的实际状态一致。
在ESP8266模块的初始化和单片机初始化完成以后,整个系统的初始化工作完成,手机会自动连接到该模块建立的AP服务器。如图7所示为ESP8266模块程序接收回调控制程序流程图,ESP8266接收回调函数通过定时扫描手机端应用程序发出控制指令接收实时控制信息,当接收到数据时通过串口中断将相应开关指令发送给单片机实现LED灯控制。ESP8266模块的发送回调控制程序与接收回调是类似的,不再赘述。
图7 ESP8266模块接收回调控制程序流程图
Android手机客户端软件基于E4A(易安卓)平台进行开发。Android手机客户端主要有登录管理功能、房间灯组照明控制功能以及全局照明控制功能,如图8所示为系统的登录界面和全局LED灯控制界面。登录管理功能可以设置用户账号及密码,保证具有权限的用户才有照明控制系统的控制权限,避免被人恶意控制,保证了系统的安全性。全局照明控制管理能够在用户出入住宅时,实现对所有灯的开关控制。房间灯组照明控制功能能够方便用户对单个房间的灯组管理。
图8 Android手机客户端软件界面
家用智能照明控制系统在上电并完成单片机和ESP8266模块的初始化后,由ESP8266建立Wi-Fi热点,接着ESP8266以当UDP通信方式获取手机移动端的MAC地址并且向手机端发送数据,数据成功发送后使用定时器继续进行数据收发。从图9中可以看到Android手机已经连接到名为“WiFi_AP”的无线热点。
图9 Wi-Fi网络热点
Wi-Fi网络测试正常后,打开手机客户端软件输入账号和密码登录系统,即进入控制界面实现对家中LED灯的开关操作。开关操作由一组按钮完成,LED的实际开关状态由一组灯标显示,高亮和灰暗分别表示灯的亮灭。经测试AP服务器的定时信息收发功能正常,手机客户端发出的控制信息经AP服务器转发给单片机,并最终由单片机控制LED灯的开关;而单片机将实时的LED灯开关状态通过UART-WiFi接口转换后发送给手机客户端,手机界面能正确显示室内LED的亮灭情况。另外在手机客户端发出开灯信号后调光LED的工作根据环境明暗情况进行智能调光;而过道LED灯也能够在检测到红外信号后点亮,延时后自动熄灭。
基于Wi-Fi方式组网的住宅智能照明系统与传统的照明控制相比采用了嵌入式技术和物联网技术,具有布线简单、使用方便的优势。随着智能手机的普及以及LED照明逐渐成为主流,具备手机端软件控制的智能照明系统能够满足普通家庭对智能照明控制的基本要求,代表着今后照明系统的发展方向,具备良好的应用前景。