65.9K
CodeProject 正在变化。 阅读更多。
Home

Project Newton - 智能家居物联网控制的整体解决方案

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.43/5 (4投票s)

2015年9月15日

CPOL

9分钟阅读

viewsIcon

17437

然而,许多人认为智能家居存在两大主要障碍:缺乏统一的解决方案且尚不实用。Project Newton,英特尔最新的创新项目之一,可以帮助缓解这些问题。

获取新的 Intel® IoT Developer Kit,这是一个完整的硬件和软件解决方案,允许开发人员使用 Intel® Galileo 和 Intel® Edison 开发板创建令人兴奋的新解决方案。请访问 英特尔® 物联网开发者中心

引言

“智能家居”一词用于描述一系列广泛的功能,使用户能够通过智能手机、平板电脑或笔记本电脑控制和管理他们的家庭设备,例如,从智能手机上的应用程序远程控制他们的恒温器。然而,许多人认为智能家居存在两大主要障碍:缺乏统一的解决方案且尚不实用。Project Newton,英特尔最新的创新项目之一,可以帮助缓解这些问题。

问题

“缺乏统一的解决方案”:用户希望自己做出选择。他们希望购买苹果、三星、腾讯、小米等品牌的智能设备,如电视、冰箱、空调。但每个制造商都有自己的智能家居解决方案(例如,不同的制造商有不同的通信协议)。标准化生态系统几乎是不可能的。

“尚不实用”:以前的智能家居物联网控制解决方案包括:语音控制,可能会受到背景噪音的影响;手机控制或其他遥控器,可能不方便,因为它涉及拿出手机、启动相关应用程序、搜索要控制的物联网设备等;通过摄像头进行手势识别,这可能取决于光照环境以及您在房间中的位置/方向。

Project Newton

Project Newton 旨在提供一个先进的智能家居物联网控制整体解决方案。

  • 连接任何智能家居物联网设备
  • 不依赖手持设备
  • 低成本
  • 不依赖环境、光照强度、噪音水平或用户的方向

我们开发了一个名为 Project Newton 的先进智能家居物联网控制整体解决方案。该系统包括连接所有主要平台(Intel® Core™ 处理器、Intel® Centrino* 处理器技术、Intel® Atom™ 处理器、ARM* 移动平台)和所有物联网平台(Intel® Edison 开发板、Intel® Galileo 开发板、Raspberry*、Spark*、Mbed*、Freescale*、Arduino Uno* 等)。因此,Project Newton 可以实时连接运行所有当前主流操作系统(Windows*、Linux*、Android*)和非 UI 操作系统(Mbed*、Contiki*、RIOT*、Spark*、OpenWRT*、Yocto*、WindRiver*、VxWorks*、Raspbian* 等)的平台。

智能家居供应商通常会定义一套应用层通信协议,但这些协议相对封闭。在 Project Newton 中,我们使用了 CoAP(Constrained Application Protocol),这是一种软件协议,旨在允许简单的电子设备在 Internet 上进行交互式通信。基于 RESTful 框架的 CoAP 协议可以转换为 HTTP 协议,从而轻松构建智能网关。Project Newton 中 CoAP 设计的基本原型如下。

Project Newton 的 CoAP 设计

为了对这个想法中支持的所有操作系统进行分类,Intel® Galileo 开发板、Intel® Edison 开发板、UNO 和 Spark 开发板支持 Arduino 编程标准。流行的物联网 LPC1768 开发板支持 Mbed 和 RIOT 操作系统。Mbed 是一个基于 ARM 的、用于联网设备的平台和操作系统,通过调用相应的对象方便地操作硬件资源。RIOT 是一个开源操作系统,支持多线程和多种不同的开发板。它可以使用标准 C 语言进行编程。LPC1768 芯片需要使用外部 Wi-Fi* 模块进行通信。Windows、Linux 和 Android 也很容易适应 CoAP。Project Newton 的软件架构如下。

Project Newton 的软件架构

Project Newton 中的操作系统连接实现

  • CoAP 实现

CoAP 的源代码是一个开源代码,称为 MicroCoAP,可以 下载。它轻量级,并用标准 C 代码编写,因此很容易将其移植到不同的平台。MicroCoAP 包含四个文件(CoAP.h、CoAP.c、endpoints.c 和 main.c)。CoAP.h 和 CoAP.c 实现 CoAP 协议,如下所示,而 endpoints.c 包含与特定节点相关的响应函数。

main.c 文件构建了一个 CoAP 服务器。我们主要使用 CoAP_packet_t、CoAP_parse、CoAP_handle_req 和 CoAP_build。CoAP_packet_t 定义了 CoAP 数据包的数据结构。CoAP_parse 函数解析从网络或串口接收到的十六进制数据,并将数据转换为 CoAP_packet_t 结构。CoAP_handle_req 函数分析接收到的 CoAP 数据包并作出适当的响应。CoAP_build 函数将响应数据包转换为十六进制数据。构建 CoAP 服务器的关键源代码如下。

  • Arduino* 实现

Arduino 是一个开源电子原型平台,创建了 Arduino 软件和硬件标准。Intel® Edison 开发板、Intel® Galileo 开发板和 Spark Core 开发板遵循 Arduino 标准。它主要由两个函数组成:setup 和 loop。setup 函数初始化硬件,在 loop 函数之前调用一次。loop 函数是一个死循环,可用于执行主函数。

要将 COAP 添加到 Arduino 开发板,只需将三个文件(CoAP.h、CoAP.c、endpoints.c)添加到项目中,并根据 microCoAP 中的 main.c 修改 setup 和 loop 函数,如下所示。

  • Mbed 实现

Mbed 是一个为 ARM Cortex*-M 处理器开发的面向对象的 C++ 库。我们可以使用相关类来操作通用输入/输出(GPIO)和其他硬件资源。但是,没有默认的 Wi-Fi 模块或库。这里使用 UART-to-WIFI 模块为 Mbed 添加 Wi-Fi 功能。WIFI 类是基于 UART-WIFI 模块的数据表开发的,每个函数都会向 UART-WIFI 模块发送一个相对字符串。

您需要将三个文件(CoAP.h、CoAP.c、endpoints.c)添加到项目中,并根据 microCoAP 项目中的 main.c 文件修改 main.c 文件。要编译它,只需使用 make 命令——Makefile 中的所有内容都已正确设置,如下所示。

Mbed 平台上的 CoAP 服务器
  • RIOT 实现

RIOT 是一个开源的、对开发者友好的物联网操作系统,支持多种开发板,如 Mbed LPC1768 和 Spark Core 开发套件。它支持 C 和 C++ 语言编程。tests 文件夹包含许多连接硬件的示例 API。与 Mbed 类似,可以通过将 Mbed 的 Wi-Fi 类更改为 C 函数并修改与串行端口相关的 API 来实现 CoAP 服务器。然而,在我们的实验中它经常崩溃,所以只用于测试。要编译它,请在根文件夹中使用“BOARD=Mbed_lpc1768 make clean all flash”命令,并使用“BOARD=Mbed_lpc1768 make term”来监视串行端口并从 Mbed 获取打印信息。请参阅 RIOT 的 CoAP 服务器代码结构。

RIOT 代码结构
  • Contiki 实现

Contiki 是一个多进程开源操作系统。example 文件夹包含几个使用 API 控制硬件的示例。它也没有默认的 Wi-Fi 模块。要实现 CoAP 服务器,请使用 RIOT 的类似函数并重写 UART 示例。要编译它,请使用“TARGET=cc2530dk make”命令,并使用 jlink 下载二进制程序。查看下面的 Contiki 上 CoAP 服务器的示例代码。

Contiki 上 CoAP 服务器的示例代码
  • OpenWRT 实现

OpenWRT 是用于路由器的嵌入式 Linux。它支持标准的 Linux API。因此,microCoAP 代码可以直接使用。在 package 文件夹中,设置 microCoAP 项目,并根据其他项目中的 Makefile 修改 Makefile。然后,在根目录下运行 make 命令。编译后的应用程序将在 bin 文件夹中。应用程序可以通过 ftp 或 USB 存储上传到开发板。最后,使用 opkg 命令安装 CoAP*.ipk 来安装 CoAP,CoAP 将安装在 OpenWRT 中。将“/usr/bin/CoAP &”添加到 /etc/rc.local 文件中。请参阅 OpenWRT 的 CoAP 服务器代码结构。

OpenWRT 代码结构

Project Newton 中的实际解决方案

要成为物联网的实际解决方案,它必须能够通过自然手势控制任何物联网设备,无需佩戴任何电子可穿戴设备,并且不受环境光/噪音等影响。实现此类解决方案的一种方法是使用 9 轴陀螺仪来检测用户的手部运动。

带有 Wi-Fi* 的 9 轴陀螺仪示例

模式识别算法实时分析数据,并检测用户的位置、方向和手势。通过计算用户与物联网设备之间的相对位置/方向,系统可以识别用户正在面向哪个物联网设备。通过进一步计算他们的手部方向和手势,即可选择和控制目标物联网设备。

Project Newton 的应用案例

以下是我们实验室中的演示案例,其中 Project Newton 用于连接和控制各种具有不同操作系统的设备。这些演示案例包括环境(图 1)、控制开发板(图 2 中的 Intel® Edison 开发板)、控制 Android 设备(图 3)、控制机械臂(图 4)以及控制机器人汽车(图 5)。

1:我们实验室中的演示案例环境

2:Project Newton 中选择(蓝色)和控制(绿色)开发板

3:Project Newton 中控制 Android 设备

4:Project Newton 中控制机械臂

5:Project Newton 中控制机器人汽车

进一步

Project Newton,一个先进的智能家居物联网控制整体解决方案,是一个易于使用的解决方案,使用户能够连接他们想要的任何智能家居物联网设备。它是一个低成本的解决方案,使用户无需使用手持设备。而且它不依赖于光照、噪音水平等环境参数。

然而,像所有开源项目一样,Project Newton 可以做得更好。我们的下一步是改进手势识别,提高性能,并整合可穿戴设备。例如,据报道,下一代 Google* Glass 将配备更大的棱镜,并由 Intel Atom 处理器提供动力,这可能为 Project Newton 提供更好的实际物联网控制解决方案。

关于作者

Zhen Zhou 获得了上海交通大学软件工程硕士学位。他于 2011 年加入英特尔,担任开发者关系部门移动赋能团队的应用工程师。他与内部利益相关者以及外部 ISV、SP 和运营商合作,在新用户模型计划和 Intel Atom 处理器、传统 Intel® 架构和嵌入式 Intel 架构平台上的原型开发方面进行合作。

Intel® 物联网开发者中心

立即开始创新!Intel® 物联网开发者计划提供知识、工具、套件以及专家社区,助您快速轻松地将您的创新想法转化为物联网解决方案。

通过用于 Intel® Edison 和 Intel® Galileo 平台的 Intel® IoT Developer Kit 实现您的梦想,并将其变为现实。这些套件功能多样,性能优化,并且是完全集成的端到端物联网解决方案,支持各种编程环境、工具、安全、云连接和硬件。

如需更多资源并了解新的 Intel® 物联网开发者套件 v1.0 如何帮助您简化物联网项目

© . All rights reserved.