1 - 简介
在许多企业中,会议室的利用率非常低。 原因有两点: 员工可能会预定会议室,但是从来不会在预定时间使用,或者会议可能会提早结束,让会议室 处于闲置状态。
我们开发了智能会议室系统(SCR 系统)来帮助解决这些问题。 SCR 系统包含英特尔® Edison 开发板、Arduino 扩展板、Android 智能手机、推送服 务器和 ZigBee 传感器(包括 ZigBee 光传感器、ZigBee 红外线传感器、ZigBee 智能插座和 ZigBee 报警器)。 借助该系统,我们可以检测到会议室内 的实时环境状况,我们的系统可以判断该会议室内是否有人并通知推送服务器安排会议室,帮助高效、便捷地使用会议室空间。
ZigBee 是一套高级通信协议规范,用于使用小型低功耗数字无线技术构建创建个人局域网。 ZigBee 基于 IEEE 802.15.4 标准。 ZigBee 协议主要面 向需要低功耗且能够容忍低数据速率的嵌入式应用。 其创建的网络将使用非常少的功耗。 单个设备必须具备最少两年的电池续航时间才能够通过 ZigBee 认证。 家庭自动化(如智能占用传感器、智能照明和温控)是典型的 ZigBee 应用。
Arduino 是一家开源软硬件公司,同时也是一个项目和用户社区,致力于设计和生产基于微控制器的套件,帮助构建能够感知和控制物理世界的数字设 备和交互式项目。 Arduino 的一个重要优势是其能够提供标准接口,让用户能够将 CPU 主板与多种可互换的插件模块(称为护罩)相连。 英特尔® Edison 开发板同样支持 Arduino,这使得此开发板能够兼容数千个 Arduino 模块,如 XBee* ZigBee 模块等。
XBee 是 Digi International 为其推出的一系列外形兼容的无线电模块打造的品牌名。 XBee ZB 是一款能够采用 ZigBee PRO 网状网络协议的 XBee 模块。
2 - 系统概述
SCR 系统包括硬件和软件。 硬件包括英特尔® Edison 开发板、Arduino 扩展板、推送服务器、Android 智能手机、XBee ZB S2 ZigBee 模块和多种 ZigBee 传感器等。 软件包括推送服务器、Android 应用和英特尔® Edison 开发板解决方案。
系统概述
2.1 - 硬件概述
英特尔® Edison 开发板和 Arduino 扩展板。 英特尔® Edison 开发板与 Arduino 扩展板(见下文)一起构成系统的控制核心。 英特尔® Edison 开 发板可兼容 Arduino,因而 Arduino 兼容的设备(如 XBee ZB S2)能够通过通过安装到 Arduino 扩展板上,与英特尔® Edison 开发板一起使用。
推送服务器。我们在基于 Windows* 的平板电脑上设置服务器: 富士通 STYLISTIC* Q702 (采用 智能英特尔® 酷睿™ i5-3427U 处理器,1.80 GHz,4.00 GB 内存)。
Android 智能手机。我们为 SCR 系统开发了一款 Android 应用,以便能够更加便捷地使用该系统 。 此外,我们还部署了一部英特尔® x86 架构的智能手机(联想 K900*)来测试该应用。
ZigBee 协调器。 XBee ZB S2 是一款基于 Arduino 扩展板的无线电模块,采用 ZigBee 协议。 它 用作 ZigBee 协调器来管理周围的 ZigBee 传感器。
ZigBee 光传感器。 Z311X 是一款光传感器,可测量环境光的强度。
ZigBee 红外线传感器。 Netvox ZB11D* 是一款红外线照射 (IR) 占用传感器,在 ZigBee 网络中 用作终端设备。
ZigBee 报警器传感器。 Netvox Z602A* 是一款报警设备,用于紧急事件报警。 它基于 ZigBee HA 标准。
ZigBee 智能插座传感器。 Netvox Z809AG* 是一款 ZigBee 测量和开关插座。 它负责执行开关控 制功能,可用于开关室内的电气设备。
硬件基础设施
硬件基础设施如下图所示:
该系统包括四部分:推送服务器、英特尔® Edison 开发板网关、手机和 ZigBee 传感器。 该系统有三大主要功能:
- 情况监测和判断。 ZigBee 传感器可通过光传感器和红外线传感器监测会议室的实时情况,然后使用 ZigBee 协议将该信 息发送至英特尔® Edison 开发板。 英特尔® Edison 开发板可判断室内是否有人,然后通过 Wi-Fi* 将状态发送至推送服务器。
- 会议室预定和智能调度。员工可预订智能手机 Android 应用上状态显示为“闲置”的会议室。 如果没有合 适的闲置会议室,员工可以选择一个状态为“占用”的会议室,然后“等待该会议室闲置”。 一旦英特尔® Edison 开发板判断选 定的会议室为“闲置”,便会通知服务器,服务器便会向应用发送一条通知。
- 远程访问和控制。 应用可通过 Wi-Fi 从推送服务器上查询所预定的会议室的状态,以控制该会议室内的设备(如光线) 和获取 ZigBee 传感器的实时状态。
2.2 - 软件
一些企业资源(如会议室)没有得到充分利用,尤其是在较大型的企业中,这一情况表现得尤为明显。 例如,员工 A 在公司的网站上预订从上午 8:00 到 10:00 使用会议室。 会议在上午 9:00 结束,此时,会议室已闲置,能够被其他人使用。 但是,当员工 B 使用网站搜索可用会议室时,无法选 择该会议室,因为它在数据库中的状态仍然显示为“使用中”。 员工 B 必须寻找其他的会议室。
下图为软件解决方案的系统架构。
软件架构
3 - 推送服务器
3.1 - 软件架构
我们的系统将 GlassFish* Server 4.0 部署为推送服务器。 该服务器的架构如下所示。
推送服务器架构
3.2 - 软件工作流
应用服务器的系统图如下所示。 该系统使用 ZigBee 传感器来检测会议室的状态。 英特尔® Edison 开发板检测到状态变化后,将会通知服务器其状 态为“闲置”还是“占用”。 服务器将更改数据库内存储的会议室状态,然后将消息推送到智能手机的 Android 应用上,以便进 行重新调度。
推送服务器的系统工作流
4 - Edison ZigBee 系统
4.1 - 软件架构
英特尔® Edison 开发板和 XBee 协调器之间的接口在 Arduino 中模拟为串行接口,运行在英特尔® Edison 开发板上的应用被用作 ZigBee 网关,我 们可以通过它向 ZigBee 传感器发送命令和接收响应。
ZigBee 协调器还负责将 ZigBee 传感器报告的值传输至推送服务器。
4.2 - Arduino 内的 ZigBee 堆栈设计
我们在 Arduino 内设计并实施了一款简单的 ZigBee 堆栈,可与 ZigBee 传感器一起实现计家庭自动化测量和操作。 它可在协调器模式下控制和管理 光传感器、红外线传感器、智能插座和报警器传感器。
类 | 功能 |
---|---|
XBeeAddress | ZigBee 设备地址基本类 |
XBeeAddress64 | ZigBee 设备的 64 位 IEEE 地址 |
XBeeAddress16 | ZigBee 设备的 16 位网络地址 |
有效载荷 | ZigBee 命令帧的有效载荷数据 |
ExplicitAddressCommand | 家庭自动化规范中使用的 ZigBee 命令帧 |
ExplicitAddressCommandResponse | 对显式地址命令的响应 |
XBeeSensor | ZigBee 传感器设备基本类 |
XBeeLightSensor | ZigBee 光传感器设备 |
XBeeInfraSensor | ZigBee 占用传感器设备 |
XBeeAlarm | ZigBee 报警器设备 |
ZigBee 堆栈设计类
4.3 - ArduinoXBee 的主要功能。
ArudionoXBee 的核心类是 XBeeCoordinator。 该类负责管理 ZigBee 传感器,因此其主要功能是远程管理传感器的状态,并发送命令以远程控制其运 行状况。
- Int getLightValue(XBeeLightSensor lightSensor)
输入: ZigBee 光传感器对象。
返回: 整数范围:0 至 65535
功能: 获取特定 ZigBee 光传感器的光测量值。 - bool getInfraValue(XBeeInfraSensor infraSensor);
输入: ZigBee 占用光传感器对象。
返回: A bool(Ture stand for somebody in)
功能: 获取特定 ZigBee 占用传感器的占用状态。 - void turnOnAlarm(XBeeAlarm alarm);
输入: ZigBee 报警器设备对象。
返回: 无返回值。
功能: 打开特定 ZigBee 报警 器设备。 - void turnOffAlarm(XBeeAlarm alarm);
输入: ZigBee 报警器设备对象。
返回: 无返回值。
功能: 关闭特定 ZigBee 报 警器设备。 - void turnOnSwitch(XBeeSmartPlug plug);
输入: ZigBee 智能插座设备对象。
返回: 无返回值。
功能: 打开特定 ZigBee 智能插座设备。 - void turnOffSwitch(XBeeSmartPlug plug);
输入: ZigBee 智能插座设备对象。
返回: 无返回值。
功能: 关闭特定 ZigBee 智能插座设备。
5 - Android 应用
5.1 - 系统图
用户打开该应用后,可选择新建一个日程表,也可选择管理现有的日程表(删除现有的日程表)。 当新建日程表表时,用户可以按时间和地点搜索某 个会议室。 如果会议室闲置,用户可以直接预订该会议室。 如果会议室被占用,那么用户可以选择等待该会议室空出。 一旦 ZigBee 传感器在给定时间 内检测到会议室闲置,推送服务器将会向 SCR 系统应用发送通知,接收到通知的用户便可预定该会议室。
5.2 - Android 应用 UI
我们在 Android 中开发了一款名为智能会议室系统的应用,支持员工预定会议室和管理其预定的会议室。 SCR 系统的用户界面如下所示。
在该 UI 中,用户可以使用左侧的选项来新建日程表,管理现有日程表,或管理其帐户。
使用 My Scheduling 选项,用户可以预定会议室(其中蓝色表示会议室闲置,灰色表示会议室已经预定)。 如果会议室未闲置,用户可以选择等待。
用户可以查看其日程表的状态(蓝色表示成功;灰色表示等待),并管理其现有的日程表,如下所示。
当系统检测到某个会议室闲置时,将会向每位等待使用该会议室的用户发送通知。 这些用户将会在其应用中收到一条消息。
谁先收到消息便可先预定该会议室,其他用户将再次进入等待状态。
6 - 总结
我们在简单的 Arduino ZigBee 堆栈的基础上开发了 SCR 系统,该系统可检测某个会议室的实时环境状态,并为员工做出智能安排,帮助员工更轻松 、更便捷地预定会议室。
但是,我们在堆栈和 SCR 系统方面仍然面临着一些挑战,如堆栈和 SCR 系统的功能和 API 较少,系统较不稳定等。 我们计划在下一版本中为其提供 更多功能。
关于作者
Liang Z. Zhang 现任英特尔中国开发人员关系部门的应用工程师,负责为基于英特尔® 平台的企业应用和物联网开发人员提供支持。