随着物联网(IoT)技术的不断发展,Intel®公司推出了许多创新产品,其中Intel® RealSense™技术与Intel® RealSense™ 3D摄像头和SDK尤为引人注目。这项技术能够实现手势识别、面部分析、背景分割、语音识别和语音合成等多种功能,SDK为CSharp、Java、JavaScript、Processing和Unity等软件框架提供了支持。开发者可以基于熟悉的框架轻松开始创建应用程序。
Intel® Edison平台是另一项激动人心的技术。物联网开发者可以利用它构建原型,收集传感器信息或向其他设备发送控制信号,创造出创新的产品。Intel® Edison已经集成了Wi-Fi和蓝牙低能耗(LE),因此可以连接到互联网,创建真正的物联网解决方案。
在Peter Ma的文章中,他展示了如何将Intel® RealSense™技术与Intel® Edison开发平台结合起来使用。其中一个示例使用Intel® RealSense™ 3D摄像头作为输入,Intel® Edison板作为输出,SDK触发板上的LED灯。在第二个示例中,使用Intel® Edison板作为输入,Intel® RealSense™ 3D摄像头作为输出,使用语音合成来读取板上的传感器数据。
这些项目激发了基于JavaScript创建类似项目的想法。在本文中,将使用Intel® RealSense™技术的JavaScript框架将手部手势数据发送到服务器,服务器将数据发送以触发通过Intel® Edison连接的蜂鸣器和LED灯。
以下是实现该项目所需的硬件列表:
以下是实现该项目所需的软件列表:
设置Intel® RealSense™非常简单。首先,将Intel® RealSense™ 3D F200摄像头连接到USB 3.0端口。安装摄像头驱动程序和Intel® RealSense™ SDK: 安装SDK后,导航到安装位置并使用浏览器打开JavaScript示例RSSDK\framework\JavaScript\FF_HandsViewer\FF_HandsViewer.html,它将执行一些检查。
在浏览器中点击链接安装Intel® RealSense™ SDK Webapp Runtime,然后重新启动浏览器并再次尝试打开文件。然后尝试在摄像头前举起手,如果一切顺利,将在浏览器上看到手势数据的可视化。
注意底部文本:
Gesture:{"timeStamp": ,"handId": ,"state": ,"frameNumber": ,"name":"spreadfinger"} ,
将发送"name":"spreadfingers"
到服务器。
复制RSSDK\framework\JavaScript\FF_HandsViewer
文件夹到另一个位置。
复制位于RSSDK\framework\common\JavaScript
的realsense.js
并将其放在FF_HandsViewer
文件夹中。
创建edisonconnect.js
文件以接收手势数据并发送到服务器,*注意:请更改服务器IP地址。
编辑sample.js
文件以拦截手势数据并将其传递给edisonconnect.js
。
编辑FF_HandsViewer.html
文件以重新定位realsense.js
文件路径,链接socket.io和edisonconnect.js
脚本。
至此,已经准备好将手势数据发送到服务器。下一步是设置服务器和Intel® Edison。
假设已经设置了一个基于Debian的Linux服务器(使用的是Ubuntu发行版),并在该机器上设置了node.js服务器。
远程登录服务器并通过SSH登录。
更新服务器。
安装Nodejs。
安装npm。
安装socket.io express。
创建文件server.js
和index.html
。
使用vim编辑server.js
文件。
编写以下脚本:
// server.js 示例代码
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(client){
console.log('a user connected');
client.on('disconnect', function(){
console.log('user disconnected');
});
});
server.listen(1337, function(){
console.log('listening at port 1337');
});
最后,运行脚本,如果看到"listening at port 1337",则表示服务器已安全运行。
Intel® Edison易于部署,Intel®提供了清晰的文档。可以在以下位置找到它:
组装Intel® Edison到Arduino板上:
运行集成安装程序:
设置串行终端连接:
将Intel® Edison连接到Wi-Fi:
安装并配置Intel® XDK IoT Edition:
现在,是时候在Intel® Edison中放置代码了,这段代码用于连接到服务器并监听服务器的任何广播。如果接收到手势数据,则Intel® Edison将触发数字引脚的开/关状态。
首先,打开Intel® XDK IoT Edition并从模板创建一个新项目。将使用数字写入模板。
编辑package.json
添加依赖项socket.io-client。
编辑main.js
连接到服务器并检查如果手势数据名称为"spreadfingers",则触发数字引脚2和数字引脚8的状态为1/开,如果接收到其他手势数据,则改回0/关状态。*请更改服务器IP地址,如果想改变引脚,请在mraa.Gpio(selectedpins)
上进行更改。
// main.js 示例代码
const mraa = require('mraa'); // 包含mraa库
const gpio2 = new mraa.Gpio(2); // 使用数字引脚2
const gpio8 = new mraa.Gpio(8); // 使用数字引脚8
gpio2.dir(mraa.DIR_OUT); // 设置为输出模式
gpio8.dir(mraa.DIR_OUT); // 设置为输出模式
const socket = require('socket.io-client')('http://服务器IP地址');
socket.on('connect', function() {
console.log('Connected to server');
});
socket.on('GestureData', function(data) {
if (data.name === 'spreadfingers') {
gpio2.write(1); // 打开引脚2
gpio8.write(1); // 打开引脚8
} else {
gpio2.write(0); // 关闭引脚2
gpio8.write(0); // 关闭引脚8
}
});
最后,安装/构建项目然后运行,*确保Intel® Edison设备已连接到互联网。
现在,让确保服务器正在运行,Intel® RealSense™笔记本电脑/计算机和Intel® Edison已连接到互联网。 可以在这里看到动作。
这是一个非常简单的项目,修改Intel® RealSense™ JavaScript框架示例脚本来发送捕获的手势数据到Node.js服务器。服务器将广播手势数据给任何socket客户端。安装了socket.io-client的Intel® Edison监听服务器的广播,如果手势数据名称为"spreadfingers",它将触发数字引脚改变状态。同样的方法可以用来创建基于面部数据、Blob数据和基于JavaScript框架的语音识别的项目。
将创造什么? Aulia Faqih - Intel®软件创新者 Intel® RealSense创新者 常驻印度尼西亚日惹,目前在UIN Sunan Kalijaga Yogyakarta任教。喜欢玩Galileo/Edison、Web和所有极客事物。