摘要:本文以Android系统为平台,以DALI系统作为研究对象。设计了一款操作简单、功能齐全、界面友好的照明客户端软件,通过蓝牙通信,实现了对室内照明设备的控制。本文主要阐述触摸屏控制器的设计,以Android系统为软件开发平台,开发了灯光控制、场景设置、故障分析、参数配置、辅助功能五大功能模块的上位机界面应用程序以及蓝牙通信的控制终端应用程序,并完成了程序的编译和调试。该系统使用HC-05蓝牙串口通信模块,实现了手持设备与DALI总机的通信,从而实现对底层设备的控制与管理功能。
关键词:智能照明,DALI系统,Android系统,蓝牙通信
1 课题的研究意义
选择Android系统智能手机作为这个照明系统的控制终端,取决于其独特的优势。首先,Android是一款基于Linux内核的开源系统,对第三方的应用开发完全开放,开发人员具有较大的自由度。其次,Android应用程序通过应用枢架层提供的API,开发简单、周期短[1]。第三,Android具有很强的开放性和灵活性。Android的出现及其广泛应用,使得很多智能照明厂商正投入很大的人力物力进行研究开发基于Android的智能照明终端。具有蓝牙的智能手机让我们在没有宽带连接的范围时,仍然能够无线连接通信,这样方便同步传输终端的信息。可以实现对Android系统的优化和扩展,实现Android平台的本地化,特别是对蓝牙通信系统的研究与实现,及时了解到国际上最先进的智能手机系统的蓝牙通信技术,适应了当前中国智能手机市场的发展需求。
2 课题的主要内容
(1)详细介绍手机客户端软件的实现,包括各个界面的设计,SQLite数据库的存储,以及Android蓝牙通信的实现;
(2)详细介绍DALI-蓝牙网关的硬件与软件的设计与实现;
3 Android手机客户端软件的实现
3.1 客户端软件界面的总体设计
Android客户端软件控制包括启动界面,主界面菜单包括灯光控制、场景控制、故障查询、辅助功能四个一级菜单,参数设置界面包括场景参数、灯光参数、和通用设置,通用设置包括密码修改等功能。
3.2 启动界面的实现
在启动界面实现了logo和dali的图标渐变的动画效果,是通过通过设置图片的缩放变化和透明度的变化来实现动画效果[2],在logo的onAnimationEnd方法中调用daliShow.startAnimation()方法,实现了先启动log动画,后启动dali动画的效果。在启动界面最后添加Intent参数,实现Activity之间的切换,其中finish()方法是用来结束当前Activity。
3.3 主界面的实现
主界面是由三部分组成,一部分是右上方的设置按钮,点击后进入登录界面;第二部分是数字时钟;第三部分是3D滑屏功能。数字时钟使用DigitalClock组件,添加12小时制和24小时制两种工作模式,可根据手机或平板上的时间显示方式更换,并可实时更新时间,另外添加onAttachedToWindow()方法使时钟显示在界面上。3D滑屏功能使用GelleryFlow组件,通过对图片做相应的旋转和缩放,实现了视图的变换。自定义ImageAdapter,为图片制作倒影效果。并调用setOnItemSelectedListener()方法获取当前显示图片位置,并根据相应功能在上方显示不同文字。
3.4 设置界面
3.4.1 登录界面
在登录界面中密码输入部分使用按钮代表数字,当按钮按下时将相应的值传入密码。给每个空格赋值以后添加黑点,这样就会使按钮按下后显示为黑点,起到了保密的作用。默认的密码是在数据库中的用户列表(USER_INFO)中存储的,输入密码之后会调用submit()函数将每一位输入值与数据库中存储的值进行比较,如果正确则登录成功,如果错误则提示“密码输入错误!”。另外还有全部清除和逐个删除的功能,全部清除即使每一位空格都为空,并使每一位上的黑点都设为不可见;逐个删除则由最右端向左依次判断是否为空,
3.4.2 参数设置界面
登录成功后进入参数设置界面,参数设置界面包括灯光参数设置、场景参数设置和密码修改。各个图标采用九宫格的方式显示,九宫格采用GridView的布局文件。定义好GridView后,还要再定义一个相对布局,添加ImageView和TextView,在java文件中定义一个imageAdapter将图片和文字进行定义。并在右上方添加按钮,用来进行密码修改操作。
3.4.3 密码修改界面
点击参数设置界面右上角按钮进入密码修改界面,按要求依次输入旧密码、新密码、再次确认,点击确定后可修改密码,修改密码后完成了数据库的更新,在下次登录时需要输入修改的密码。
3.4.4 灯光参数设置界面
灯光参数界面以列表形式显示所有灯具的名称、图标、灯具地址、灯控类型、组控类型及亮度值,单击右上角的“添加”按钮可添加灯光信息,在此界面添加的灯光信息会传到灯光参数界面的列表中。建立一个数组,将List封装成SimpleAdapter,再将添加的信息存储到adapter中,以列表形式显示出来。调用List的onCreateContextMenu方法,在长按列表后弹出AlertDialog对话框,点击确定后删除选中的灯光信息,并在数据库中进行更新。
在添加灯光信息的界面,控制类型选择使用tabhost组件,左右两侧分别为开关控制标签和调光控制标签;在地址选择时会根据控制方式或控制类型两个方面去判断此地址是否已选择,如果地址已经被选择,则将不能再选。单控模式下,灯控地址(短地址范围0~63)最多只能选择18个;组控模式下,灯控地址可选编号为0~15,灯控地址必须唯一。添加完成后会将灯光信息存储在数据LAMP_PARA
METER_SET表中。
3.4.5 场景参数设置界面
场景参数界面,同样以列表形式显示所有场景的名称、图标、场景编号及场景类型,其程序与灯光参数设置界面相同。在添加场景信息界面,场景编号同样判断前面是否已经选择,如果已选则不能再选择,添加完成后会将场景信息存储在数据库的SCENE_PARAMETER_SET表中。
3.5 灯光控制界面
在主界面中点击灯光控制图标,进入灯光控制界面,此界面显示的信息是从数据库的LAMP_
PARAMETER_SET表中读取的,在灯光控制界面主要完成对灯具的开关控制及亮度调节。灯光图标的短按实现灯光的开关。首先获取灯光图标的位置,然后根据位置获取其图标地址及开关状态,根据开关状态更换图标(彩色为开,黑白为关)再存储到数据库中。调光灯光图标长按后弹出调光对话框,可进行亮度的调节。灯光亮度调节使用进度条seekbar来实现,进度条有微调和粗调两种调节方法,微调可以逐步调光,粗调一次可使亮度值增大或减少5个亮度值。进度条显示的数值即为当前灯光的亮度,将亮度值存储到数据库中。
3.6 场景界面的实现
场景界面与灯光界面类似,都使用了九宫格的布局方式。点击场景图标即可设置为对应的场景模式,长按图标后调用onItemLongClick方法显示出“×”号,再短按一次实现场景的删除,并在数据库中存储。点击场景界面的右上角按钮可进行场景的添加,这里的场景添加与场景参数界面中的场景添加是相同的,且最终都可在数据库中进行存储。
3.7 故障查询界面
故障查询界面用于反馈照明装置的故障信息,该信息具体包括故障灯具编号、故障状态以及故障时间等信息。故障主要包括:地址丢失、灯故障、电源故障等,故障查询操作对应的是查询状态指令,查询周期为3s。并且当检测到故障时,会在下拉通知栏显示故障,并在APP的UI图标上显示故障个数,。每页最多显示20个故障信息,当显示超过一页,可以用滚动条的方式查看。
3.8 辅助功能界面
在辅助功能界面中,我们添加了节假日模式设置,将时间分为三种模式:节日模式、周末模式和工作模式。节假日类型及日期以列表的形式显示,点击右上方“+”按钮,弹出节假日添加对话框,可以进行日期和节假日的类型的选择,选择完成后,点击“保存”按钮可将日期保存在数据库中。添加完成后,会以列表形式显示,点击“设置”按钮,即设置成相应的模式。
3.9 SQlite数据库
本文的数据主要存储在四个表中,其中USER_INFO表存储用户信息,包括用户的ID及密码;LAMP_PARAMETER_SET表用于存储灯光信息,包括灯光的ID、灯控类型、灯具类型、灯具地址、灯具名称、灯光图标、开关状态、调光亮度值;SCENE_PARAMETER_SET表用于存储场景信息,包括场景ID、场景编号、场景名称、场景图标、场景类型;MALFUNCTION_DATA表用于存储故障信息,包括故障ID、故障编号、故障时间、故障类型。
3.10 Android蓝牙通信的实现
本系统是通过利用Android平台提供的蓝牙API来实现蓝牙设备之间的通信[3]。蓝牙进行通信时,首先要对Bluetooth进行配对,只有配对成功时,蓝牙设备之间的通信才能够进行,而且蓝牙通信之间的相互传输是在唯一地址MAC前提下的。在Bluetooth配对取得成功后,开始进入到连接的阶段,双方连接上以后,为了更好的传输数据需要共享一个RFCOM通道。蓝牙通信过程主要包括三个步骤:查询蓝牙、查找设备、连接蓝牙。
3.11 通信协议
本系统采用蓝牙通信方式,采用DALI的指令格式。DALI指令分为前向帧和后向帧,前向帧是主机发送给从机的指令,后向帧是从机的回复指令,只有在查询时,才能收到从机的后向帧回复。前向帧主要包括地址字节和数据字节,地址字节包括单控地址、组控地址等,数据字节为对应的指令编号。后向帧主要包括一个字节,为查询指令的回复信息。
4 DALI-蓝牙网关的设计及实现
4.1 硬件设计
蓝牙转DALI网关硬件电路包括四个部分:蓝牙通信电路、MCU及其外围电路、电源电路及DALI接口电路。HC05蓝牙串口模块通过UART接口与STM8S105K4连接,再通过DALI接口连接到DALI总线上,完成平板与DALI总线的通信。
4.2 软件设计
蓝牙模块接收DALI命令后,对其进行解析,然后根据解析的命令完成相应的指令。其中系统初始化包括定时器初始化、串口初始化、DALI接口初始化、HC05蓝牙串口模块初始化。主要完成了蓝牙接收、命令解析、指令转发等功能。平板发送的指令主要包括控制指令与查询指令,在HCO5蓝牙模块接收到数据后先进行判断是控制指令还是查询指令,如果是控制指令则直接转发,如果是查询指令则需要转发并等待系统回复,再将回复的命令由蓝牙发送到平板。
5 小结
本文设计了基于Android操作系统的手机客户端软件,选择蓝牙方式进行通信,并对Android客户端的各个界面的设计及实现进行详细介绍,实现了系统的灯光控制模块、场景设置模块、故障查询模块、辅助功能模块以及参数设置模块,对其中的数据存储进行了阐述。实现了系统中的蓝牙通信,利用DALI协议实现数据的传输及对系统的控制及管理,并结合DALI-蓝牙网关完成了平板对底层系统的控制。
参考文献
[1]张庆,李凌字,许锦标.基于DALI协议的智能照明网络系统设计[J].现代建筑电气,2010,01(9):22.24.
[2]李刚.疯狂Android讲义(第二版)[M].北京:电子工业出版社,2014.
[3]杨长龙.基于蓝牙技术的智能家居控制器的研究与设计[D].北京:北方工业大学,2013:35-40.