亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Alexa 控制 LED 通过 Arduino Yún

组件和用品

Arduino Yun
× 1
亚马逊 Alexa 亚马逊回声
× 1
LED(通用)
× 1
Micro SD 卡
× 1

应用和在线服务

亚马逊网络服务 AWS IoT
亚马逊网络服务 AWS Lambda
亚马逊 Alexa Alexa 技能套件

关于这个项目

动机

自从我用 Alexa 内置智能镜子以来,我一直在寻找更多方法来连接我们家中的各种硬件和家庭自动化设备。当我听说新的 Alexa 智能家居 API 允许您直接控制自定义设备时,我决定尝试一下。

这个 Echo 控制的圣诞树使用了旧版本的 API,但作为一个很好的起点,让我指向了面向物联网的 Arduino Yún。这为您提供了一个方便的 Linux 系统和一个微控制器。

我为自己设定的任务是相当于智能家居技能的“你好词”……只需使用我的声音打开和关闭 LED。因为我周围有一个 2x3 LED 阵列,但我决定打开和关闭它以获得风格点。

可以在下面找到完整的详细信息,但结果是这样的!

项目概况

该项目旨在将 Arduino Yún 板连接到 Alexa Smart Home v3 技能。这是使用 Alexa 智能家居技能 (v3)、AWS Lambda 函数、AWS IoT Thing 和订阅 IoT Thing 的 Arduino Yún 完成的。

在下图中,您可以看到该项目涉及打开灯的所有主要部分。

我建议一次拿一个,然后边走边测试。项目中没有什么是非常具有挑战性的,但是有很多相互关联的部分。因此,如果您在解决此问题时有点摸不着头脑,请不要气馁。

我会认为每一步都是一个小项目,每个可能需要 1 个多小时。

第 1 步:创建智能家居技能和互联 Lambda。

在这里,您创建一个智能家居技能,创建一个 Lambda 函数,并将这两者链接在一起。本教程很好地涵盖了这个过程。确保按照 LWA 步骤获取技能配置中使用的客户端 ID 和客户端密码。

在这个阶段,如果您能够登录到 Alexa 仪表板并发现您的新智能家居设备(此时只是一个 Lambda 函数响应),那么您就有了一个良好的开端。

请注意,该教程使用 Python 3.6,但我使用 Python2.7。您可以复制 handle_discovery 来自我的 lambda 函数的一部分,但这就是此时可以工作的全部内容。

第 2 步:创建物联网事物。

如果您不能做任何事情,发现就没有多大用处,因此让我们通过创建 AWS IoT Thing 为其提供连接。

这可以按照此页面上的步骤完成。我们将使用您创建的“事物影子”,它是事物状态的副本,以及所需的更改。 Arduino 将订阅一个通知提要,该提要发布对此事物影子的更改(“增量”)。在此处查看此链接以获取有关 Thing Shadows 的更多信息。

创建 Thing 后,导航到 Thing IoT Web 仪表板中的安全选项卡并下载公钥、私钥和证书。完成此操作后,单击“激活”,这将为您提供根证书颁发机构密钥。也保存这个。您的 Arduino 将使用这些来对 IoT 影子进行身份验证。

导航到事物的阴影选项卡,然后单击编辑。为您的影子添加一个属性,使其看起来像:

{ "reported":{ "light":"on" } }  

第 3 步:将您的 Lambda 连接到您的事物。

有了 Thing,现在您可以更新 Lambda 代码以更新事物影子。现在您可以从我的 lambda 函数中复制完整代码,但请确保保留您所做的任何与 Discovery 相关的更改。

您还应该确保与 Lambda 函数关联的 AWS IAM 角色具有“AWSIoTFullAccess”权限。您可以在 Lambda 配置 Web 仪表板的底部看到您的角色。此权限允许您连接到 AWS IoT Thing。

完成此操作后,导航至 Lambda 函数配置页面。在函数的测试选项卡下,添加一个名为“TurnOff”的指令,其中包含以下 v3 特定的 JSON。您也可以添加第二个名为“TurnOn”的测试,只需将标题名称更改为“TurnOn”即可。

{ "directive":{ "header":{ "namespace":"Alexa.PowerController", "name":"TurnOff", "payloadVersion":"3", "messageId":"1bd5d003- 31b9-476f-ad03-71d471922820", "correlationToken":"1234" }, "endpoint":{ "scope":{ "type":"BearerToken", "token":"some-access-token" }, " endpointId":"appliance-001", "cookie":{} }, "payload":{} } }  

当您运行 TurnOn 和 TurnOff 测试时,您应该看到 Thing Shadow 报告了与操作一致的所需状态。如果你看到这个结果,一切都很好。

第 4 步:设置您的 Arduino Yún。

是时候设置 Arduino Yún 硬件了。我发现本指南比 Arduino 指南更有用。一些注意事项 - 如果您是 Windows 用户,请在格式化 SD 时确保使用 FAT32(不支持 exFAT)。在我连接到以太网之前,我也无法正确看到“升级”页面。配置完成后,wifi 工作得很好。

当您看到此选项并按照以下步骤操作时,您就完成了这一步:

您还应该能够成功通过 ssh 连接到您的 Arduino。我建议您也运行“df -h”并寻找表明您的 SD 卡已添加的卷。

在这个阶段打开 Arduino IDE 并验证您可以运行 Blink 示例也很好。

第 6 步:将您的 Yún 连接到 AWS IoT。

随着 Arduino 的启动和运行,让我们让它与物联网事物对话。这是通过安装 AWS Arduino IoT SDK 并运行示例草图来监控 Thing Shadow deltas 来完成的。

我建议从本教程开始,它可以很好地引导您完成 SDK 安装过程。请注意 Windows 用户,如果您使用的是 cygwin,只需按照 Mac/Linux 说明进行操作(我对“预期”依赖项没有任何问题)。特别是,从您的主机系统运行以下脚本会让生活变得更轻松:

./AWSIoTArduinoYunInstallAll.sh

该教程以将 AWS-IoT-SDK 添加到 Arduino IDE 结束。现在,当您打开 Arduino IDE 时,您应该会在 File->Examples->AWS-IoT-Arduino-Yun-Library 下找到 ShadowThing 示例。

打开此草图,并编辑 aws_iot_config.h 文件以包含您的相关端点和证书/密钥名称。

运行此草图应该会显示一个串行输出,指示连接状态成功。如果您在 IoT 仪表板中更改事物影子,您应该会在串行记录器中收到通知。

如果您在此阶段遇到问题,请确保您的证书位于正确的路径中,并确认您已将 Root-CA 文本正确复制到文件中。

第 7 步:将您的 Yún 连接到 AWS IoT。

现在剩下的实际上就是处理对 Arduino 上 Thing Shadow 的更改。您应该能够简单地复制我草图的内容。

我的草图基本上只是 ThingShadow 草图示例,除了它专门寻找关键“光”的变化。收到这些后,它会根据灯是“开”还是“关”将 ledArray 中的所有引脚设置为高或低。

该 LEDArray 包括板载引脚 13,因此无需插入额外的 LED,您将看到板载 YUN LED 根据您的语音命令打开和关闭。如果你想要一个像我使用的更高级的 LED 立方体,请查看这个项目,它会告诉你如何连接它。然后只需将正引脚编号添加到我草图中的 ledArray。

当您能够要求您的 Alexa 设备打开和关闭您的自定义智能设备时,您就会知道您已完成此步骤。

如果这没有按预期工作,我建议在 Web 仪表板中尝试使用您的 Lambda TestOn 和 TestOff 函数。这将为您提供有关可能出现问题的更多信息。

对您遇到的任何未涵盖的问题发表评论,我会尽快解决它们!

第 9 步:庆祝!

如果你做到了这一点,那就太好了! Arduinos 几乎可以做任何你想做的事情,现在你知道如何通过 Alexa 用一个简单的语音命令来启动它。通过多次打开和关闭灯来庆祝您的成就。物联网世界就是你的牡蛎!

代码

项目的 Lambda 和 Arduino 代码
.ino 和 .h 文件用于 Arduino Sketch,而 lambda_function 用于 AWS Lambda Cloudcode>

制造工艺

  1. Amazon Alexa 控制 Chromecast
  2. 通过蓝牙控制的树莓派机器人
  3. MajorTom:Alexa 语音控制的 ARDrone 2.0
  4. 手势控制互动桌灯
  5. Arduino + LEDs + MIDI 键盘 + MuseScore =Piano Tutor
  6. Alexa 通过 Raspberry Pi 控制 LED
  7. 操纵杆控制的遥控车
  8. Nunchuk 控制机械臂(使用 Arduino)
  9. 语音控制机器人
  10. 通过以太网控制的机械臂
  11. Arduino 控制的钢琴机器人:PiBot
  12. Wi-Servo:Wi-Fi 浏览器控制的伺服电机