×

myva-Home:语音控制家庭自动化

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-07-13

王英

分享资料个

描述

怎么运行的

安卓客户端(预建)

poYBAGSBRjWAfBfBAADWPYwCA-c468.png

pYYBAGSBRjiAZH73AAAaLgxBs6E733.jpg

加载屏幕

安卓客户端都是预制的,只要你按下麦克风并说出命令,应用程序就会抓取该命令并将其发送到 Linkit SMART 7688 Duo 指定的 IP 和端口。

poYBAGSBRjqAb27GAAAbdNoJvWU183.jpg

用户在这里发言

命令一说出,它会立即发送,并等待响应,响应将被解析为多个命令,例如 Image、Flash、Maps 和 Speak。这里是一个开灯的例子 。

代码步骤:

这是 Linkit Smart 7688 Duo 如何从 Android 客户端发送/接收的自上而下的介绍,如果您只想开始使用示例代码,请跳过此部分。 

安卓客户端:

用户按下屏幕上的麦克风

弹出 google speak 的新意图,它会提示用户何时说话

用户说出命令(“打开灯!”)

意图关闭,将任何命令变成字符串

如果屏幕上的输入与保存的文件不匹配,Android 会从保存的文件中提取当前的 Ip 和端口,然后它将使用输入的 Ip 和端口 

通过 tcp 将命令发送到服务器(Linkit Smart 7688 Duo)

等待不应超过 10 秒的响应

Linkit Smart 7688 双核服务器:

从客户端接收(“[打开灯!]”)

检查接收到的命令中的触发词(“light”和“on”)

如果它包含两个触发词,则发回自定义命令(如下)

例如,如果两个触发词都存在,则打开继电器(用于灯)

Android 客户端仍在等待响应,所以我们将给它一个命令

现在灯亮了,我们想以多种方式告诉用户,文本、图像和语音

使用库(简单解析就是它所做的一切),前提是用户可以像这样发回命令

command.Flash("开灯了!") 

和/或

command.Image("http://www.clker.com/cliparts/R/b/I/7/2/u/light-bulb-off-hi.png")

和/或

command.Speak("灯亮了")

这些命令通过 tcp 发回,python 服务器关闭连接

安卓客户端:

android 获取命令并检查它可以做什么,如果它是下面的这些命令之一

如果命令是图像,则拉取提供的 URL 并显示该图像

如果命令是 flash 则显示屏幕上提供的文本

如果命令是说话,则拉出该文本并让本地(电话默认)扬声器说出来

如果命令是地图,那么用更简单的术语来说,将提供的纬度和经度放置在地图上,手机从 gps 中提取当前值并在纬度和经度之间画一条线

android等待另一个语音输入,重复整个过程

你只需要担心这个过程的命令库,看看下面的如何使用它部分

如果一切顺利,那么这里是打开灯的示例的最终输出

pYYBAGSBRjyAORmYAAArkPGDoOE891.jpg

1 / 2 •灯亮

接线举例:

UDOO -> 射频识别

9 :: 重新开始

10 :: 社保号

11 :: 莫西

12::味噌

13::SCK

地线::地线

3.3v :: VCC

如果使用超声波放置物品

UDOO -> 超

12 :: 1k 电阻 :: 回声

13 :: 触发

地线::地线

5v :: VCC

智能 -> 继电器

p1::IN1

地线::地线

5v :: VCC

一个 -> 蚂蚁

GPSant :: GPS_Antenna

WIFIant :: Wifi_Antenna

可能还想插入电池

近地天体 ->温度 -> 气压

i2c-小线 :: 大线中的 i2c :: 大线中的 i2c

预安装

在我们可以继续设置服务器和设备之前,我们需要做/知道几件事。

了解如何使用 PuTTy 和 WinSCP(如果没有,请查看我在 https://www.hackster.io/smerkousdavid/linkit-smart-one-sensor-monitoring-7e2741上的最后一个教程 

已安装 PuTTy 和 WinSCP(如果是 Windows)

在这些设备上安装了这些库

Udoo 库 -  https://github.com/smerkousdavid/Udoo-Library 在 Udoo 上

Neo 库 -  https://github.com/smerkousdavid/Neo.GPIO 在 Neo 上

RFID 库 -  https://github.com/miguelbalboa/rfid 在 RFID 上

(可选)VncClient - 在没有显示器的情况下查看 Udoo quad/dual 和 Neo

安装

在继续之前确保完成上述步骤和接线,如果 Udoo - Rfid 或 Ultrasonic 脚本不起作用确保您在 linux 端运行 python 脚本...

以下是让所有传感器正常工作所需的所有步骤

1.安装zip

2.在桌面上解压

3.导航到“Android_App”

4. 插入安卓设备

5.使用资源管理器将apk复制到手机

6.打开手机文件资源管理器

7.导航到放置apk的地方

8. 点击 apk,它将像所有其他应用一样安装

9. 确保安装了 WinSCP 和 PuTTy

   https://winscp.net/eng/index.php

   http://www.putty.org/

10.打开WinSCP

11、通过station模式连接或者通过router admin获取SMART的Ip

12. 使用该 IP 连接到 SMART(默认登录名 = root,密码 = 您之前使用的)

13.(winSCP 的左侧)导航到“服务器” 

14. 将“Linkit_Smart_Server.py”复制到 SMART 的 /root 文件夹

15. PuTTY 开启 SMART ssh 连接

16. cd 进入'/root'

17. 运行命令'python Server.py'

18. 不要关闭窗口

19. 在计算机上导航到“传感器”(不使用 WinSCP)

20.在每个有arduino sketch的文件夹下,为你的网络修改Ip、SSID和PASSWORD值,然后刷入每个设备

21. 如果在 Udoo quad/dual copy modified arduino sketch over on flash drive

22. 用新草图在 Udoo 上闪现 Due

23. Sensors -> Neo 中的一个文件是一个名为 Home_Auto_Neo 的 python 文件

24. 将闪存驱动器复制到 Neo 并以 root 身份运行 python 脚本,而不是下面的 sudo 示例

echo udooer | sudo -S su -c 'Auto_Home_Neo.py'

25. 打开应用程序并尝试示例命令

我们呢have popcorn?

什么是时代?current temp

什么是current press尿素?

Where是我的backpack?

关闭lights on

关闭lights off

Hold on

Where是一个mammoth?

如何使用它?

您是否看到上面我如何突出显示每个单词。那是因为 Commands() 方法允许您选择从整个短语中选择特定单词的键。所以不管你怎么排词只要定位到关键词就会触发。如果两者都存在,您只需将优先级(if 语句)设置得更高。所以这里的例子是猛犸象的代码。

 

.....Android sends data, data gets inserted into from_client

if command.Find(from_client, "where", "is", "mammoth"):
    toClient = command.Flash("here!") + command.Speak("I'm a flipping mammoth") + \
    command.Image("http://vkontakte.ru/images/gifts/256/44.jpg")
    print toClient
.... toClient gets send to the phone

传感器

if command.Find(from_sensor, "POP", "END:POP"):
    pop = SensorCut(from_sensor, "::POP::", "::END:POP::")
    print "pop val: "+str(pop)

请务必查看 Linkit Smart 7688 Duo 代码中提供的示例!

 

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.jibsdb.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'myva-Home:语音控制家庭自动化',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"https://www.elecfans.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);