案例研究:通过在 Intel® Edison 平台上启用 ZigBee 来构建智能会议系统
基于简单的 Arduino ZigBee 堆栈,我们开发了 SCR 系统,该系统可以检测特定房间的实时环境状况,并为员工制定智能日程,从而使会议室预订更加轻松便捷。
获取新的 Intel® IoT Developer Kit,这是一个完整的硬件和软件解决方案,使开发人员能够使用 Intel® Galileo 和 Intel® Edison 板创建令人兴奋的新解决方案。请访问 Intel® Developer Zone for IoT。
1 - 引言
在许多公司中,会议室的利用效率很低。这主要有两个原因:一个人可能会预订一个会议室,但实际上在预定时间从未真正使用过该房间,或者会议可能提前结束,导致房间空置。
我们开发了智能会议室系统 (SCR System) 来帮助解决这些问题。SCR 系统部署了 Intel® Edison 板、Arduino 扩展板、Android* 智能手机、推送服务器以及 ZigBee 传感器,包括 ZigBee 光传感器、ZigBee 红外传感器、ZigBee 智能插座和 ZigBee 报警器。通过该系统,我们可以检测会议室的实时环境状况,并且我们的系统可以判断房间内是否有人,并通知推送服务器重新安排房间,从而帮助高效便捷地利用会议室空间。
ZigBee 是一组用于创建由小型、低功耗数字无线电组成的个人区域网络的通信协议的规范。ZigBee 基于 IEEE 802.15.4 标准。ZigBee 协议适用于需要低功耗并能容忍低数据速率的嵌入式应用。由此产生的网络将使用少量电力。单个设备的电池寿命必须至少为两年才能通过 ZigBee 认证。家庭自动化,如智能占用传感器、智能照明和温度控制,是 ZigBee 的典型应用。
Arduino 是一家开源计算机硬件和软件公司,也是一个设计和制造基于微控制器套件的项目和用户社区,用于构建可以感知和控制物理世界的数字设备和交互式对象。Arduino 的一个重要方面是其标准连接器,它允许用户将 CPU 板连接到各种可互换的附加模块,称为 shields。Intel® Edison 板也支持 Arduino,这使得该板与数千个 Arduino 模块兼容,例如 XBee* ZigBee 模块。
XBee 是 Digi International 公司对一系列外形尺寸兼容的无线模块的品牌名称。XBee ZB 是一个集成了 ZigBee PRO 网状网络协议的 XBee 模块。
2 - 系统概述
SCR 系统由硬件和软件组成。硬件包括 Intel® Edison 板、Arduino 扩展板、推送服务器、Android 智能手机、XBee ZB S2 ZigBee 模块、多个 ZigBee 传感器等。软件包括推送服务器、Android 应用程序和 Intel® Edison 板解决方案。
2.1 - 硬件概述
Intel® Edison 板和 Arduino 扩展板。Intel® Edison 板与 Arduino 扩展板(下图所示)一起是系统的控制核心。Intel® Edison 板与 Arduino 兼容,因此 Arduino 兼容设备,如 XBee ZB S2,可以通过安装在 Arduino 扩展板上与 Intel® Edison 板协同工作。
推送服务器。 我们在一台基于 Windows* 的平板电脑上设置了我们的服务器:Fujitsu STYLISTIC* Q702,配备 Intel® Core™ i5-3427U 处理器 @ 1.80 GHz 和 4.00 GB RAM。
Android 智能手机。 我们为 SCR 系统开发了一个 Android 应用程序,以使其使用更方便。我们还部署了一款基于 Intel® x86 的智能手机 Lenovo K900* 来测试此应用程序。
ZigBee 协调器。 XBee ZB S2 是基于 Arduino 扩展板的无线模块,它遵循 ZigBee 协议。它充当 ZigBee 协调器,管理周围的 ZigBee 传感器。
ZigBee 光传感器。 Z311X 是一款 ZigBee 光传感器,可测量环境光强度。
红外 ZigBee 传感器。 Netvox ZB11D* 是一款红外辐射 (IR) 占用传感器,在 ZigBee 网络中充当终端设备。
报警 ZigBee 传感器。 Netvox Z602A* 是一款报警设备,在紧急情况下用作警报器。它基于 ZigBee HA 标准。
智能插座 ZigBee 传感器。 Netvox Z809AG* 是一款 ZigBee 测量和开关插座。它执行开/关控制功能,可用于打开/关闭房间内的电器。
硬件基础设施
硬件基础设施如下图所示
该系统由四部分组成:推送服务器、Intel® Edison 板网关、手机和 ZigBee 传感器。该系统有三个主要功能
- 情况检测和判断。 ZigBee 传感器通过光传感器和红外传感器检测会议室的实时状况,然后使用 ZigBee 协议将信息发送到 Intel® Edison 板。Intel® Edison 板判断房间内是否有人,然后通过 Wi-Fi* 将状态发送到推送服务器。
- 房间预订和智能日程。 员工可以通过智能手机中的 Android 应用预订状态为“空闲”的会议室。如果没有合适的空闲房间,员工可以选择一个状态为“占用”的房间“等待”。一旦 Intel® Edison 板将选定的房间判断为“空闲”,Intel® 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 传感器来检测会议室的状态。当 Intel® Edison 板检测到状态变化时,它会将空闲或占用状态通知服务器。服务器更改数据库中存储的房间状态,然后将消息推送到智能手机中的 Android 应用以进行重新安排。
4 - Edison ZigBee 系统
4.1 - 软件架构
Intel® Edison 板和 XBee 协调器之间的接口在 Arduino 中被模拟为串行端口,在 Intel® Edison 板上运行的应用程序充当 ZigBee 网关,通过它我们可以向 ZigBee 传感器发送命令并接收 ZigBee 传感器的响应。
ZigBee 协调器还负责将 ZigBee 传感器报告的传感器值传输到推送服务器。
4.2 - Arduino 中 ZigBee 堆栈的设计
我们在 Arduino 中设计并实现了一个简单的 ZigBee 堆栈,用于那些带有 ZigBee 传感器的家庭自动化测量和操作。它以协调器模式工作,可以控制和管理光传感器、红外传感器、智能插座和报警传感器。
类 | 函数 |
---|---|
XBeeAddress | ZigBee 设备地址的基类 |
XBeeAddress64 | ZigBee 设备的 64 位 IEEE 地址 |
XBeeAddress16 | ZigBee 设备的 16 位网络地址 |
Payload(载荷) | ZigBee 命令帧的负载数据 |
ExplicitAddressCommand | 在家庭自动化规范中使用的 ZigBee 命令帧 |
ExplicitAddressCommandResponse | 显式地址命令的响应 |
XBeeSensor | ZigBee 传感器设备的基类 |
XBeeLightSensor | ZigBee 光传感器设备 |
XBeeInfraSensor | ZigBee 占用传感器设备 |
XBeeAlarm | ZigBee 报警设备 |
4.3 - ArduinoXBee 的主要功能
ArduinoXBee 的核心类是 `XBeeCoordinator`。此类负责管理 ZigBee 传感器,因此其主要功能是远程收集传感器的状态并将命令发送到远程控制它们的行为。
Int getLightValue(XBeeLightSensor lightSensor)
输入:ZigBee 光传感器对象。
返回值:0 到 65535 之间的整数
功能:获取特定 ZigBee 光传感器的光测量值。bool getInfraValue(XBeeInfraSensor infraSensor);
输入:ZigBee 占用传感器对象。
返回值:布尔值(True 表示有人在)
功能:获取特定 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 上开发了一个名为 Smart Conference Room System 的应用程序,员工可以在其中预订会议室并管理他们预订的房间。SCR 系统的用户界面如下所示。
在此 UI 中,用户可以使用左侧的选项创建新日程、管理现有日程或管理他们的帐户。
使用“我的日程”选项,用户可以预订会议室(蓝色表示房间空闲,灰色表示房间已被预订)。如果房间未空闲,用户可以选择等待。
用户可以查看其日程的状态(蓝色表示成功;灰色表示等待)并管理他们现有的日程,如下所示。
当系统检测到特定房间空闲时,它会将通知发送给所有正在等待该房间的用户。这些用户将在其应用程序中收到消息。
最先接受通知的用户将能够预订该房间,而其他用户将再次进入等待状态。
6 - 总结
基于简单的 Arduino ZigBee 堆栈,我们开发了 SCR 系统,该系统可以检测特定房间的实时环境状况,并为员工制定智能日程,从而使会议室预订更加轻松便捷。
然而,我们在堆栈和 SCR 系统方面仍然面临一些挑战,例如堆栈和 SCR 系统的功能和 API 限制、系统的稳定性等等。我们计划在下一版本中实现更多功能。
关于作者
Liang Z. Zhang 是 Intel PRC 开发者关系部门的应用工程师,负责支持基于 Intel® 平台的企业应用程序和物联网开发者。