何永玲++吴耀龙
摘 要:为解决现有系统无法远程控制和根据现场情况自动调节灯光亮度等问题,文中设计了一个单片机控制系统、Web服务器、Android客户端三位一体的智能照明控制系统。系统以STM32F103单片机为核心,利用Android手机和Web服务器进行远程控制,可随时随地通过手机App对室内或楼宇的灯光进行远程操控,实现定时开关灯、无极调光、红外感应控制、智能节能调光、多节点自由控制等功能,非常适合移动终端的远程控制和自动调节灯光的场合。
关键词:智能照明;WiFi;Android;STM32;Web服务器
中图分类号:TP393;TN926 文献标识码:A 文章编号:2095-1302(2016)12-0-03
0 引 言
独立的照明控制已经发展成熟,但很多时候使用者无法准确根据情况设置控制参数。如果照明系统的使用环境情况多变,仅仅靠非专业的使用者来调节控制,则无法达到最佳的使用效果。而且任何控制都要在现场进行,非常不方便。在物联网环境下,使用者可以利用远程移动和通信设备通过互联网对室内照明设施进行监控和控制,通过传感器及微处理控制系统,使物联网的照明系统能够“感知”环境,并根据外界情况的变化做出相应调整,为用户提供方便高效的服务。
本文以设计智能照明系统为目标,结合时下最流行的物联网开发思路,将灯光的操控不局限于本地,设计了一个单片机控制系统、Web服务器、Android客户端三位一体的智能照明控制系统。采用C语言和Java语言分别编写单片机应用程序、App程序和服务器端程序,通过安卓移动设备达到远程控制室内LED灯的开关、亮度以及智能调光等目的。
1 系统设计
1.1 系统架构设计
该系统是一个可远程遥控室内灯光智能动作的控制系统,主要包含了控制系统和通信系统两大部分。通信系统采用WiFi模块与服务器建立TCP链接后,通过HTTP协议来完成单片机和服务器的信息交互。安卓客户端也通过HTTP协议和服务器进行信息交互,通过服务器将安卓客户端的请求间接转向单片机,单片机再将获得的数据解析后生成相应的指令进行动作。
路由器建立一个WiFi热点,单片机端的WiFi模块以STATION模式接入该热点,Tomcat服务器搭在本机电脑也接入该热点。为了保证通信安全,网络采用WPA2加密方式。当路由器通过家庭宽带连接上Internet,并在云端发布服务器程序后,手机客户端可以直接通过本机的GPRS网络访问单片机客户端,不需要连接局域网的WiFi热点。本系统的设计总架构图如图1所示。
图 1 室内LED智能照明系统总体架构图
1.2 系统总体设计
系统以ARM单片机STM32F103ZET6作为本系统的主控芯片,单片机通过串口WiFi接收到了服务器的响应信息后,通过内置DMA转存到内存当中,CPU再将内存中的数据取出并解析为对应的控制指令和数据信息,将手机传递过来的数据和单片机读取到的本地实时时间数据都显示到OLED屏上,单片机通过判断动作指令来决定是否开灯关灯以及调光。当检测到有开启智能模式的指令后,则启动光照传感器,读取当前的照度信息,根据照度信息控制PWM调光驱动输出当前所需要的室内灯光亮度。红外检测电路则通过一个S8050三极管构成放大电路将红外模块的输出信号进行放大后输出到继电器模块,通过继电器模块的吸合与断开来控制当前灯光的亮灭。本系统由STM32单片机模块、DS1302实时时钟模块、OLED12864液晶显示模块、BH1750FVI数字光照传感器模块、HC-SR501人体红外模块、PWM调光驱动模块和ESP8266WIFI模块组成。系统总设计框图如图2所示。
2 系统软件设计
本系统软件方面的设计主要为单片机主控端的程序设计、服务器端的程序设计和Android手机应用程序设计。为了使单片机、服务器、Android客户端的数据通信一致,采用自定义通信的协议,该数据帧一共由14位数字字符组成,其通信格式如图3所示。
(1)bit0/bit2:灯1/2的开或关,‘0代表关,‘1代表开;
(2)bit1/bit3:灯1/2的调光值,范围为‘0‘9,对应单片机的PWM值为该数值×比例系数;
(3)bit4-bit7/bit8-bit11:表示灯光开启/关闭的时间(小时:分钟);
(4)bit12/bit13:表示智能模式/定时模式的开或关,‘0代表关,‘1代表开。
2.1 单片机程序设计
单片机先初始化各模块,然后以500 ms间隔发送HTTP请求,将服务器响应的数据经WiFi串口接收,再通过DMA转存到内存中。单片机通过读取对应位置的内存数据即可解析到相应模块的控制指令,进入不同的设置状态。单片机主程序流程如图4所示。
2.2 服务器程序设计
本设计的服务器程序中主要包括了两个Servlet,分别为ControlServlet和ProviderServlet。ControlServlet服务程序用来接收Android客户端的HTTP请求,ProviderServlet服务程序用来接收单片机的HTTP请求。服务器响应过程图如图5所示。首先当单片机和Android客户端与服务器建立TCP连接后,会发送HTTP请求到服务器,二者请求的URL地址以及参数都不一样。服务器一直处于等待状态,当ControlServlet接收到来自Android客户端的GET请求后,服务器会通过ControlServlet来读取GET参数,然后将参数存放到ServletContext域中,当单片机同样发出GET请求到ProviderServlet后,服务器则会将ServletContext域中的数据作为响应参数发回给单片机。
2.3 Android程序设计
本文设计的Android客户端主要采用Activity组件。通过自定义协议将用户设置的参数信息封装成字符串数据,最终将其拼接在URL地址后,形式如:192.168.1.100:8080/demo/Control Provider?controlMessage=“11111111111111”,具体程序流程如图6所示。
启动了App后,会进入动画界面,同时会对用户的控制界面进行布局加载,加载完成后就会出现各种控件,并且为控件都设置了监听事件,当用户点击了相应的控件后,便会触发一次事件,在该事件中,将会完成对控制指令的封装,封装完成后作为URL参数以GET的方式发送HTTP请求给服务器。
3 系统测试
根据App的设置,可以在OLED屏幕上同步看到设置的信息数据,说明安卓App已经成功控制了照明系统。这里设置了开启的时间为15:37,关闭的时间为16:22,等待观察,系统确实在设定时间将LED灯开启与关闭,其实物图与界面图如图7所示。开启智能模式后,模型里LED的灯光亮度会随着当前室外的灯光变化而变化,当室外灯光较亮时,室内灯光的亮度则会阶梯降低,节约电能,其实物演示图如图8所示。
4 结 语
本文完成了一个可远程遥控室内灯光智能动作的控制系统,包括完整的硬件和软件系统。硬件系统是基于一个一房一厅的灯光控制模型,有两套单片机客户控制终端;软件系统则实现了各类数据通信和控制功能,主要包括:
(1)单片机主控端的控制软件;
(2)服务器端的控制软件;
(3)Android手机应用软件等。
通过实物演示和检测,该作品完成了初设的各项功能指标,使用方便,为生活提供了便利,改善了环境质量,有待进一步研发和推广。
参考文献
[1]云飞扬.物联网思维下的智能照明[J].世界照明时报,2015,12.
[2]刘火良,杨森.STM32库开发实战指南[M].北京:机械工业出版社,2013.
[3]朱顺兰,王雪萍.光照强度传感器及其变送电路设计与实现[J].中国电子商务,2009(12):93.
[4]黄明强.DS1302在单片机系统中的应用[J].保定学院学报,2004,17(2):30-33.
[5]徐利谋,黄长远.基于GPRS和ZigBee的城市路灯监控系统研究与实现[J].物联网技术,2016,6(6):34-35.
[6]任黎明,孙玲玲.基于Linux的无线视频监控系统[J].物联网技术,2015,5(2):24-25.
[7]刘世伟,邱玉泉,韩均雷.基于STM32微控制器的无线智能家居监控系统[J].物联网技术,2016,6(3):15-16.
[8]汪月鹏.基于Android平台上BLE的智能家居控制系统设计与实现[J].物联网技术,2016,6(3):81-82.