×

带有AWS Alexa语音控制和IR火力的Blaster

消耗积分:0 | 格式:zip | 大小:3.24 MB | 2023-01-31

分享资料个

描述

Stormtroopers Blaster:粒子和 AWS

当我第一次看到 hackster.io 星球大战主题比赛时,我知道我必须提交参赛作品。作为《星球大战》的长期粉丝和制作者,这似乎是一个很好的机会,也是我接触粒子光子的机会。

几年前,我制作了一个纸质冲锋队头盔,这是最初想法的来源。这个概念是升级头盔并将其连接到 AWS Alexa Skill/Echo 以远程发出命令。有了这个概念,我很幸运地收到了光子!在考虑如何实际实施该解决方案时,我决定不戴头盔,而使用冲击波枪会更有趣,并提供一些不同的交互。 

Particle 应用程序非常简单,我很惊讶设置粒子以从 Alexa Lambda 函数接收命令是多么容易。基本上是一个物联网设备在不同的线程上接收值。现在,在冲击波/粒子方面,该设备通过与 MP3 触发器的串行连接接受命令来播放不同的音频剪辑,并且通过命令可以更改您按下触发器时播放的剪辑(眩晕或正常)。注意,我在Photon和MP3板之间的串行连接上纠结了很长时间,一定要 在.ino文件中包含:#include "application.h" 并且一定要连接两块板之间的GND。

将来,我计划包括一个可以查询的温度探测器,并保留将在 Web GUI 上更新的触发器拉动计数器。

在 Amazon Echo 方面,我构建了一个 Alexa Skill 来与 blaster 交互。这同样非常容易设置,需要注意的是您实际上只需要更改 index.js 文件中的一些内容,否则不要触及 alexaskill.js 文件。此外,您还需要将索引、alexaskill、node_modules 文件夹和 package.json 文件压缩在一起,并作为一个集合上传到 AWS Lambda 函数。它在故障排除期间有点痛苦,但在你掌握了它之后又能正常工作。 

示例语句:

用户:Stormtrooper,启动你的冲击波 BLASTER:启动效果

用户:Stormtrooper,将你的冲击波枪设置为眩晕 BLASTER:'Set for stun'

用户:Stormtrooper,站岗 BLASTER:“你站岗”

用户:冲锋队,你爸爸是谁?BLASTER:'我是你的父亲'

要创建新的 Alexa 技能集,您需要创建

  • 将处理语音输入的服务(带有 NodeJS 的 AWS Lambda)
  • 定义语音输入操作的 Intent Schema
  • 示例话语文件,其中包含所有可能的语音输入及其相应的意图。

以下是应用程序的示例话语、意图模式和槽:

BlasterCommand Power {on|onoff} your blaster
BlasterCommand Power {on|onoff}
BlasterCommand Begin power {on|onoff}
BlasterCommand Power {up|onoff} your blaster
BlasterCommand Power {up|onoff}
BlasterCommand Begin power {up|onoff}

BlasterCommand Power {off|onoff} your blaster
BlasterCommand Power {off|onoff}
BlasterCommand Begin power {off|onoff}
BlasterCommand Power {down|onoff} your blaster
BlasterCommand Power {down|onoff}
BlasterCommand Begin power {down|onoff}

BlasterCommand Set your blaster to {stun|strength}
BlasterCommand All blasters set to {stun|strength}
BlasterCommand Set to {stun|strength}
BlasterCommand Set your blaster to {normal|strength}
BlasterCommand All blasters set to {normal|strength}
BlasterCommand Set to {normal|strength}

BlasterCommand Don't {fail|motivation} me again
BlasterCommand Stand {guard|motivation}
BlasterCommand Who is your {daddy|father}
BlasterCommand Tell me about your {daddy|father}
BlasterCommand Who is your {dad|father}
BlasterCommand Who is {father|father}

HelpIntent help
HelpIntent help me
HelpIntent what can I ask you
HelpIntent get help
HelpIntent to help
HelpIntent to help me
HelpIntent what can you do
HelpIntent what do you do
HelpIntent how do I use you
HelpIntent how can I use you
HelpIntent what can you tell me

 

{

  "intents": [

    {

      "intent": "BlasterCommand",

      "slots": [

        {

          "name": "onoff",

          "type": "LITERAL"

        },

        {

          "name" :"strength",

          "type": "LITERAL"

        },

        {

          "name": "motivation",

          "type": "LITERAL"

        },

        {

          "name": "father",

          "type": "LITERAL"

        }

      ]

    },

    {

      "intent": "HelpIntent",

      "slots" : []

    }

  ]

}

 

pYYBAGPXWbSAdb4sAACqdp5osdc858.jpg
 

从上面可以看出,应用程序有两个意图 BlasterCommand 和 HelpIntent 当您告诉 Alexa(或Stromtrooper  /blaster)执行任何命令时,将调用 BlasterCommand。 HelpIntent 在您寻求帮助时被调用。

在意图架构中,您可以看到插槽部分。这些是传递给 AWS Lambda 函数的参数。这些参数的值在话语文件中定义。在这里你可以看到这些包括{stun|strength} , {daddy|father} 等...   

当 Alexa 处理您的语音输入时,它会为所有指定的插槽调用 AWS 技能。然后,Node.js 应用程序使用托管的 AWS Lambda 函数。您可以在下面链接的 GitHub 存储库中查看这些文件中的每一个和 Node.js 应用程序。

安装

这些安装步骤取自 Alexa 技能集示例之一。

AWS Lambda 设置

  • 转到 AWS 控制台并单击 Lambda 链接。注意:确保您位于美国东部,否则您将无法将 Alexa 与 Lambda 一起使用。
  • 单击创建 Lambda 函数或立即开始按钮。
  • 将 Lambda 函数命名为“Stormtrooper_Blaster”。
  • 转到 src 目录,选择所有文件然后创建一个 zip 文件,确保 zip 文件不包含 src 目录本身,否则 Lambda 功能将无法运行。
  • 将 .zip 文件上传到 Lambda
  • 将处理程序保留为 index.handler(这是指 zip 中的主 js 文件)。
  • 创建一个基本执行角色并单击创建。
  • 返回 Lambda 主页面,点击“Actions”->“Add Event Source”
  • 选择 Alexa Skills Kit 并点击提交。
  • 单击您的 Lambda 函数名称并复制 ARN,以便稍后在 Alexa 技能设置中使用

Alexa 技能设置

  • 转到 Alexa 控制台 ( https://developer.amazon.com/edw/home.html ) 并单击添加新技能。
  • 将“Stormtrooper_Blaster”设置为技能名称,将“storm trooper”设置为调用名称,这是用来激活你的技能的。例如你会说:“Alexa,告诉风暴骑兵站岗”
  • 为技能端点选择 Lambda ARN 并粘贴从上面复制的 ARN。点击下一步。
  • 从包含的 IntentSchema.json 中复制 Intent Schema。
  • 从随附的 SampleUtterances.txt 中复制示例话语。点击下一步。
  • [可选]返回技能信息选项卡并复制appId。将 appId 粘贴到变量 APP_ID 的 index.js 文件中,然后使用此更改更新 lambda 源 zip 文件并再次上传到 lambda,此步骤确保 lambda 函数仅服务于来自授权源的请求。
  • 您现在可以开始测试您的示例技能了!您应该能够访问 Echo 网页 ( http://echo.amazon.com/#skills ) 并查看您的技能已启用。
  • 为了对其进行测试,请尝试说出下面“示例”部分中的一些示例话语。
  • 您的技能现已保存,一旦您完成测试,您就可以继续发布您的技能。

建造冲击波

 
 
 
poYBAGPXWbaAUxkBAABrOlYP9Vk939.jpg
 
1 / 5Blaster 结束与扬声器特写
 

演示 

 

 

 

 

 

更新

随着提交时间的延长,我添加了一个简洁的功能。我在发射器的尖端安装了一个 IR LED,并将其连接到由发射器的触发器控制的电路/逻辑。这使得玩具枪可以“射击”Arduino 驱动的 Stormtrooper 以及打开/关闭电视。如果有人正在观看您不喜欢的节目(请参见上面的演示),这将特别有用...

pYYBAGPXWbqAE_XIAALg6y2OIJk620.jpg
带 IR 尖端的 Blaster 和带伺服/IR 接收器的 Stormtrooper 
 

 


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

评论(0)
发评论

下载排行榜

全部0条评论

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