10015| 17
|
[intel程序猿笔记] NEWTON 项目—— 智能家庭物联网控制完整解决方案 |
1. intel独家授权转载【intel开发人员专区】文章。 2. 定期为创客小主po上最全最细最专业的intel项目教程或另类态度。 3. DF创客社区“创客召集令”带你玩转intel,更多惊喜,颠覆你想象。 原文链接 简介 “智能家庭” 这一术语专门用于描述各种广泛的功能,这些功能支持用户通过智能手机、平板电脑和笔记本电脑控制和管理家庭设备,例如通过智能手机应用远程控制恒温器。 不过,许多人认为智能家庭存在两大主要劣势:没有统一的解决方案,缺乏实用性。 Newton 是英特尔的最新创新项目之一,能够有效缓解这些问题。 问题“没有统一的解决方案”: 用户希望做出自己的选择。 他们希望购买智能设备,比如苹果、三星、腾讯或小米的电视、冰箱、空调。但制造商都各自开发了自己的智能家庭解决方案(例如,制造商们使用的通信协议各不相同)。 几乎无法形成标准化生态系统。 “缺乏实用性”: 之前的智能家庭物联网控制解决方案包括: 语音控制:可能会受到背景噪音的影响;电话控制或其他远程控制器:便捷性不足,因为涉及到取电话、启动相关应用,搜索想要控制的物联网设备等;通过摄像头进行手势识别:依赖于光照条件和在房间内所站的位置/方向。 Newton 项目Newton 旨在提供一款高级整体解决方案,以支持智能家庭物联网控制。
我们开发了一款可用于智能家庭物联网控制的高级整体解决方案 — Newton 项目。 该系统包含所有主要平台(英特尔® 酷睿™ 处理器、英特尔® Centrino* 处理器技术、英特尔® 凌动™ 处理器、ARM* 移动平台)和所有物联网平台(英特尔® Edison 开发板、英特尔® Galileo 开发板、Raspberry*、Spark*、Mbed*、Freescale*、Arduino Uno* 等)之间的连接。 因此,Newton 项目能够实时连接运行于所有当前主流操作系统(Windows*、Linux*、Android*)和 NonUI-OS(Mbed*、Contiki*、RIOT*、Spark*、OpenWRT*、Yocto*、WindRiver*、VxWorks*、Raspbian* 等)的平台。 智能家庭厂商通常定义一套应用层通信协议,但这些协议相对比较封闭。 我们在 Newton 项目中使用 CoAP(受限应用协议),该软件协议旨在支持简易的电子设备通过互联网进行交互式通信。 CoAP 协议基于 RESTful 框架,可转化为 HTTP 协议以轻松构建智能网关。 Newton 项目中 CoAP 协议的基本设计过程如下所示。 为将该创意支持的所有操作系统进行分类,英特尔® Galileo 开发板、英特尔® Edison 开发板、UNO、和 Spark 开发板均支持 Arduino 编程标准。 通用物联网 LPC1768 开发板支持 Mbed 和 RIOT 操作系统。 Mbed 是面向联网设备(基于 ARM)的平台和操作系统,有利于通过调用相应对象轻松地运行硬件资源。 RIOT 是能够支持多线程和多种不同开发板的开源操作系统。 它的程序可由标准 C 语言编写而成。 LPC1768 芯片需使用外部 Wi-Fi* 模块进行通信。 Windows、Linux 和 Android 也可轻松适应 CoAP。 Newton 项目的软件架构如下所示。 实施 Newton 项目的操作系统连接
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 function 解析从网络或串行端口接收的十六进制数据,并将数据转化为 CoAP_packet_t 结构。 CoAP_handle_req 函数分析接收的 CoAP 数据包并做出适当响应。 CoAP_build 函数将响应数据包转换成十六进制数据。 用于构建 CoAP 服务器的关键源代码如下所示。
Arduino 是一款可创建 Arduino 软件和硬件标准的开源电子原型构建平台。 英特尔® Edison 开发板、英特尔® Galileo 开发板和 Spark 核心开发板均遵循 Arduino 标准。 它主要包含两种函数:设置函数和循环函数。 设置函数对硬件进行初始化,并在循环函数前调用一次。 循环函数是一种死循环,可用于执行主函数。 如欲将 COAP 添加至 Arduino 开发板,只需将三个文件(CoAP.h、CoAP.c、endpoints.c)添加至项目,并根据 microCoAP 中的 main.c (如下所示)修改设置函数和循环函数。
Mbed 是面向对象的 C++通用库,专门针对 ARM Cortex*-M 处理器而开发。 我们可以通过使用相关类运行通用输入/输出 (GPIO) 和其他硬件资源。 不过没有默认 Wi-Fi 模块或通用库。 这时,我们可以通过 UART 转 WIFI 模块将 Wi-Fi 功能添加至 Mbed。 Class WIFI 基于 UART-WIFI 模块的产品说明开发而成,其所有函数均可向 UART-WIFI 模块发送相关字符串。 您需要将三个文件(CoAP.h、CoAP.c、endpoints.c)添加至项目,并根据 microCoAP 项目中的 main.c 文件修改 main.c 文件。 为此,只需使用 make 命令,因为 Makefile 中的所有设置均已完成,如下所示。
RIOT 是面向物联网的开源开发商友好型操作系统,支持多种不同的开发板,比如 Mbed LPC1768 和 Spark Core 开发套件。 它支持 C 和 C++ 语言编程。 测试文件夹包含许多可连接硬件的示例 API。 与 Mbed 类似,CoAP 服务器的实施方式是将 Mbed 的 Wi-Fi 类更改为 C 函数,然后修改与串行端口相关的 API。 不过,试验过程中它通常发生崩溃,因此仅仅面向测试阶段。 如欲编译该服务器,请使用根文件夹中的 “BOARD=Mbed_lpc1768 make clean all flash” 命令,并使用 “BOARD=Mbed_lpc1768 make term” 监控串行端口并获得来自 Mbed 的打印信息。 面向 RIOT 的 CoAP 服务器代码结构如下所示。
Contiki 是一款多进程开源操作系统。 示例文件夹包含多个使用 API 控制硬件的示例。 它也不包含默认 Wi-Fi 模块。 为实施 CoAP 服务器,可使用 RIOT 的类似函数并重写 UART 示例。 如欲进行编译,可使用 “TARGET=cc2530dk make” 命令,并使用 jlink 下载二进制程序。 查看以下示例代码。
OpenWRT 是一款面向路由器的 eMbedded Linux。 它支持标准 Linux API, 因此其 microCoAP 代码可以直接使用。 在软件包文件夹中设置 microCoAP 项目,并根据其他项目的 Makefile 修改 Makefile。 然后在根目录中运行 make 命令。 编译后的应用将位于 bin 文件夹。 该应用可通过 ftp 或 usb 存储上传至开发板。 最后,使用 opkg 命令安装 CoAP*.ipk,以安装 CoAP 应用;CoAP 将被安装至 OpenWRT。 将 “/usr/bin/CoAP &” 添加至 /etc/rc. 本地文件。 面向 OpenWRT 的 CoAP 服务器代码结构如下所示。 Newton 项目中的实际解决方案要想成为物联网的实际解决方案,必须能够通过自然手势控制所有物联网设备,无需穿戴任何电子可穿戴设备,也不受外界光照/噪音/等因素的影响。 通过使用 9 轴陀螺仪检测用户的手部动作,可以实施类似这种解决方案。 模式识别算法能够实时分析数据,并检测用户的位置、方向和手势。 通过计算用户与物联网设置之间的相对位置/方向,系统能够识别用户所面向的设备。 进一步计算用户的手部方向和手势后,就可选择和控制目标物联网设备 Newton 项目演示案例以下是我们实验室进行的演示案例,使用 Newton 项目连接和控制基于不同操作系统的设备。 这些演示案例包括环境(图 1)、控制开发板(英特尔® Edison 开发板(图 2))、控制安卓设备(图 3)、控制机械手臂(图 4),以及控制机器人汽车(图 5)。 图 1: 实验室环境演示案例 未来计划 Newton 项目是一款专门用于智能家庭物联网控制的高级整体解决方案,并且易于使用,支持用户连接所有想要连接的智能家庭物联网设备。 它是一款低成本解决方案,用户无需使用任何手持设备。 此外,它还不受外界因素(比如光照、噪音级别等)的影响。 与所有开源项目一样,Newton 项目还有很大的提升空间。 我们下一步计划改进手势识别、启动性能,并集成可穿戴设备。 例如,据说,下一代 Google* Glass 将配备更大的凌镜,并采用英特尔凌动处理器。对于 Newton 项目来说,这将是更为出色的实际物联网控制解决方案。 关于作者 Zhen Zhou 拥有上海交通大学软件工程专业的硕士学位。 他于 2011 年加入英特尔,在开发商关系部门移动支持团队担任一名应用工程师。 他与内部相关各方与外部 ISV、SP 和 运营商密切合作,负责在英特尔凌动处理器、传统英特尔架构和嵌入式英特尔® 架构平台等领域设计新的使用模式以及开发原型。 原文链接 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed