Skip to content

DedUndead/gyrocube-poc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GyroCube: Prototype

Documentation in the root folder overviews the project.

  1. Detailed information on cube's hardware/software architecture can be found here: CLICK
  2. Detailed information on hub's hardware/software architecture can be found here: CLICK
  3. Detailed information on web's architecture can be found here: CLICK

Reading the documentation fully allows to understand the architectural decisions and the code better.

Developers and contributors:

Pavel Arefyev: Cube's HW/SW architecture, Hub's HW/SW architecture
Joel Kontas: Cube's HW/SW architecture, Zigbee topology
Daniel Liberman: Cube's HW/SW architecture, Web
Alex Franko: Web

Concept

GyroCube is a Smart-Home accessory. The GyroCube is a multipurpose cube that can perform different functions based on the cube placing. Functionality is changed by simply flipping the cube on the table. GyroCube uses vibration modules and LEDs as the output method to notify the user of changes. Additionally, user has freedom and flexibility to map and configure side-function relations. This can be done through web interface or mobile application.

GyroCube consists of the main station and cubes that are in constant M2M communication. The main station acts as a gateway in personal area network, while the cubes are input/output devices. This allows the GyroCube environment to be scalable, as the user can connect as many cubes as he wants. The goal is to provide the customer with a delightful looking home accessory, which will also allow them to obtain helpful information in a simple, minimalistic way.

Concept overview

Figure 1. Concept overview

For instance, sides can be mapped to track the weather, humidity or notifications. What's more, functions can be assigned to special gestures, such as shaking or tapping. With the help of additional platforms, for example "If This, Then That", GyroCube can be extended to integrate into already existing smart home environment.

Functionality sketch

Figure 2. Cube's functionality example

Project description

The current project presents a prototype for the idea. The main goal was to obtain general information about the technologies, that can potentially be used in the actual product and develop a proof of concept in a short period of time. The conclusions are discussed in the last section of the documentation. Comparing to the original concept, the implementation has limited functionality.

Prototype picture

Figure 3. Prototype picture

Features summary

  • One cube, one hub and web interface
  • 6 configurable sides
  • 6 predefined functions to choose from
  • Point-to-Point Zigbee topology
  • Addressable LEDs and Vibration motor outputs
  • Temperature/Humidity sensor, Accelerometer inputs
  • Open case for demonstration purposes
  • Software and interfaces abstraction written for ARM Cortex-M3 (hub) and ARM Cortex-M0+ (cubes)

Overall architecture

The links in the first section provide additional information about technologies used, justification for component choices and user manuals.

Project acrhitecture diagram

Figure 4. Overall project architecture

Predefined functionality

As stated in the overview, the prototype provides six functions for mapping. The main idea was to create a challenge of designing configurable and flexible software architecture. The presence of 6 configurable functions allowed the team to discover various pitfalls and determine the possible improvements for the future product.

Table 1. Predefined functions description

Function Default side Description Configuration options
Idle 1 (idx 0) Does nothing
Simple color 2 (idx 1) Displays color Color
Temperature 3 (idx 2) Displays temperature as a gradient from green to blue if current temperature is colder than target, and green to red if warmer Target temperature
Humidity 4 (idx 3) Displays humidity as a gradient from green to red, where green is the target humidity Target humidity
Weather 5 (idx 4) Displays color matching the current weather
Notification 6 (idx 5) Notifies user with vibration/color blink/both when notification arrives Notification mode, color

The idx denotes index of the function, used in the code.

Side numbering

Web interface and the cube itself utilizes 1-6 numbering when presented to the user.
However, it is worth mentioning, that in the code they are indexed starting from 0.
For instance, side 3 would have index 2.

Picture of the cube with numbers

ZigBee PAN information

Cube and hub communicate within Personal Area Network using ZigBee protocol.
XBee2 modules and XCTU configuration software were used in order to establish connection between devices.
Both devices are configured to use AT mode for peer-to-peer communication.

PAN ID: 0xFF009AD9F7F60000
Channel scan range: 0x3A0C

To issue updates, the devices use simple string format with identifier characters: iValueiValue
List of identifiers:

  • s - side/setting, value is side index
  • f - target function, value is function index
  • c - target color, value is uint32_t in decimal format
  • t - target value, value is integer in decimal format / temperature measurement
  • w - weather update, value is weather array index* in decimal format (0 - 9)
  • n - notification, value is notification mode index (0 - 2)
  • h - humidity measurement
    * Weather indexes can be obtained from the web documentation

Examples of messages:
s0f3c0t30 to cube - map side 1 to humidity function with target value 30
w0 to cube - weather changed to index 0
n to cube - notification arrived
h30t25 to hub - humidity is 30%, temperature is 25 C