孙毅 发表于 2016-1-15 09:52:10

将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用

1. intel独家授权转载【intel开发人员专区】文章。
2. 定期为创客小主po上最全最细最专业的intel项目教程或另类态度。
3. DF创客社区“创客召集令”带你玩转intel,更多惊喜,颠覆你想象。

简介在后手机时代,我们发现,智能设备与我们从未想到过的事物实现互连,构建了一个称为 “物联网” 或 IoT 的世界。 IoT 设备仍处于起步阶段,比如手表带有计步器,汽 车可通过手机发动。 IoT 设备比较有意思的是,它们可配备各种低成本传感器,以读取温度、 湿度、心率,以及手机或电脑无法显示的数值,从而帮助我们在第一时间访问这类信息。 此外 ,借助英特尔® Edison 平台和英特尔® Quark™ 处理器,我们可轻松构建原型,以收集传感器 信息,开发创新型产品。英特尔另一大创新是英特尔® 实感™ 技术。 借助英特尔实感 3D 摄像头和 SDK,应用能够 执行手势检测、面部分析、背景分割、语音识别,语音合成等功能,成为可完成多种检测的超 级传感器。 结合英特尔® Edison 套件的多种用法及输出,我们可构建许多创意性、实用性与 娱乐性兼备的应用。本文将列举两个关于此类应用的示例,其中一个示例将英特尔实感 3D 摄像头用于输入、英 特尔® Edison 开发板用于输出,并使用 SDK 触发开发板上的 LED 灯。 另一个示例将英特尔® Edison 开发板用于输入、英特尔实感 3D 摄像头用于输出,并使用语音合成朗读开发板的传感 器数据。硬件
[*]带有 Arduino breakout 开发板的英特尔® Edison 开发板
[*]Seeed Grove* – Starter Kit Plus - 英特尔® 物联网 (IoT) 版
[*]第四代英特尔® 酷睿™ 处理器或更高版本
[*]8GB 可用硬盘空间
[*]USB 3.0
[*]英特尔® 实感™ 3D 摄像头 F200(系统集成 或外设版)
[*](可选)采用第四代英特尔酷睿处理器的英 特尔® NUC(下一代计算)
软件
[*]Arduino IDE: https://software.intel.com/zh-cn/articles/install-arduino-ide-on-intel-iot- platforms
[*]带有服务包 1 或更高版本的 Microsoft Visual Studio* 2010-2013 https://www.visualstudio.com/
[*]英特尔实感 SDK https://software.intel.com/zh-cn/intel-realsense-sdk
什么是英特尔® 实感™ SDK?英特尔实感 SDK 与软硬件和 3D 摄像头结合使用时,可提供面部分析、手部和手指追踪、 语音识别、语音合成、增强现实对象追踪器、背景分割,增强现实及其他功能。 当前的 SDK 可支持 Microsoft .NET 4.0 框架、Unity* Pro 4.1.0 或更高版本、Processing* 2.2.1 或更 高版本,以及 JDK 1.7.0_11 或更高版本。 在本文的示例中,我们将使用 .NET 和 C#。借助英特尔实感 SDK 开发而成的常见应用包括浸入式协作、游戏、自然交互、交互式故事 ,以及英特尔®捕捉和共享,但这些只是冰山一角。如欲了解有关英特尔实感技术的更多信息,请访问 http://www.intel.com/content/www/us/en/architecture-and- technology/realsense-overview.html。您可以访问 https://software.intel.com/zh-cn/intel-realsense-sdk/download,下载免费 SDK。
硬件详情英特尔® Edison 开发板是低成本、通用型计算平台系列计划的首款硬件。 经过专门设计, 它有助于快速、轻松地构建物联网项目的原型,同时还可提供面向商业化的产品就绪型路径。英特尔® Edison 开发板使用 22 纳米双核英特尔® 凌动™ SoC,其运行速度为 500MHz。 它 支持 40 个 GPIO,并以微小外形集 1GB LPDDR3 RAM、4 GB EMMC 存储,以及双频 Wi-Fi* 和 蓝牙* 于一身。它运行完整 Linux 内核。为了发挥其最佳性能,您可能希望编写硬件级 Linux 代码。此外,英特尔® Edison 开发板的 Linux 版本以 Linux 程序的形式包含 Arduino 实施。 简单来说,这意味着您可以编写熟悉的 Arduino sketch,并在开发板上运行这些 sketch。 这 就是我们下面要进行的操作。如欲了解更多有关英特尔® Edison 开发板的信息,请访问: http://www.intel.com/content/www/us/en/do-it- yourself/edison.html
Arduino* Breakout 开发板Arduino breakout 开发板可用于两种用途。 第一,它提供更大的原型构建平台,以轻松访 问 IO 针脚。 第二,它提供可兼容 Arduino 的硬件平台,这意味着我们能够同时使用标准 Arduino 屏蔽器和英特尔® Edison 开发板。 图 1 所示为安装于 Arduino breakout 开发板的 Edison 开发板。图 1. 安装于 Arduino* breakout 开发板的英特尔® Edison 开发板
Grove Starter Kit Plus该套件的全称为 “Grove Starter Kit Plus - Intel® IoT Edition”,最初针 对英特尔 Galileo 第二代开发板而设计。 幸运的是,它通过 Arduino breakout 开发板可完 全兼容英特尔® Edison 开发板。该套件(如图 2 所示)旨在借助传感器、制动器和屏蔽器简化运行和原型构建。 它包含一 个可兼容 Arduino 的屏蔽器以及四 (4) 个标准化针脚连接器。 这些连接器供应给可连接线缆 的 IO 端口,其中的线缆也可轻松连接套件内的传感器和控制器。 这意味着,您可轻松构建项 目,无需摆弄小型电线,上拉/下拉电阻,也无需担心极性问题。如欲了解更多信息或购买套件,请访问: http://www.seeedstudio.com/depot/Grove-starter-kit-plus-Intel-IoT- Edition-for-Intel-Galileo-Gen-2-p-1978.htmlGrove 套件的生产商 Seeed Studios 还在线提供许多有用资源。我建议克隆或下载 Sketchbook Starter 库,具体请访问: http://Github.com/Seeed-Studio/Sketchbook_Starter_Kit_V2.0请访问下列链接,为 Grove Wiki 页面设置书签: http://www.seeedstudio.com/wiki/index.php? title=Main_Page#Grove图 2. Grove Starter Kit Plus - 英特尔® 物联网 (IoT) 版
英特尔® 实感™ 3D 摄像头 F200英特尔® 实感™ 3D 摄像头可为系统集成版,也可为外设版,专门针对游戏互动、娱乐、摄 影和内容创建而构建。 该 3D 摄像头是一个复杂的传感器,从某种程度上说,它是物联网的一 部分(毕竟,它名为实感摄 像头)。 该摄像头的最低要求包括:USB3、第四代英特尔® 酷睿™ 处理器,以及 8GB 硬盘空间。该摄像头(如图 3 所示)是一枚全 1080p 彩色摄像头,并配有一个深度传感器,可为 PC 呈现 3D 视图效果和浸入式体验。您可以访问 https://software.intel.com/zh-cn/realsense/devkit,购买包含该摄像头的完 整开发人员套件。图 3. 英特尔® 实感™ 3D 摄像头 F200采用第四代英特尔® 酷睿™ 处理器或更高版本的英特尔® 下一代计算(英特尔® NUC)英特尔 NUC 是一种可选设备,可用作英特尔实感 3D 摄像头和英特尔® Edison 模块的中心 枢纽,也可发挥其他功能,比如保存和检索云数据,执行进一步分析等等。 它不属于开发的必 备条件,因为您可通过 USB 串行端口连接摄像头和英特尔® Edison breakout 开发板套件。 然而,如果使用 NUC,可处理摄像头传来的信息并将其发送至开发板,以激活告警系统、发动 机,LED 等输出。开发板上的传感器所传来的信息可发送至英特尔 NUC,以使用英特尔实感 SDK 激活语音合成功能。摄像头要求 USB3、8GB RAM 和第四代英特尔酷睿处理器或更高版本,然而英特尔 NUC(如 图 4 所示)更容易满足这些要求。 英特尔 NUC 还具备一项优势,即用户界面。如有需要,借 助 HDMI 端口,可轻松将该界面用作计算机。 如果没有安装必备软件的 PC,英特尔 NUC 会是 一个相对经济的选项。更多英特尔 NUC 详情,请访问: http://www.intel.com/content/www/us/en/nuc/products- overview.html图 4. 采用第四代英特尔® 酷睿™ 处理器的英特尔® NUC
安装软件并开始编写代码我们开始编写两种代码示例:
[*]捕捉英特尔实感 3D 摄像头的手势,以控制英特尔® Edison 开发板的 LED。
[*]使用英特尔® Edison 开发板的温度传感器数据,以激活英特尔实感 SDK 的语音 合成功能。

面向英特尔® 物联网平台的 Arduino IDE您需要下载专门准备的 Arduino IDE 版本,以将 Sketch 部署至您的开发板。 当前的版本 为 1.6.0,位于:https://software.intel.com/zh-cn/articles/install-arduino-ide- on-intel-iot-platforms面向英特尔® Edison 开发板的驱动程序您还需要下载和安装面向英特尔® Edison 开发板的驱动程序,地址为:https://software.intel.com/zh-cn/iot/hardware/edison/downloads它应该位于 “Driver Software” 下方页面的最后一个链接。 当前版本为 1.2.1。
如需了解更多说明,请参考入门指南:https://software.intel.com/zh-cn/iot/library/edison-getting-startedVisual StudioVisual Studio 是一套全面的开发人员工具和服务,可 帮助您创建面向多种平台的应用。 英特尔 SDK 的最低软件要求包括 Visual Studio 和 Windows 8.1。 Visual Studio 可支持 C、C++、VB.NET、C#、F#、M、Python*、Ruby, JavaScript* 等多种语言。 本具体指南使用 C#。您可以免费下载 Visual Studio Express 版本。 通过面向学生的 DreamSpark* 和面向初学者的 BizSpark* 等程序,可免费获取商用版 Visual Studio。访问 https://www.visualstudio.com/ 和 https://msdn.microsoft.com/en-us/default.aspx,了解更多关于 Visual Studio 和 C# 的信息。英特尔® 实感™ SDK英特尔 SDK 支持开发人员充分发挥 3D 功能以及上述诸多功能。 当前版本为 4.0.0.112526(或 Gold R2 版),下载链接为:https://software.intel.com/zh-cn/intel-realsense-sdk/download测试英特尔® Edison 开发板在开始演示之前,请确保您能够运行 Blink 示例 sketch。 它位于 examples -> 01.Basics -> Blink 文件夹中的 Arduino IDE 下载软件包。https://software.intel.com/zh-cn/get-started-arduino-blink
安装 Visual Studio* 和英特尔® 实感™ SDK安装 Visual Studio 非常简单,但安装英特尔实感 SDK 时,需要将 3D 摄像头插入 USB3 。 如果您可以通过 C++ 和 C# 示例浏览桌面上出现的英特尔实感 SDK Sample Browser(图 5 ),说明安装成功。 还提供特定于摄像头的示例;我们将使用 Hand Viewer 示例。安装完 SDK 后,必须单独下载 F200 Depth Camera Manager。 下载地址为:https://software.intel.com/zh-cn/intel-realsense-sdk/download.如果没有摄像头管理器,代码示例将无法正确初始化。图 5. 英特尔® 实感™ Sample Browser示例 #1,将信号从英特尔® 实感™ 3D 摄像头发送至英特尔® Edison 开发板关于第一种示例,我们将构建一个简单的应用,使用手势发送摄像头的信号,以控制开发板 上的 LED。
针对英特尔® Edison 开发板的代码我们首先需要构建代码接收端。 连接 Grove 套件和 Arduino breakout 开发板,并将 LED 插座套件 v1.3 连接至 D2,如图 6 所示。图 6. 在 Arduino* 扩展板上连接 LED 插座套件 v1.3 和 Grove Kit D2将 USB 端口连接至您的 PC 或英特尔 NUC,使用 Windows* Device Manager 查找英特尔® Edison 开发板所使用的串行端口。 如图 7 所示,所使用的串行端口为 “COM16” 。 当开发板连接 PC 后,Windows 自动检测开发板,并分配端口。图 7. Windows* Device Manager 以及英特尔® Edison Board 的 Virtual Com 端口在 Tools 下的 Arduino IDE 中,我们选择 “Intel® Edison” 为开发板, “COM16” 为端口,如图 8 和图 9 所示。图 8. Arduino* IDE 中的开发板选择图 9. Arduino* IDE 中的端口选择最后,我们需要进行编程。 由于开发板用作输出设备,下列几行代码将控制其串行端口, 即 1 表示开灯,0 表示关灯。const int ledPin = 2;   // the number of the pushbutton pin
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
if (Serial.available()>0)
/* read the most recent byte */
{
    int tmp = Serial.parseInt();
    if(tmp == 0)
    {
      // turn LED off:
      digitalWrite(ledPin, LOW);
    }
    else if (tmp == 1)
    {
      // turn LED on:
      digitalWrite(ledPin, HIGH);
    }
}
}现在,我们已完成面向英特尔® Edison 开发板的示例代码。
英特尔® 实感™ 应用代码示例 C# F200 的下方为 Hand Viewer 应用。 点击右侧的源,打开 RSSDK/FF_HandsViewer.cs 文件夹。 将整个文件夹复制到桌面,以便我们修改项目。我们使用的特定手势为张开手指。 如果愿意,您还可以换做其他手势。 如图 10 所示,为 本示例选择手指张开手势。图 10. 使用 Hand Viewer 追踪手指张开手势在 MainForm.cs 下修改和添加下列代码。 该程序相对简单,只需宣布串行端口,追踪最终 手势即可。 如果手势不同,我们需要更改 LED 的标记。 UpdateInfo 即现有示例代码更新用 户的手势。 我们可使用多种状态追踪是否提供手指张开手势。 如果是,我们将 SerialPort 的标记设置为 1,打开 LED。 手势做完后,我们向标记发送 0,关闭 LED。using System.IO.Ports;

public partial class MainForm : Form
{
      private SerialPort _serialPort;
private int _lastGesture;
      …
public MainForm(PXCMSession session)
{
      …
      _serialPort = new SerialPort();
_serialPort.PortName = "COM16"; //Serial port Edison is connected to
            _serialPort.BaudRate = 9600;
            _serialPort.ReadTimeout = 500;
            _serialPort.WriteTimeout = 500;
}

private void WriteToSerialPort(int value)
{
            if (_lastGesture != write)
            {
                Console.WriteLine(write.ToString());
                _serialPort.Write(write.ToString());
            }
            _lastGesture = write;
}

public void UpdateInfo(string status,Color color)
{


            if (status.Contains("spreadfingers") || status.Contains("spreadfingers"))
            {
                WriteToSerialPort(1);
            }
            else
            {
                WriteToSerialPort(0);
            }         
}

      private void Start_Click(object sender, EventArgs e)
      {
            …
            _serialPort.Open();
      }

       private void Stop_Click(object sender, EventArgs e)
      {
            …
            _serialPort.Close();
      }如果所有步骤正确,点击开始按钮,追踪手指张开。 如果手指张开,LED 将亮起,如图 11 所示。图 11. 使用手势张开手势通过英特尔® Edison 开发板点亮 LED。示例 #2,使用英特尔® 实感™ 应用(用作输出)读取英特尔® Edison 开发板的数据在本示例中,我们将连接至英特尔® Edison 开发板的温度传感器用作输入,并使用英特尔 实感应用的语音合成功能赋予传感器数据人性化。
针对英特尔® Edison 开发板的代码Grove* - 温度传感器 v1.1 是一款模拟传感器,我们可通过 Grove 套件将其插入开发板的 A0。 下列 Arduino 代码可读取 Celsius 的温度数据。 代码每隔 15 秒有一个延时,以便扬 声器完成文本-语音部分。 您可以根据自己的需求调整该延时。 您可以编写其他逻辑,以发送 温度过高或过低告警。#include <math.h>
int a;
float temperature;
int B=3975;                  //B value of the thermistor
float resistance;

void setup()
{
Serial.begin(9600);
}

void loop()
{
a=analogRead(0);
resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
Serial.print("Current temperature is ");
Serial.print(temperature);
Serial.println(" celcius");

delay(15000);
}
英特尔® 实感™ 应用Speech Synthesis 位于 Common Samples 下方。 复制源文件夹 “ambitious, persistence, resilient risk taker”,与复制 Hand Viewer 示例的做法相同。 界面 保持原样,但使用语音合成的目的变成了朗读开发板的传感器数据。 我们仍然使用 “COM16”。按照如下方式更改 MainForm.cs 文件:using System.IO.Ports;

public partial class MainForm : Form
{
      private SerialPort _serialPort;
      private static bool _continue;
      protected static string curr_module_name;
      protected static uint curr_language;
      protected static int curr_volume;
      protected static int curr_pitch;
      protected static int curr_speech_rate;

      Thread readThread = new Thread(Read);

      static public void Read()
      {
            while (_continue)
            {
                try
                {
                  string message = _serialPort.ReadLine();
                  Console.WriteLine(message);
                  VoiceSynthesis.Speak(curr_module_name, (int)curr_language, message, curr_volume, curr_pitch, curr_speech_rate);
                }
                catch (TimeoutException) { }
            }
      }

      public MainForm(PXCMSession session)
      {
            …
            _serialPort = new SerialPort();
            _serialPort.PortName = "COM16"; //Serial port Edison is connected to
            _serialPort.BaudRate = 9600;
            _serialPort.ReadTimeout = 500;
            _serialPort.WriteTimeout = 500;
      
            _serialPort.Open();
            _continue = true;
            readThread.Start();
      }
      private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
      {
            _continue = false;
            readThread.Join();
            _serialPort.Close();
      }
      …      
}如果所有步骤正确,程序将每隔 15 秒朗读温度传感器数据。 您可根据自己的个人需求修 改该程序,比如更改界面,或将 VoiceSynthesis.cs 和 VoiceOut.cs 复制到您自己的项目。
展望未来我希望这两个示例有助于开发人员和企业家拓展思路,激发灵感,以充分利用这些技术的强 大功能。 我曾构建了一个名为 Anti-Snoozer 的原型,其中的英特尔实感 3D 摄像头可检测出 驾驶人员出现疲劳状态,然后通过英特尔 Edison 开发板发送警报,以提醒驾驶人员打起精神 。 这两类技术的强大潜能,可幻化出数千种完美组合。 那么,您将创造出哪种组合?
关于作者Peter Ma 拥有 14 年的 web、移动应用和物联网应用开发经验。 他曾效力于五家新兴企业 ,致力于数据库、web 后端、web 前端、移动(Android* 和 iOS*)应用及物联网开发。 他是 一名英特尔® 软件创新者,使用英特尔® 技术构建各种演示。目前,Peter 定居于旧金山,是一名快速原型专家,专门为大型企业和新兴企业提供咨询服 务。 闲暇期间,他参加过许多创客马拉松活动,经常获胜! 在他人眼中,他是一位胸怀大志 、意志顽强、精力旺盛、敢于冒险的人。Peter Ma ©2015 年版权所有本文件根据 Apache 2.0 许可(“许可”)发布;文件使用需遵守许可规定。 如欲获取该许可的副本,请访问:http://www.apache.org/licenses/LICENSE-2.0除非适用法律规定或以书面形式达成一致,否则根据该许可发布的软件以“按原样 ”方式提供,未提出任何明确或隐含的担保或条件。 请查看该许可,了解规定许可权限 和限制条件的特定语言。
原文链接

hnyzcj 发表于 2016-1-15 10:53:48

赞大圣

孙毅 发表于 2016-1-15 12:10:28

hnyzcj 发表于 2016-1-15 10:53
赞大圣

转自 intel 开发者社区。。。谢谢

孙毅 发表于 2016-1-15 12:10:28

hnyzcj 发表于 2016-1-15 10:53
赞大圣

转自 intel 开发者社区。。。谢谢

大连林海 发表于 2016-1-15 15:47:58

大圣舞起来 舞起来

孙毅 发表于 2016-1-15 16:15:27

大连林海 发表于 2016-1-15 15:47
大圣舞起来 舞起来

shaking shaking
{:5_168:}

大连林海 发表于 2016-1-15 16:24:20

孙毅 发表于 2016-1-15 16:15
shaking shaking

{:5_160:}{:5_172:}

凌风清羽 发表于 2016-1-15 19:06:56

怎么赶脚一半是广告呢,:lol

丄帝De咗臂 发表于 2016-1-17 19:19:02

大圣,归来吧

孙毅 发表于 2016-1-19 14:46:14

凌风清羽 发表于 2016-1-15 19:06
怎么赶脚一半是广告呢,

被你发现了。。。其实是软文。。。吼吼吼

孙毅 发表于 2016-1-19 14:46:42

丄帝De咗臂 发表于 2016-1-17 19:19
大圣,归来吧

归来被妖精揍{:5_163:}
页: [1]
查看完整版本: 将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用