基于Android的LED智能照明系统客户端的设计与实现
2016-11-08胡艳蕊宋开新秦会斌张明准
胡艳蕊 宋开新 秦会斌 张明准
(杭州电子科技大学电子信息学院 浙江 杭州 310018)
基于Android的LED智能照明系统客户端的设计与实现
胡艳蕊宋开新秦会斌张明准
(杭州电子科技大学电子信息学院浙江 杭州 310018)
为了摆脱用传统机械式开关控制家居照明的方式,充分利用智能手机等移动设备资源,提出基于Android的LED智能照明系统,设计开发基于Android的LED智能照明系统客户端。利用WiFi控制家居照明设备,不仅可以控制单个灯和各组灯的开关、定时、调光和调色,而且可以根据对不同环境的需求在情景模式中选择和编辑不同的灯光效果,还可以通过扫码动态添加新灯等。并且在智能光控模块中调用了中国天气网API接口和手机自带的光线传感器来自动调节灯光的颜色和亮度,该客户端还增加了广告功能。把该客户端系统和灯具模块放在无线网络环境中进行测试,验证了该LED智能照明系统客户端的可行性和实用性。
Android智能照明WiFi扫码天气信息光线强度
0 引 言
20世纪90年代初,随着计算机技术和网络技术的飞速发展,办公自动化、楼宇自动化和家庭自动化的出现,人们对照明控制提出了更高的要求,从而产生了智能照明控制方式[1]。照明智能控制是绿色照明的基石,是现代照明不可缺少的核心技术之一。今后的室内照明不仅仅是为了人们活动的需要,还应具有对照明控制的自动化、智能化的功能。文献[2,3]设计的基于Android的室内智能照明系统不能满足调色的需求。文献[4,5]设计的智能照明系统在设计调色以及颜色渐变功能时存在不足,比如渐变的颜色不能按照用户的意愿进行编辑等。为了弥补这些不足,本文设计了基于Android的LED智能照明系统客户端。安装有该客户端的智能手机或便携终端可以控制LED灯的开关、调光以及调色,还可以实现查询灯的状态、动态添加新灯、删除旧灯、分组控制、定时开关灯以及根据不同环境的需求在情景模式中选择和编辑不同的灯光效果;并且在动态添加新灯时不仅可以手动添加,还可以通过扫码添加。该客户端添加了广告的功能,还调用了天气信息和手机的光线传感器,可以实现在没有人控制的情况下根据天气情况和光线的强弱自动调节灯光的颜色和亮度的功能,从而实现对照明设备的人性化、自动化控制。
1 系统总体结构设计
通过对智能照明系统的具体需求分析,本文研究并设计了一个通过Android移动设备控制室内智能照明的新型系统。该系统的总体结构如图1(a)所示,其中灯模块的框图如图1(b)所示。
图1 基于Android的LED智能照明系统
该系统中控制中心模块是指安装有客户端系统的智能手机或平板电脑,用户通过这些智能设备对整个家庭中的照明设备进行控制。它是整个智能照明系统的总控制器,存放着对照明设备的增加、删除、修改信息、更改设备所在的房间以及开、关调光等控制命令。WiFi模块(AP)自组的WiFi无线网络,主要是将智能移动设备和每个灯模块连接在同一个局域网内。当用户将Android手机加入室内WiFi网络并进行实际控制后,操作控制指令通过AP转发广播给各个灯模块,该灯模块集成了开关电源模块、WiFi模块和单片机控制等模块。客户端发来的指令最终传送到单片机,单片机执行相关操作,其中Buck1、Buck2和Buck3这三个拓扑电路的作用是把直流电压转换成恒定的电流。然后单片机通过这三个拓扑电路来控制输入到R-LED、G-LED、B-LED的电流,从而实现灯的调光调色功能。最后单片机再把灯的状态信息返回到手机,从而实现平板电脑或智能手机对LED照明设备的智能控制。用户可以对每一个单灯进行操控,也可以实现对一个房间多个灯的同步操控,还可以对室内所有灯进行整体的控制,从而实现室内的智能照明。
2 客户端的设计与实现
2.1Android平台及其架构
随着现在智能手机操作系统各种功能的不断完善,它以操作便捷以及实用美观等优点,受到广大用户的青睐[6,7]。Android系统的开放性,吸引了更多的开发者,使第三方开发商能够在十分自由及宽泛的环境下进行开发。由于这些优点,Android已经成为最受欢迎的智能手机平台。该平台由4部分组成,分别为操作系统、中间件、用户界面及应用软件[8],其由Google主导研发,天气预报、GoogleTalk、谷歌地图等一应俱全,相比于其他移动设备使用的操作系统,优势也相当明显。
Android的架构自上而下分为以下几个层次[9]:
1) 应用程序层:Android会装配一个核心应用集合,包括短信、日历、地图等,所有应用程序都是用Java语言编写的。
2) 应用程序框架层:通过提供开放的开发平台,Android使开发者能够开发极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势,访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等。
3) 库:Android包含一个C/C++库的集合,来提供给Android系统多种组件使用。这些功能通过Android的应用程序框架来提供给开发者。
4)Android运行时库:Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可能的功能。
5)Linux内核:Android基于Linux2.6提供核心系统服务,例如安全、内存管理、进程管理、网络堆栈、驱动模型。LinuxKernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
做应用开发关注最多的就是应用层,Android为开发者提供了大量的功能以供使用。并且Android的架构清晰工整,分层明确,这也是Android在众多的手机系统中脱颖而出的原因之一。
2.2客户端要实现的主要功能
1) 用户在通过手机验证或邮箱注册并登录系统后,为了方便下次登录,可以选择记住密码,下次登录时无需输入就可以直接登录。该系统还提供了找回密码的功能。
2) 本客户端系统可以对室内的每一盏LED灯正常地开、关以及对灯光进行调光和调色。操作后的灯状态能够及时反馈回手机控制终端,并能同步显示在界面上。
3) 用户可以根据作息时间进行定时开关灯,例如当设置起床时间时可以先在场景模式中选择渐亮模式,然后再设置起床开灯的时间。这样当用户要起床时,灯光就会慢慢变亮,为用户提供了更舒适、更人性化的灯光环境。
4) 本客户端系统既能完成单个LED灯的操作,也能完成不同房间内一组灯或者是所有LED灯的同步操作。
5) 每一盏灯都有对应的基本信息,包括它们的ID、名称、所在的房间ID、房间名称以及灯的状态等。用户可以查询每盏灯的信息,当需要修改时也可以随时进行修改。
6) 用户可以根据房间布局或具体实际需要,进行添加新灯、删除旧灯、添加房间、删除房间等操作,达到动态控制室内灯具的目的。在添加新灯时还可以通过扫描灯具上的二维码或条形码来添加。
7) 本客户端系统可以方便地修改室内无线网络WiFi的热点名称和对应的密码。
8) 本客户端系统可以实时保存、更新灯信息以及房间信息等数据。
9) 本客户端系统不但可以让用户任意选择喜欢的颜色,还可以根据对环境的需求在场景模式中选择和编辑不同的灯光效果。
10) 本客户端系统在登录界面和单灯界面加载了动态的迷你广告条,可以通过这种方式来降低开发成本,从而降低灯具的价格,方便推广。
11) 本客户端系统不但调用了天气预报的信息,还调用了手机的光线传感器。可以根据天气状况和光线强度来自动调节室内灯光的颜色和亮度,使其随着不同的天气和光线强度而变化。
2.3客户端架构图
跟据具体的需求分析,本系统的手机客户端主要实现对照明设备LED灯的智能控制。按其功能主要分成四大功能模块,每个大模块中又分为很多小的模块,如图2所示。
图2 Android客户端架构图
2.4客户端的实现
本客户端系统包括很多个模块,下面对其中几个模块的具体实现做详细的介绍。
2.4.1单灯控制模块的实现
该客户端系统的第一个界面是欢迎界面,在欢迎界面停留2秒后自动进入登录界面。当用户成功登录智能照明客户端系统后,就会进入一个TableList选项卡界面,选项卡中包括单灯、房间灯、所有灯、系统管理选项,该选项卡默认界面为单灯控制界面,此界面中植入了广告。在单灯控制界面中,用户可以根据自己室内灯的情况来动态添加新灯,添加灯后点击灯图片按钮时就会弹出一个灯操作的对话框,选择该对话框中的“灯控制”选项后就跳转到灯控制界面,用户可以选择开灯、关灯、调光功能。当点击此界面中的开灯按钮时,如果客户端收到服务端返回来的确认接受信息,则会点亮界面中的灯图片,否则图片还是暗的。点亮灯后可以通过调节进度条进行调光,此时如果再查询灯的信息,灯信息已经更新为现在的状态。实现单灯控制模块的流程和界面分别如图3中(a)、(b)所示。
图3 单灯控制模块
2.4.2场景模式模块的实现
场景模式界面中有预定义的九种场景模式,包括温馨模式、柔和模式、明亮模式、典雅模式、清凉模式、渐亮模式、渐暗模式、慢变模式和快变模。其中前五种模式都可以改变颜色,而渐亮模式、渐暗模式、慢变模式和快变模式不但能改变颜色,还可以改变变化的间隔时间。例如当点击快变模式的灯图片按钮时会弹出一个对话框,对话框包括打开、暂停和编辑三个选项列表。选择编辑列表时就会跳转到渐变效果设置界面,在此界面中不但可以对渐变过程中的每个颜色进行设置,而且还可以对每两个渐变颜色的间隔时间进行设置。当点击要设置的颜色按钮时,界面会跳转到颜色选择界面。进入颜色选择界面后,用户可以根据环境的需求和自己的喜好来选择任意的颜色。当点击色环上的某一钟颜色时,中间的小圆和色度条中间的颜色就会变成该颜色。用户还可以在色度条上进行更精细的颜色选择,这时中间小圆的颜色也会跟着变;再通过点击中间小圆来确定所选的颜色。实现场景模式模块的流程和界面分别如图4(a)、(b)所示。
图4 场景模式模块
2.4.3扫码添加新灯模块的实现
随着微信的到来,二维码越来越火爆,到处都能看到二维码,比如商城、快递、酒店等。开源的二维码扫描库主要有ZXing和ZBar,ZBar在iPos平台上应用比较成熟,而在Android平台上主流还是用ZXing库,因此该系统的二维码扫描功能使用的是Google的开源框架ZXing。当用户点击系统管理界面中的添加新灯选项后,就会跳转到添加新灯界面。用户既可以在此界面中手动添加,也可以通过点击扫码添加按钮跳转到扫码界面进行扫码添加。扫码添加的部分核心代码如下:
inactivityTimer.onActivity();
playBeepSoundAndVibrate();
StringresultString=result.getText();
if(resultString.equals(″″)) {
Toast.makeText(MipcaActivityCapture.this, ″Scanfailed!″,Toast.LENGTH_SHORT).show();
}else{
IntentresultIntent=newIntent();
Bundlebundle=newBundle();
bundle.putString(″result″,resultString);
bundle.putParcelable(″bitmap″,barcode);
resultIntent.putExtras(bundle);
this.setResult(RESULT_OK,resultIntent);
}
MipcaActivityCapture.this.finish();
扫码添加新灯模块的流程如图5所示。
图5 扫码添加新灯模块流程图
2.4.4智能光控模块的实现
当用户点击系统管理界面中的智能光控选项后,就会跳转到智能光控界面。此界面调用了中国天气网api接口和手机自带的光线传感器,通过中国天气网api接口获取天气信息,再根据获取的天气情况来自动调节灯光到相应的颜色。利用手机自带的光线传感器来监测光的强度,如果光强发生了改变,根据光强改变幅度和趋势的算法来自动调节灯光的亮度。智能光控界面中显示了三天的天气信息:天气状况、温度、风力;还显示了当前城市、当天的日期、穿衣指数、当前的光线强度等。由于光线传感器是比较耗电的,所以界面中有个控制光线传感器的开关按钮,在手机电量不足和非必要的情况下可以把它关闭。智能光控界面的背景是动态的天气背景,背景会根据天气状况自动更换。为了在不同的背景下都能让界面显示的字体清晰可见,字体的颜色也会随着背景的亮暗改变。查询天气信息的部分核心代码如下:
WeatherForm[]WF=newWeatherForm[3];
WeatherQueryManageWQM=newWeatherQueryManageImpl();
//查询天气,返回3天的天气信息
WF=WQM.weatherquery(CityId);
message_list.clear();
if(WF.length>=1){
message_map=newHashMap
message_map.put(″name″,WF[0].getName()+″:″);
message_map.put(″message″,
WF[0].getDdate()+″-″+WF[0].getWeek());
message_list.add(message_map);
Stringstrn=WF[0].getPicture()……
message_map=newHashMap
message_map.put(″name″, ″天气状况:″);
message_map.put(″message″,WF[i].getWeather());
message_list.add(message_map);
message_map=newHashMap
message_map.put(″name″, ″温度:″);
message_map.put(″message″,WF[i].getTemp());
message_list.add(message_map)……
智能光控模块的流程如图6所示。
图6 智能光控模块流程图
3 无线网络通信的设计与实现
本系统中手持Android终端与无线灯控模块之间的通信网络是由无线WiFi模块自组网构成的。其中无线接入点AP组建网络,手持终端与无线灯控模块通过连接此接入点加入该网络,进行数据的通信。为了实现具体的数据传输,本系统采用Socket通信[10],它是基于TCP/IP协议的网络通信协议。根据不同的底层协议,有很多不同的Socket,在Java环境中主要是指TCP/IP协议网络编程。基于TCP/IP的Socket类型主要有流套接字与数据报套接字。
1) 流套接字将TCP作为其端对端协议,仅支持一对一连接,提供了可靠的字节流服务,用于传输大量数据。在通信之前需要与接收方建立连接,然后才能发送数据,保证成功率,但是速度比较慢。
2) 数据报套接字用UDP协议,提供一个“尽力而为”的数据报服务,面向无连接的数据传输,用于传输少量数据。首先将数据打包成数据报,然后直接将该数据报发送到对应的IP地址。因为不用建立连接,减少了时间开销,所以其速度较快。UDP协议不仅支持数据的单播,而且支持数据一对多的群发功能:广播和组播。
因此,为了满足用户可以一对一控制与一对多同步控制,既能实现对单个LED灯的控制,也能实现对某个房间或是室内全体LED灯的广播控制,本文采用UDP协议作为网络传输通信协议,避免了用户繁琐的操作。
Java中实现UDP时主要用到DatagramPacket类与DatagramSocket类。这两个类都在java.net包中,可以方便地控制数据报包。前者包含需要发送的具体数据信息,后者用来收发该数据。服务器端程序先等待接收客户端发送来的数据报包,后发送相应信息的数据报包;而客户端先将自己的数据报包发送出去,接下来等待接收服务器端相应的数据报包。
在智能光控模块中天气状况变化时发送的数据格式如表1所示。
表1 天气状况变化时的数据格式
当光线强度变化,并且光线强度变化的幅度超出了设定的值时,则根据光强对应的百分比,乘以此时天气状况对应的RGB值,然后再按表1的数据格式发送就达到了自动调光的目的。
4 性能测试
把该客户端系统安装到Android智能手机上,使手机和灯模块连接到同一个无线网络后进行功能的测试。测试时为了增加灯的亮度,灯模块中的灯是由16个R-LED芯片、16个G-LED芯片和16个B-LED芯片组成的一个大灯。本实例使用安装有Android4.2.2版本的手机,在WiFi网络下进行。打开程序输入用户名和密码,登录进去后先对单个灯的各个功能进行验证,然后再对每个房间和整体灯进行操作,最后对系统管理界面的每个选项列表分别实现。经过反复测试,该系统可以很好地完成每项功能。对房间ID为01、灯ID为01的单个灯进行黑盒测试的结果如表2所示。对智能光控模块进行测试时,晴天和阵雨天气情况下的智能光控界面如图7所示,对扫码添加新灯模块进行测试的结果如图8所示,单灯控制界面和控制后的灯模块如图9所示,对灯进行调光调色后网络调试助手接收到的数据如图10所示。
表2 智能光控模块性能测试表
图7 智能光控界面
图8 扫码添加新灯模块界面
图9 整个系统测试结果
图10 灯调光、调色后网络调试助手接收到的数据
该客户端的登录界面和单灯界面都植入了广告,是以广告条的形式添加的,通过滚动条不断更新广告的内容。单灯界面中的广告如图8中单灯界面的底部所示。
5 结 语
本文设计了基于Android平台的智能照明客户端系统。将设计的应用程序安装,输入正确的用户名和密码后,经过反复的测试,该客户端可以实现对智能灯的管理和控制,并能掌握灯的状态,最终实现了一个稳定的智能照明客户端系统,完成了预期的全部功能。LED智能照明系统可以充分发挥LED数字化照明的优势,对推动LED进入家居市场有着很重要的作用,具有一定的应用前景。
为了提高产品的竞争力,系统仍需完善,在后续的工作中将继续对该系统在以下两个方面进行研究:
第一,除了能在局域网内实现智能控制LED灯外,还可以通过外网进行控制,即实现用户随时随地对LED灯的控制。
第二,手机的界面显示还应进行更人性化的设计。
[1] 段晨旭,王公仆,谢秀颖.浅析智能照明技术[J].现代建筑电气,2013(S1):244-249.
[2] 王永慧,楼平,罗友,等.基于Android的室内智能照明系统设计[J].硅谷,2013(18):21-23.
[3] 卢林杰.基于Android的室内照明控制系统设计与实现[D].杭州:杭州电子科技大学,2013.
[4] 王晓东.基于ZigBee的LED智慧照明控制系统[J].热点追踪·日用电器,2014(3):3-8.
[5] 赵鹏飞,刘隽,王业矗,等.基于Android的无线控制LED照明系统的设计与实现[J].电子制作,2014(18):29-30.
[6]GavalasD,EconomouD.Developmentplatformsformobileapplications:statusandtrends[J].IEEESoftware,2011,28(1):77-86.
[7] 郭健傧,蔡雪松.基于Android平台的公交信息发布终端软件的设计与实现[J].计算机应用与软件,2014,31(9):322-324,333.
[8] 董立岩,隋鹏,辛晓华,等.基于Android的智能家居终端控制系统[J].吉林大学学报:信息科学版,2014,32(3):303-307.
[9] 周秋月,胥布工,郭国坤.基于Android的摩托车监测客户端设计与实现[J].计算机应用与软件,2013,30(5):115-117,144.
[10] 马晓飞,袁永明,张红燕,等.基于Android的水产物联服务系统设计与开发[J].电子技术应用,2014,40(1):137-140.
DESIGNINGCLIENTOFANDROID-BASEDLEDINTELLIGENTLIGHTINGSYSTEMANDITSIMPLEMENTATION
HuYanruiSongKaixinQinHuibinZhangMingzhun
(SchoolofElectronicsInformation,HangzhouDianziUniversity,Hangzhou310018,Zhejiang,China)
Togetridofthewayofcontrollinghomelightingwithtraditionalmechanicalswitchesandtomakefulluseoftheadvantagesofsmartphonesandothermobileequipmentresources,weproposedtheAndroid-basedLEDintelligentlightingsystems,anddesignedanddevelopedtheAndroid-basedclientofLEDintelligentlightingsystem.WeusedWiFitocontrolhomelightingequipment,itcannotonlycontroltheonandoff,timing,dimmingandcolouringofindividuallightandlightsgroup,butcanalsoselectandeditdifferentlightingeffectsinscenepatternsaccordingtotheneedsofdifferentenvironments,aswellascandynamicallyaddnewlightsthroughcodescanning.Moreover,inintelligentlightcontrolmodulewecalledtheChinaWeatherNetworkAPIinterfaceandthephonebuilt-inlightsensortoautomaticallycontrolthecolourandbrightnessofthelight,thefunctionadvertisinghasalsobeenaddedtotheclient.Wetestedtheclientsystemandthelightingmoduleinawirelessnetworkenvironment,thefeasibilityandpracticalityoftheLEDintelligentlightingsystemclienthasbeenproven.
AndroidIntelligentlightingWiFiCodescanningWeatherinformationLightintensity
2015-06-22。国家自然科学基金项目(51202051)。胡艳蕊,硕士生,主研领域:Android系统及应用,智能控制。宋开新,副教授。秦会斌,教授。张明准,硕士生。
TP
ADOI:10.3969/j.issn.1000-386x.2016.10.014