Get access to the new Intel® IoT Developer Kit, a complete hardware and software solution that allows developers to create exciting new solutions with the Intel® Galileo and Intel® Edison boards. Visit the Intel® Developer Zone for IoT.
1 - Introduction
In many companies, the utilization efficiency of a conference room is low. There are two main reasons for this: A person may book a conference room, but never actually use the room at the scheduled time, or a meeting may end early, leaving the room empty.
We developed the Smart Conference Room System (SCR System) to help resolve these problems. The SCR System deploys the Intel® Edison board, Arduino expansion board, Android* smartphone, push server, and ZigBee sensors, including the ZigBee light sensor, ZigBee infrared sensor, ZigBee Smart Plug, and ZigBee alarm. With this system, we can detect real-time environmental situations in a conference room, and our system can judge whether there are persons in this room and notify the push server to reschedule the room, helping to use conference room space efficiently and conveniently.
ZigBee is a specification for a suite of high-level communication protocols used to create personal area networks built from small, low-power digital radios. ZigBee is based on the IEEE 802.15.4 standard. ZigBee protocols are intended for embedded applications requiring low power consumption and tolerating low data rates. The resulting network will use small amounts of power. Individual devices must have a battery life of at least two years to pass ZigBee certification. Home automation such as smart occupancy sensor, smart lighting, and temperature control is a typical application of ZigBee.
Arduino is an open source computer hardware and software company, and a project and user community that designs and manufactures microcontroller-based kits for building digital devices and interactive objects that can sense and control the physical world. An important aspect of the Arduino is its standard connectors, which let users connect the CPU board to a variety of interchangeable add-on modules known as shields. The Intel® Edison board also supports Arduino, which make the board compatible with thousands of Arduino modules, such as XBee* ZigBee modules.
XBee is the brand name from Digi International for a family of form-factor-compatible radio modules. XBee ZB is an XBee module that incorporates the ZigBee PRO mesh networking protocol.
2 - System Overview
The SCR System consists of hardware and software. The hardware consists of the Intel® Edison board, Arduino expansion board, push server, Android smartphone, XBee ZB S2 ZigBee Module, several ZigBee sensors, and more. The software consists of the push server, Android application, and the Intel® Edison board solution.
System Overview
2.1 - Hardware Overview
Intel® Edison board and Arduino expansion board. The Intel® Edison board along with the Arduino expansion board (shown below) is the controlling core of the system. The Intel® Edison board is compatible with Arduino, so the Arduino compatible devices, such as XBee ZB S2 can work with the Intel® Edison board by installing it on the Arduino expansion board.
Push server. We set up our server on a Windows*-based tablet: Fujitsu STYLISTIC* Q702 with an Intel® Core™ i5-3427U processor @ 1.80 GHz and 4.00 GB RAM.
Android smartphone. We developed an Android application for the SCR System to make it more convenient to use this system. We also deployed an Intel® x86-based smartphone, Lenovo K900*, to test this application.
ZigBee coordinator. XBee ZB S2 is the radio module based on the Arduino expansion board, and it follows the ZigBee protocol. It works as the ZigBee coordinator to manage the surrounding ZigBee sensors.
ZigBee light sensor. The Z311X is a ZigBee light sensor that can measure environmental light strength.
Infrared ZigBee sensor. Netvox ZB11D* is an infrared radiation (IR) occupancy sensor and acts as an end device in the ZigBee network.
Alarm ZigBee sensor. Netvox Z602A* is an alarm device, which is a siren used in emergency cases. It is based on the ZigBee HA standard.
Smart Plug ZigBee sensor. Netvox Z809AG* is a ZigBee measurement and switch socket. It performs the On/Off controlling feature, which can be used to turn on/off the electric devices in the room.
Hardware Infrastructure
The hardware infrastructure is shown in the following figure:
This system consists of four parts: push server, Intel® Edison board gateway, phone, and ZigBee sensors. This system has three major functions:
- Situation detection and judgment. ZigBee sensors detect the real-time situation of the conference room through the light sensor and infrared sensor, then sends the information to the Intel® Edison board using the ZigBee protocol. The Intel® Edison board judges whether people are in the room and then sends the status to the push server by Wi-Fi*.
- Room reservation and smart schedule. Employees can reserve the conference room whose state is "free” by the Android app in the smartphone. If there are no suitable free rooms, employees can choose one room whose state is "busy” to "wait for it.” Once the selected room is judged as "free” by the Intel® Edison board, the Intel® Edison board notifies the server, which sends a notification to the app.
- Remote access and control. Apps can query the status of the reserved room through Wi-Fi from the push server to control devices in that room, such as light, and obtain the real-time status of ZigBee sensors.
2.2 - Software
Some enterprise resources, such as conference rooms, are not used in the most efficient way, especially in larger companies. For example, employee A reserves a conference room from 8:00 a.m. to 10:00 a.m. using the company website. The meeting finishes at 9:00 a.m., at which time the room is free for others to use. However, when employee B uses the website to search for an available conference room, he can’t choose this one because its state in the database is still being shown as "in use.” Employee B has to find another conference room.
The figure below shows the system architecture of the software solution.
Software Architecture
3 - Push Server
3.1 - Software Architecture
Our system deploys the GlassFish* Server 4.0 as the push server. The architecture of this server is shown below.
Push Server Architecture
3.2 - Software Work Flow
The system diagram of our application server is shown below. This system deploys the ZigBee sensor to detect the status of the conference room. When the Intel® Edison board detects a status change, it notifies the server of the free or busy status. The server changes the room state stored in the database, and then pushes the message to the Android app in the smartphone to make a reschedule.
System work flow of Push Server
4 - Edison ZigBee System
4.1 - Software Architecture
The interface between the Intel® Edison board and the XBee Coordinator is emulated as the serial port in the Arduino, and the application running on the Intel® Edison board works as the ZigBee gateway, by which we can send a command to the ZigBee sensors and receive a response from the ZigBee sensors.
The ZigBee Coordinator is also responsible for transferring the sensor values to the push server, which are reported by the ZigBee sensors.
4.2 - Design of the ZigBee Stack in Arduino
We designed and implemented a simple ZigBee Stack in Arduino, which is used for those home-automatic measurements and actions with ZigBee sensors. It works in the coordinator mode, which can control and manage the light sensor, infrared sensor, Smart Plug, and alarm sensor.
Class |
Function |
XBeeAddress |
Base class of the ZigBee device address |
XBeeAddress64 |
64-bit IEEE address of the ZigBee device |
XBeeAddress16 |
16-bit network address of the ZigBee device |
Payload |
Payload data of the ZigBee command frame |
ExplicitAddressCommand |
A ZigBee command frame used in the home-automatic specification |
ExplicitAddressCommandResponse |
Response for explicit address command |
XBeeSensor |
Base class of the ZigBee sensor device |
XBeeLightSensor |
ZigBee light sensor device |
XBeeInfraSensor |
ZigBee occupancy sensor device |
XBeeAlarm |
ZigBee alarm device |
Classes design of ZigBee Stack
4.3 - Main Functions of ArduinoXBee
The core class of the ArudionoXBee is XBeeCoordinator
. This class take the responsibility to manage the ZigBee sensors, so its main functions is to remote collect the sensors’s status and send the commands to remote control their behaviors.
Int getLightValue(XBeeLightSensor lightSensor)
Input: ZigBee Light Sensor Object.
Return: An integer range from 0 to 65535
Function: Get the light measurement value of specific ZigBee Light Sensor.
bool getInfraValue(XBeeInfraSensor infraSensor);
Input: ZigBee Occupancy Sensor Object.
Return: A bool(Ture stand for somebody in)
Function: Get the occupancy state of specific ZigBee Occupancy Sensor.
void turnOnAlarm(XBeeAlarm alarm);
Input: ZigBee Warning Device Object.
Return: No return value.
Function: Turn on specific ZigBee Warning Device.
void turnOffAlarm(XBeeAlarm alarm);
Input: ZigBee Warning Device Object.
Return: No return value.
Function: Turn off specific ZigBee Warning Device.
void turnOnSwitch(XBeeSmartPlug plug);
Input: ZigBee Smart Plug Device Object.
Return: No return value.
Function: Turn on specific ZigBee Smart Plug Device.
void turnOffSwitch(XBeeSmartPlug plug);
Input: ZigBee Smart Plug Device Object.
Return: No return value.
Function: Turn off specific ZigBee Smart Plug Device.
5 - Android App
5.1 - System Diagram
When users open this application, they can choose to make a new schedule or manage an existing schedule (delete an existing schedule). When making a new schedule, the user can search for a specific conference room by time and site. If the conference room is free, the user can reserve this room directly. If the conference room is busy, the user can choose to wait for the room to be available. Once ZigBee sensors detect the room is free within a given time, the push server sends a notification to the SCR System application, and the user who receives the notification can reserve the room.
5.2 - Android Application UI
We developed an application in Android named Smart Conference Room System, where the employee can to reserve a conference room and manage a room they reserved. The user interface of the SCR System is shown below.
In this UI, users use the options on the left side to make a new schedule, manage the existing schedule, or manage their account.
Using the My Scheduling option, users can reserve a conference room (where blue indicates the room is free and gray means the room is already reserved). If the room is not free, the user can choose to wait for it.
Users can check the status of their schedule (blue for success; gray for waiting) and manage their existing schedule as shown below.
When the system detects that a specific room is free, it sends the notification to every user waiting for it. Those users receive a message in their application.
The user who accepts it first will be able to reserve this room, and the other users will be put into a waiting state again.
6 - Summary
Based on the simple Arduino ZigBee stack, we developed the SCR System, which can detect the real-time environmental situation of a specific room and make a smart schedule for employees, helping to make conference rooms reservations easier and more convenient.
However, we still face some challenges in both the stack and SCR System, such as the limit function and API of the stack and SCR System, the stability of the system, and so on. We plan to achieve more functionality for it in the next version.
About the Author
Liang Z. Zhang is an application engineer in Intel’s PRC Developer Relationship Division, responsible for supporting enterprise apps and Internet of Things developers based on Intel® platforms.