查看: 3863|回复: 10

[intel程序猿笔记] 将英特尔® 实感™ 技术与英特尔® 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(下一代计算)
软件什么是英特尔® 实感™ 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 开发板。
截图201904121254139940.png
图 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 页面设置书签:
截图201904121254166968.png
图 2. Grove Starter Kit Plus - 英特尔® 物联网 (IoT) 版

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

针对英特尔® Edison 开发板的代码
我们首先需要构建代码接收端。 连接 Grove 套件和 Arduino breakout 开发板,并将 LED 插座套件 v1.3 连接至 D2,如图 6 所示。
截图201904121254356501.png
图 6. 在 Arduino* 扩展板上连接 LED 插座套件 v1.3 和 Grove Kit D2
将 USB 端口连接至您的 PC 或英特尔 NUC,使用 Windows* Device Manager 查找英特尔® Edison 开发板所使用的串行端口。 如图 7 所示,所使用的串行端口为 “COM16” 。 当开发板连接 PC 后,Windows 自动检测开发板,并分配端口。
截图201904121254397202.png
图 7. Windows* Device Manager 以及英特尔® Edison Board 的 Virtual Com 端口
在 Tools 下的 Arduino IDE 中,我们选择 “Intel® Edison” 为开发板, “COM16” 为端口,如图 8 和图 9 所示。
截图201904121254435251.png
图 8. Arduino* IDE 中的开发板选择
截图201904121254479570.png
图 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 所示,为 本示例选择手指张开手势。
截图201904121254567829.png
图 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 所示。
截图201904121255015562.png
图 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
除非适用法律规定或以书面形式达成一致,否则根据该许可发布的软件以“按原样 ”方式提供,未提出任何明确或隐含的担保或条件。 请查看该许可,了解规定许可权限 和限制条件的特定语言。

原文链接

hnyzcj  版主

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

赞大圣
回复

使用道具 举报

孙毅  初级技匠
 楼主|

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


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

使用道具 举报

孙毅  初级技匠
 楼主|

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


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

使用道具 举报

大连林海  初级技神

发表于 2016-1-15 15:47:58

大圣舞起来 舞起来
回复

使用道具 举报

孙毅  初级技匠
 楼主|

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

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

shaking shaking
回复

使用道具 举报

大连林海  初级技神

发表于 2016-1-15 16:24:20

回复

使用道具 举报

凌风清羽  中级技匠

发表于 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


归来被妖精揍
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail