任 静
(兰州石化职业技术大学,甘肃 兰州 730060)
一个物联网系统由感知层、传输层和应用层构成。 感知层实现对物理世界的智能感知识别、信息采集处理和自动控制,并通过通信模块将物理实体连接到网络层和应用层。网络层主要实现信息的传递、路由和控制,包括延伸网、接入网和核心网,网络层所需要的关键技术包括长距离有线和无线通信技术、网络技术等。 应用层可以对感知层采集的数据进行计算、处理和知识挖掘,从而实现对物理世界的实时控制、精确管理和科学决策。 本文通过一个基于ZigBee 和RS485 通信的智能家居控制系统,从硬件层搭建到应用层开发,完整呈现了一个物联网应用系统,重点阐述了应用层开发程序设计。
本智能家居控制系统需要采集房间温湿度信息、光照条件、火焰信息和厨房二氧化碳浓度。根据房间的温度和光照条件,可以自动控制空调(用风扇代替)和灯光的开启和关闭;当有火焰或二氧化碳浓度超标,报警灯会开启。 光照和火焰采用无线传感器,温湿度和二氧化碳采用有线传感器。 采用ZigBee 四输入模拟量模块来获取二氧化碳和温湿度传感器数据, 本文将ZigBee 四输入模拟量模块通过Newland 公司提供的程序烧写成四模拟量独立采集器。ZigBee 终端节点采集的传感器数据传输给ZigBee 协调器, 再通过RS232 串口将数据传输给串口服务器,串口服务器通过网络将数据传输给本地服务器,监控界面能显示采集的所有传感器的实时数据。
当温度值和光照值分别超过设定的阈值时,需要自动开关风扇和灯泡(同时也需要能手动控制)。监控软件通过RS232 转RS485 转换器将控制命令送至ADAM4150 来实现风扇和灯泡的开关控制。
在本系统的任务实现中,均采用了Newland 公司提供的硬件设备和设备驱动库文件(DLL),具体的硬件设备连接如图1 所示。
本系统传感器数据采用ZigBee 网络传输,设备控制采用RS485 网络。 ZigBee 终端节点和协调器需要烧写Newland 公司提供的传感器固件和协调器固件。 ZigBee 传输网络需要有相同的通道号(Channel)和网络ID(PAN ID),本文通过Newland公司提供的ZigBee 组网参数设置软件进行Channel 和PAN ID 等参数的设置, 完成ZigBee 网络的组建。 ZigBee 网络具体参数设置如图2 所示。
RS485 网络较简单,ADAM4150 本身是一个RS485 设备, 只需要从ADAM4150 的DATA+和DATA-接入RS485 转RS232 转换器即可。
监控软件使用Eclipse 集成开发环境,布局文件使用JavaFX Scene Builder 完成。 系统数据监控界面设计如图3 所示,可实时监控显示各传感器数据,并且可以对风扇和灯泡进行自动和手动控制。
当选择好ADAM4150 以及ZigBee 串口和波特率以后,点击开始采集按钮,即可采集数据。因为本地服务器是通过网络方式访问串口服务器,所以本文选择ADAM4150 串口和ZigBee 串口时需要用Newland 公司提供的USR-VCOM 软件来虚拟串口。当处于手动模式时,可以手动开关风扇和灯泡;当处于自动模式时,需要设置温度和光照的最大值和最小值。 由于ZigBee 网络是自组网自动进行传感器数据采集传输的,所以需要在串口添加一个监听器,完成对传感器数据的收集和处理。
建立JavaFX 工程,引入硬件驱动库文件rxtx-Parallel.dll、rxtxSerial.dll, 加载库文件RXTXcomm.jar、SerialPortLib.jar。
在本系统中, 串口服务器即是一个串口-网络转换模块,通过采用虚拟串口,将串口服务器的串口数据传输至本地服务器。 获取串口和波特率初始化代码如下:
在本系统中需要给ZigBee 协调器的串口数据添加一个监听器,以便及时接收处理协调器送过来的串口数据。
首先定义一个实现串口事件监听接口类的Zigbeelistener 监听器类,并在主进程中使用以下代码为ZigBee 串口添加该监听器,示例如下:
在上述程序中,有这样一段程序:
在此有必要对此段程序做一解释。 在JavaFx中, 如果在非Fx 线程要执行Fx 线程相关的任务,必须在Platform.runlater 中执行。 监听器因为需要一直重复循环去监听串口数据,在一定意义上也是一个子线程。但是在子线程中去更新主进程中监控界面上的控件数据时, 子进程不能直接访问主进程,这时就需要用到Platform.runlater 函数。 一般代码格式如下:
在本系统中, 因为只需要通过ADAM4150 来控制风扇和灯泡, 所以只需要向ADAM4150 发出设备控制指令即可。ADAM4150 通过继电器控制设备的指令格式如表1 和表2 所示。
表1 ADAM4150 开启设备控制指令格式Table 1 Adam4150 open device control command format
表2 ADAM4150 关闭设备控制指令格式Table 2 Adam4150 close device control command format
本系统中, 因为风扇接在ADAM4150 的DO0上,所以开启风扇的指令为:
01 05 00 10 FF 00 8D FF
关闭风扇的指令为:
01 05 00 10 00 00 CC 0F
控制灯泡开关和控制风扇开关的代码类似,手动控制风扇开关的具体代码如下所示:
经过验证,运行程序后,监控界面能正确实时地显示各传感器数据。 程序运行界面如图4 所示。处于手动模式时,可以手动开关风扇和灯泡;处于自动模式时, 当实时温度大于温度最大阈值30℃时,风扇自动打开,当低于温度最小阈值20℃时,风扇自动关闭;当实时光照强度小于光照强度最小阈值1500lx 时,灯泡自动打开,当大于光照强度最大阈值10000lx 时,灯泡自动关闭。
文本设计开发了一个基于ZigBee 和RS485 通信网络的智能家居控制系统, 重点阐述了基于JavaFX 的应用层代码程序设计。 JavaFX 是Java 在编写图形界面程序的最新技术,它是一个开源的下一代客户端应用平台, 适用于基于Java 构建的桌面、移动端和嵌入式系统,为开发丰富的客户端应用提供了一个现代、 高效、 功能齐全的工具包。JavaFX Scene Builder 通过创建可直接用于JavaFX应用程序的用户界面,缩小了设计师和开发人员之间的差距。