当我第一次看到 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 技能集,您需要创建
以下是应用程序的示例话语、意图模式和槽:
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" : []
}
]
}
从上面可以看出,应用程序有两个意图 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 设置
Alexa 技能设置
演示
随着提交时间的延长,我添加了一个简洁的功能。我在发射器的尖端安装了一个 IR LED,并将其连接到由发射器的触发器控制的电路/逻辑。这使得玩具枪可以“射击”Arduino 驱动的 Stormtrooper 以及打开/关闭电视。如果有人正在观看您不喜欢的节目(请参见上面的演示),这将特别有用...
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !