基于ZigBee 和RS485 通信的智能家居控制系统

2022-05-23 08:18:14
智能物联技术 2022年1期
关键词:应用层灯泡风扇

任 静

(兰州石化职业技术大学,甘肃 兰州 730060)

0 引言

一个物联网系统由感知层、传输层和应用层构成。 感知层实现对物理世界的智能感知识别、信息采集处理和自动控制,并通过通信模块将物理实体连接到网络层和应用层。网络层主要实现信息的传递、路由和控制,包括延伸网、接入网和核心网,网络层所需要的关键技术包括长距离有线和无线通信技术、网络技术等。 应用层可以对感知层采集的数据进行计算、处理和知识挖掘,从而实现对物理世界的实时控制、精确管理和科学决策。 本文通过一个基于ZigBee 和RS485 通信的智能家居控制系统,从硬件层搭建到应用层开发,完整呈现了一个物联网应用系统,重点阐述了应用层开发程序设计。

1 系统硬件设计

本智能家居控制系统需要采集房间温湿度信息、光照条件、火焰信息和厨房二氧化碳浓度。根据房间的温度和光照条件,可以自动控制空调(用风扇代替)和灯光的开启和关闭;当有火焰或二氧化碳浓度超标,报警灯会开启。 光照和火焰采用无线传感器,温湿度和二氧化碳采用有线传感器。 采用ZigBee 四输入模拟量模块来获取二氧化碳和温湿度传感器数据, 本文将ZigBee 四输入模拟量模块通过Newland 公司提供的程序烧写成四模拟量独立采集器。ZigBee 终端节点采集的传感器数据传输给ZigBee 协调器, 再通过RS232 串口将数据传输给串口服务器,串口服务器通过网络将数据传输给本地服务器,监控界面能显示采集的所有传感器的实时数据。

当温度值和光照值分别超过设定的阈值时,需要自动开关风扇和灯泡(同时也需要能手动控制)。监控软件通过RS232 转RS485 转换器将控制命令送至ADAM4150 来实现风扇和灯泡的开关控制。

在本系统的任务实现中,均采用了Newland 公司提供的硬件设备和设备驱动库文件(DLL),具体的硬件设备连接如图1 所示。

2 系统组网

本系统传感器数据采用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 转换器即可。

3 监控软件设计和控制逻辑

3.1 监控软件设计

监控软件使用Eclipse 集成开发环境,布局文件使用JavaFX Scene Builder 完成。 系统数据监控界面设计如图3 所示,可实时监控显示各传感器数据,并且可以对风扇和灯泡进行自动和手动控制。

3.2 控制逻辑分析

当选择好ADAM4150 以及ZigBee 串口和波特率以后,点击开始采集按钮,即可采集数据。因为本地服务器是通过网络方式访问串口服务器,所以本文选择ADAM4150 串口和ZigBee 串口时需要用Newland 公司提供的USR-VCOM 软件来虚拟串口。当处于手动模式时,可以手动开关风扇和灯泡;当处于自动模式时,需要设置温度和光照的最大值和最小值。 由于ZigBee 网络是自组网自动进行传感器数据采集传输的,所以需要在串口添加一个监听器,完成对传感器数据的收集和处理。

4 系统功能实现

建立JavaFX 工程,引入硬件驱动库文件rxtx-Parallel.dll、rxtxSerial.dll, 加载库文件RXTXcomm.jar、SerialPortLib.jar。

4.1 串口的获取和初始化

在本系统中, 串口服务器即是一个串口-网络转换模块,通过采用虚拟串口,将串口服务器的串口数据传输至本地服务器。 获取串口和波特率初始化代码如下:

4.2 串口监听器以及数据处理

在本系统中需要给ZigBee 协调器的串口数据添加一个监听器,以便及时接收处理协调器送过来的串口数据。

首先定义一个实现串口事件监听接口类的Zigbeelistener 监听器类,并在主进程中使用以下代码为ZigBee 串口添加该监听器,示例如下:

在上述程序中,有这样一段程序:

在此有必要对此段程序做一解释。 在JavaFx中, 如果在非Fx 线程要执行Fx 线程相关的任务,必须在Platform.runlater 中执行。 监听器因为需要一直重复循环去监听串口数据,在一定意义上也是一个子线程。但是在子线程中去更新主进程中监控界面上的控件数据时, 子进程不能直接访问主进程,这时就需要用到Platform.runlater 函数。 一般代码格式如下:

4.3 RS485 通讯控制设备代码设计

在本系统中, 因为只需要通过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.4 程序运行结果

经过验证,运行程序后,监控界面能正确实时地显示各传感器数据。 程序运行界面如图4 所示。处于手动模式时,可以手动开关风扇和灯泡;处于自动模式时, 当实时温度大于温度最大阈值30℃时,风扇自动打开,当低于温度最小阈值20℃时,风扇自动关闭;当实时光照强度小于光照强度最小阈值1500lx 时,灯泡自动打开,当大于光照强度最大阈值10000lx 时,灯泡自动关闭。

5 结语

文本设计开发了一个基于ZigBee 和RS485 通信网络的智能家居控制系统, 重点阐述了基于JavaFX 的应用层代码程序设计。 JavaFX 是Java 在编写图形界面程序的最新技术,它是一个开源的下一代客户端应用平台, 适用于基于Java 构建的桌面、移动端和嵌入式系统,为开发丰富的客户端应用提供了一个现代、 高效、 功能齐全的工具包。JavaFX Scene Builder 通过创建可直接用于JavaFX应用程序的用户界面,缩小了设计师和开发人员之间的差距。

猜你喜欢
应用层灯泡风扇
“灯泡”诞生记
灯泡创意秀
快乐语文(2021年36期)2022-01-18 05:48:54
点亮小灯泡
点亮小灯泡
家教世界(2020年1期)2020-03-07 04:57:30
电风扇
故事大王(2017年4期)2017-05-08 07:53:40
基于分级保护的OA系统应用层访问控制研究
基于智能手机控制风扇运行的实现
新一代双向互动电力线通信技术的应用层协议研究
新蒙迪欧车冷却风扇常高速运转
物联网技术在信息机房制冷系统中的应用
物联网技术(2015年8期)2015-09-14 09:30:13