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

2016-01-151.1万
AI 快速预览详细 收起
本文介绍了如何将英特尔® 实感™ 3D摄像头与英特尔® Edison开发板结合使用,构建创意性、实用性和娱乐性兼备的应用。通过两个示例,展示了手势控制LED灯和语音合成朗读温度传感器数据的具体实现方法。硬件清单包括英特尔® Edison开发板、Grove Starter Kit Plus、英特尔® 实感™ 3D摄像头F200等。软件方面需要安装Arduino IDE、Visual Studio和英特尔实感SDK。通过这些工具,用户可以轻松构建物联网项目,实现多种功能。
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(下一代计算)
软件什么是英特尔® 实感™ 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

硬件详情
英特尔® 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 开发板。
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图1
图 1. 安装于 Arduino* breakout 开发板的英特尔® Edison 开发板

Grove Starter Kit Plus
该套件的全称为 “Grove Starter Kit Plus - Intel® IoT Edition”,最初针 对英特尔 Galileo 第二代开发板而设计。 幸运的是,它通过 Arduino breakout 开发板可完 全兼容英特尔® Edison 开发板。
该套件(如图 2 所示)旨在借助传感器、制动器和屏蔽器简化运行和原型构建。 它包含一 个可兼容 Arduino 的屏蔽器以及四 (4) 个标准化针脚连接器。 这些连接器供应给可连接线缆 的 IO 端口,其中的线缆也可轻松连接套件内的传感器和控制器。 这意味着,您可轻松构建项 目,无需摆弄小型电线,上拉/下拉电阻,也无需担心极性问题。
Grove 套件的生产商 Seeed Studios 还在线提供许多有用资源。
我建议克隆或下载 Sketchbook Starter 库,具体请访问: http://Github.com/Seeed-Studio/Sketchbook_Starter_Kit_V2.0
请访问下列链接,为 Grove Wiki 页面设置书签:
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图2
图 2. Grove Starter Kit Plus - 英特尔® 物联网 (IoT) 版

英特尔® 实感™ 3D 摄像头 F200
英特尔® 实感™ 3D 摄像头可为系统集成版,也可为外设版,专门针对游戏互动、娱乐、摄 影和内容创建而构建。 该 3D 摄像头是一个复杂的传感器,从某种程度上说,它是物联网的一 部分(毕竟,它名为实感摄 像头)。 该摄像头的最低要求包括:USB3、第四代英特尔® 酷睿™ 处理器,以及 8GB 硬盘空间。
该摄像头(如图 3 所示)是一枚全 1080p 彩色摄像头,并配有一个深度传感器,可为 PC 呈现 3D 视图效果和浸入式体验。
您可以访问 https://software.intel.com/zh-cn/realsense/devkit,购买包含该摄像头的完 整开发人员套件。
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图3
图 3. 英特尔® 实感™ 3D 摄像头 F200
采用第四代英特尔® 酷睿™ 处理器或更高版本的英特尔® 下一代计算(英特尔® NUC)
英特尔 NUC 是一种可选设备,可用作英特尔实感 3D 摄像头和英特尔® Edison 模块的中心 枢纽,也可发挥其他功能,比如保存和检索云数据,执行进一步分析等等。 它不属于开发的必 备条件,因为您可通过 USB 串行端口连接摄像头和英特尔® Edison breakout 开发板套件。 然而,如果使用 NUC,可处理摄像头传来的信息并将其发送至开发板,以激活告警系统、发动 机,LED 等输出。开发板上的传感器所传来的信息可发送至英特尔 NUC,以使用英特尔实感 SDK 激活语音合成功能。
摄像头要求 USB3、8GB RAM 和第四代英特尔酷睿处理器或更高版本,然而英特尔 NUC(如 图 4 所示)更容易满足这些要求。 英特尔 NUC 还具备一项优势,即用户界面。如有需要,借 助 HDMI 端口,可轻松将该界面用作计算机。 如果没有安装必备软件的 PC,英特尔 NUC 会是 一个相对经济的选项。
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图4
图 4. 采用第四代英特尔® 酷睿™ 处理器的英特尔® NUC

安装软件并开始编写代码
我们开始编写两种代码示例:
  • 捕捉英特尔实感 3D 摄像头的手势,以控制英特尔® Edison 开发板的 LED。
  • 使用英特尔® Edison 开发板的温度传感器数据,以激活英特尔实感 SDK 的语音 合成功能。

面向英特尔® 物联网平台的 Arduino IDE
您需要下载专门准备的 Arduino IDE 版本,以将 Sketch 部署至您的开发板。 当前的版本 为 1.6.0,位于:
面向英特尔® Edison 开发板的驱动程序
您还需要下载和安装面向英特尔® Edison 开发板的驱动程序,地址为:
它应该位于 “Driver Software” 下方页面的最后一个链接。 当前版本为 1.2.1。

如需了解更多说明,请参考入门指南:
https://software.intel.com/zh-cn/iot/library/edison-getting-startedVisual Studio
Visual 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 版),下载链接为:
测试英特尔® Edison 开发板
在开始演示之前,请确保您能够运行 Blink 示例 sketch。 它位于 examples -> 01.Basics -> Blink 文件夹中的 Arduino IDE 下载软件包。

安装 Visual Studio* 和英特尔® 实感™ SDK
安装 Visual Studio 非常简单,但安装英特尔实感 SDK 时,需要将 3D 摄像头插入 USB3 。 如果您可以通过 C++ 和 C# 示例浏览桌面上出现的英特尔实感 SDK Sample Browser(图 5 ),说明安装成功。 还提供特定于摄像头的示例;我们将使用 Hand Viewer 示例。
安装完 SDK 后,必须单独下载 F200 Depth Camera Manager。 下载地址为:
如果没有摄像头管理器,代码示例将无法正确初始化。
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图5
图 5. 英特尔® 实感™ Sample Browser
示例 #1,将信号从英特尔® 实感™ 3D 摄像头发送至英特尔® Edison 开发板
关于第一种示例,我们将构建一个简单的应用,使用手势发送摄像头的信号,以控制开发板 上的 LED。

针对英特尔® Edison 开发板的代码
我们首先需要构建代码接收端。 连接 Grove 套件和 Arduino breakout 开发板,并将 LED 插座套件 v1.3 连接至 D2,如图 6 所示。
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图6
图 6. 在 Arduino* 扩展板上连接 LED 插座套件 v1.3 和 Grove Kit D2
将 USB 端口连接至您的 PC 或英特尔 NUC,使用 Windows* Device Manager 查找英特尔® Edison 开发板所使用的串行端口。 如图 7 所示,所使用的串行端口为 “COM16” 。 当开发板连接 PC 后,Windows 自动检测开发板,并分配端口。
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图7
图 7. Windows* Device Manager 以及英特尔® Edison Board 的 Virtual Com 端口
在 Tools 下的 Arduino IDE 中,我们选择 “Intel® Edison” 为开发板, “COM16” 为端口,如图 8 和图 9 所示。
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图8
图 8. Arduino* IDE 中的开发板选择
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图9
图 9. Arduino* IDE 中的端口选择
最后,我们需要进行编程。 由于开发板用作输出设备,下列几行代码将控制其串行端口, 即 1 表示开灯,0 表示关灯。
  1. const int ledPin = 2;     // the number of the pushbutton pin
  2. void setup() {
  3.   // initialize the LED pin as an output:
  4.   pinMode(ledPin, OUTPUT);
  5.   Serial.begin(9600);
  6. }
  7. void loop() {
  8.   if (Serial.available()>0)
  9.   /* read the most recent byte */
  10.   {
  11.     int tmp = Serial.parseInt();
  12.     if(tmp == 0)
  13.     {
  14.       // turn LED off:
  15.       digitalWrite(ledPin, LOW);
  16.     }
  17.     else if (tmp == 1)
  18.     {
  19.         // turn LED on:
  20.         digitalWrite(ledPin, HIGH);
  21.     }
  22.   }
  23. }
复制代码
现在,我们已完成面向英特尔® Edison 开发板的示例代码。

英特尔® 实感™ 应用代码
示例 C# F200 的下方为 Hand Viewer 应用。 点击右侧的源,打开 RSSDK/FF_HandsViewer.cs 文件夹。 将整个文件夹复制到桌面,以便我们修改项目。
我们使用的特定手势为张开手指。 如果愿意,您还可以换做其他手势。 如图 10 所示,为 本示例选择手指张开手势。
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图10
图 10. 使用 Hand Viewer 追踪手指张开手势
在 MainForm.cs 下修改和添加下列代码。 该程序相对简单,只需宣布串行端口,追踪最终 手势即可。 如果手势不同,我们需要更改 LED 的标记。 UpdateInfo 即现有示例代码更新用 户的手势。 我们可使用多种状态追踪是否提供手指张开手势。 如果是,我们将 SerialPort 的标记设置为 1,打开 LED。 手势做完后,我们向标记发送 0,关闭 LED。
  1. using System.IO.Ports;
  2. public partial class MainForm : Form
  3. {
  4.         private SerialPort _serialPort;
  5. private int _lastGesture;
  6.         …
  7. public MainForm(PXCMSession session)
  8. {
  9.         …
  10.         _serialPort = new SerialPort();
  11. _serialPort.PortName = "COM16"; //Serial port Edison is connected to
  12.             _serialPort.BaudRate = 9600;
  13.             _serialPort.ReadTimeout = 500;
  14.             _serialPort.WriteTimeout = 500;
  15. }
  16. private void WriteToSerialPort(int value)
  17. {
  18.             if (_lastGesture != write)
  19.             {
  20.                 Console.WriteLine(write.ToString());
  21.                 _serialPort.Write(write.ToString());
  22.             }
  23.             _lastGesture = write;
  24. }
  25. public void UpdateInfo(string status,Color color)
  26. {
  27.             if (status.Contains("spreadfingers") || status.Contains("spreadfingers"))
  28.             {
  29.                 WriteToSerialPort(1);
  30.             }
  31.             else
  32.             {
  33.                 WriteToSerialPort(0);
  34.             }         
  35. }
  36.         private void Start_Click(object sender, EventArgs e)
  37.         {
  38.             …
  39.             _serialPort.Open();
  40.         }
  41.        private void Stop_Click(object sender, EventArgs e)
  42.         {
  43.             …
  44.             _serialPort.Close();
  45.         }
复制代码
如果所有步骤正确,点击开始按钮,追踪手指张开。 如果手指张开,LED 将亮起,如图 11 所示。
将英特尔® 实感™ 技术与英特尔® EDISON开发平台结合使用图11
图 11. 使用手势张开手势通过英特尔® Edison 开发板点亮 LED。
示例 #2,使用英特尔® 实感™ 应用(用作输出)读取英特尔® Edison 开发板的数据
在本示例中,我们将连接至英特尔® Edison 开发板的温度传感器用作输入,并使用英特尔 实感应用的语音合成功能赋予传感器数据人性化。

针对英特尔® Edison 开发板的代码
Grove* - 温度传感器 v1.1 是一款模拟传感器,我们可通过 Grove 套件将其插入开发板的 A0。 下列 Arduino 代码可读取 Celsius 的温度数据。 代码每隔 15 秒有一个延时,以便扬 声器完成文本-语音部分。 您可以根据自己的需求调整该延时。 您可以编写其他逻辑,以发送 温度过高或过低告警。
  1. #include <math.h>
  2. int a;
  3. float temperature;
  4. int B=3975;                  //B value of the thermistor
  5. float resistance;
  6. void setup()
  7. {
  8.   Serial.begin(9600);  
  9. }
  10. void loop()
  11. {
  12.   a=analogRead(0);
  13.   resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
  14.   temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
  15.   Serial.print("Current temperature is ");
  16.   Serial.print(temperature);
  17.   Serial.println(" celcius");
  18.   delay(15000);
  19. }
复制代码

英特尔® 实感™ 应用
Speech Synthesis 位于 Common Samples 下方。 复制源文件夹 “ambitious, persistence, resilient risk taker”,与复制 Hand Viewer 示例的做法相同。 界面 保持原样,但使用语音合成的目的变成了朗读开发板的传感器数据。 我们仍然使用 “COM16”。
按照如下方式更改 MainForm.cs 文件:
  1. using System.IO.Ports;
  2. public partial class MainForm : Form
  3. {
  4.         private SerialPort _serialPort;
  5.         private static bool _continue;
  6.         protected static string curr_module_name;
  7.         protected static uint curr_language;
  8.         protected static int curr_volume;
  9.         protected static int curr_pitch;
  10.         protected static int curr_speech_rate;
  11.         Thread readThread = new Thread(Read);
  12.         static public void Read()
  13.         {
  14.             while (_continue)
  15.             {
  16.                 try
  17.                 {
  18.                     string message = _serialPort.ReadLine();
  19.                     Console.WriteLine(message);
  20.                     VoiceSynthesis.Speak(curr_module_name, (int)curr_language, message, curr_volume, curr_pitch, curr_speech_rate);
  21.                 }
  22.                 catch (TimeoutException) { }
  23.             }
  24.         }
  25.         public MainForm(PXCMSession session)
  26.         {
  27.             …
  28.             _serialPort = new SerialPort();
  29.             _serialPort.PortName = "COM16"; //Serial port Edison is connected to
  30.             _serialPort.BaudRate = 9600;
  31.             _serialPort.ReadTimeout = 500;
  32.             _serialPort.WriteTimeout = 500;
  33.         
  34.             _serialPort.Open();
  35.             _continue = true;
  36.             readThread.Start();
  37.         }
  38.         private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
  39.         {
  40.             _continue = false;
  41.             readThread.Join();
  42.             _serialPort.Close();
  43.         }
  44.         …        
  45. }
复制代码
如果所有步骤正确,程序将每隔 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
除非适用法律规定或以书面形式达成一致,否则根据该许可发布的软件以“按原样 ”方式提供,未提出任何明确或隐含的担保或条件。 请查看该许可,了解规定许可权限 和限制条件的特定语言。

原文链接

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
丄帝De咗臂
丄帝De咗臂
大圣,归来吧
孙毅
孙毅
作者
回复丄帝De咗臂
归来被妖精揍
凌风清羽
凌风清羽
怎么赶脚一半是广告呢,:lol
孙毅
孙毅
作者
回复凌风清羽
被你发现了。。。其实是软文。。。吼吼吼
qq815076543322
qq815076543322
大圣舞起来 舞起来
qq815076543322
qq815076543322回复孙毅
评论内容
孙毅
孙毅
作者
回复qq815076543322
shaking shaking
hnyzcj
hnyzcj
赞大圣
孙毅
孙毅
作者
回复hnyzcj
转自 intel 开发者社区。。。谢谢
孙毅
孙毅
作者
回复hnyzcj
转自 intel 开发者社区。。。谢谢
- 没有更多了 -