×

使用Alexa和Arduino的动画智能灯

消耗积分:0 | 格式:zip | 大小:0.18 MB | 2022-12-09

385288

分享资料个

描述

为什么灯带

我一直对可寻址的 RGB LED 灯带着迷。无穷无尽的色彩效果和动画功能一直吸引着我的创造力,所以几年前我决定为 Arduino 板开发一个名为 ALA(Arduino Light Animations)的库。Alexa 现在让我可以用我的声音控制房间的灯光和效果,这太棒了!

项目概况

有这个项目所必需的组件。

  • Amazon Alexa:自定义 Alexa 技能(Light Strip)定义语音交互模型并翻译发出到 Lambda 函数的命令(意图)。
  • Amazon Lambda :一个 Python 脚本,它从 Alexa 接收消息并将更新发送到 IoT 服务。
  • 亚马逊物联网:物联网服务存储一个“事物影子”,它代表了 RGB 条带的状态。每次影子更新时,订阅的 MQTT 客户端 (Raspberry PI) 都会收到通知。
  • Raspberry PI :这台小型 PC 运行 MQTT 客户端以接收来自 Amazon IoT 服务的消息。另一方面,它将通过 USB 端口为 Arduino 板供电并发送命令。
  • Arduino :这个不错的微控制器将运行ALA 库来驱动 LED 灯条,通过 USB 串行端口接收来自 Raspberry PI 的命令。您可以使用 Arduino Uno、Nano 或 Mega 开发板。
  • WS8212 RGB LED 灯条:这些是可寻址的 LED 灯条,因此每个 LED 灯都可以单独控制。这允许美丽多彩的灯光动画。
 
pYYBAGOSje2ALBxBAABIysDgOb8334.png
建筑层
 

项目中没有什么是非常具有挑战性的,但是有很多相互关联的部分。我建议您按照建议的结构在坚实的基础上构建您的项目,然后再继续下一步。为了使事情尽可能简单,我将项目拆分为两个子项目。

该项目的第一部分在我的Web-Controlled LED Animations with Raspberry Pi and Arduino Hackster.io 项目中有所描述,它将指导您完成连接 Raspberry PI、Arduino 板和 WS8212 LED 灯条所需的步骤。在此阶段结束时,您将能够使用网络浏览器从智能手机或 PC 控制 LED 动画。

 
poYBAGOSjjuAAYajAA1Y364Kc6g962.jpg
 

此处描述的项目的第二部分将使用 Amazon Alexa 在之前的实施中添加语音控制。要正确设置整个链条,需要执行几个步骤,因此请耐心等待并仔细按照说明操作。

亚马逊物联网

你完成硬件部分了吗?现在是上云的时候了!我们将使用 AWS IoT 平台来管理来自互联网的“事物”。

我们将使用“设备影子”,它是事物状态的副本,以及所需的更改。Raspberry PI 将订阅一个通知提要,将更改(“增量”)发布到此影子。查看此链接以了解有关 AWS IoT 平台和 API 的更多信息。

创建物联网事物

登录AWS 控制台。如果您还没有这样做,则需要创建一个免费帐户。

确保您已登录右上角的美国东部(弗吉尼亚北部)欧洲(爱尔兰)区域。

搜索“IoT”并选择AWS IoT服务。单击“开始”按钮(如果有)以关闭介绍教程。

我们首先需要为我们的“事物”创建一个安全策略转到Secure > Policies菜单,然后单击Create a Policy按钮并输入以下信息:

  • 名称:LightStripPolicy
  • 行动: *
  • 资源: *
  • 效果 - 允许:选中
  • 点击“创建”

现在我们可以创建 IoT Thing了

  • 选择Manage > Things菜单并通过单击Register a Thing按钮(或右上角的Create按钮)然后单击Create a single thing创建一个新的 AWS IoT Thing
  • 在名称字段中键入“LS01”。保留其他字段的默认值并单击下一步
  • 单击一键式证书创建部分中的创建证书按钮。
  • 为您的设备和根 CA 下载 3 个证书。对于 Root CA,您可能需要右键单击并保存它。
  • 下载证书后,单击“激活”按钮。
  • 单击Attach a Policy按钮,选择您之前创建的LightStripPolicy ,然后单击Register Thing

在继续之前,您需要记下 AWS IoT 端点。单击AWS IoT 网页左下角的设置菜单,打开它并记下端点。

 
pYYBAGOSjj2AGgqeAACdvrq4yZk427.png
 

配置 Raspberry PI 以收听“事物”

我们首先需要在 Raspberry PI 命令行上使用以下命令安装AWS IoT Device SDK for Python :

sudo pip3 install AWSIoTPythonSDK

现在从 GitHub 下载LightStrip 存储库并解压缩。

mkdir
cd /home/pi/LightStrip
wget https://github.com/bportaluri/LightStrip/archive/master.zip
unzip master.zip

将创建 IoT 事物时下载的四个证书复制到/home/pi/LightStrip/LightStrip-master/pi文件夹中。

编辑lightstripcfg.py脚本。您可以使用任何文本编辑器。以下是nano编辑器的命令。

cd /home/pi/LightStrip/LightStrip-master/pi
nano lightstripcfg.py

现在编辑设置以匹配您的配置。

  • AWSIOT:输入您之前记下的 AWS IoT 终端节点。
  • ROOT_CA:根CA证书文件名
  • CERTIFICATE:证书的文件名
  • PRIVATE_KEY:私钥文件名
  • DEVICE_NAME:保持不变为“LS01”

关闭 nano 编辑器并按“Ctrl+X”然后按“Y”保存文件。

按如下方式启动 lig​​htstrip.py 脚本。

sudo python3 lightstrip.py

该脚本将列出连接的 USB 端口。Arduino 应该连接到 /dev/ttyACM0 所以运行脚本传递这样的端口。

sudo python3 lightstrip.py /dev/ttyACM0

测试客户端将连接到 Amazon Thing Shadow 服务并订阅LS01影子设备的更改。成功连接后,客户端脚本会将其状态更新为 LS01 设备影子,并收到这样的确认消息。

 
pYYBAGOSjkeAXiPeAAEABfmFnVY693.png
 

要验证一切是否正常工作,请返回 AWS IoT 控制台并选择“管理”>“事物”菜单,然后打开LS01设备。选择阴影菜单,您将看到设备阴影状态。

单击 Shadow Document 部分中的Edit链接,并将以下 JSON 文档粘贴到 Shadow state 框中。

{
 "desired": {
   "animation": "101"
 }
}

这是你应该看到的。

 
pYYBAGOSjkmADa33AACJfv7GbC4146.png
 

单击“保存”链接时,“增量”消息将发送到 Raspberry PI 上的 MQTT 客户端,这将打开 LED 灯带。

以下 JSON 文档会将颜色变为蓝色。

{
 "desired": {
   "color": "0066CC"
 }
}

在这一点上,我们能够从 ASW 物联网服务控制我们的 LED 灯条,所以你应该为你感到骄傲。

AWS Lambda 函数

AWS Lambda 允许在云中运行代码而无需配置或管理服务器。它是 Alexa Skills Kit 之间的完美桥梁,将在该项目的最后一步启用语音控制。

登录到AWS 控制台从服务列表中,选择Lambda

确保您登录的区域与您在上一步中使用的区域相同:右上角的美国东部(弗吉尼亚北部)欧洲(爱尔兰)区域。

单击创建函数按钮。点击Author from scratch ,配置如下:

  • 名称 = LightStrip
  • 运行时 = Python 3.6
  • 角色 = 创建自定义角色。这将启动一个新选项卡。只需单击“允许”按钮即可创建一个名为 lambda_basic_execution 的新角色。
  • 现有角色:lambda_basic_execution
  • 单击创建函数按钮

记下右上角的 Lambda ARN ID。

 
poYBAGOSjlGATROHAACr1CeUVfc405.png
 

单击LightStrip框以显示功能代码部分。

代码输入类型:内联编辑代码

  • 运行时:Python 3.6
  • 处理程序:lambda_function.lambda_handler

应该已经定义了lambda_function.py脚本。将LightStrip\lambda\lambda_function.py文件中的代码粘贴到代码编辑器中。

创建另一个名为ala_controller.py的文件,并将LightStrip\lambda\ala_controller.py文件中的代码粘贴到代码编辑器中。

这就是整个事情的样子。

 
pYYBAGOSjlOAcrYhAADcRLQBIuM233.png
 

完成后,单击右上角的橙色保存按钮。

Alexa 技能

我们现在可以为 Alexa 创建 Light Strip 自定义技能。

转到Amazon Developer Console并根据需要登录。您可能需要先注册您的帐户。

转到Alexa > Alexa Skills Kit(入门)

 
pYYBAGOSjlmAe7oHAAB0bV-v_oM111.png
 

单击右上角的添加新技能按钮,然后在技能信息选项卡中输入以下数据:

  • 技能类型:自定义交互模型
  • 语言:英语(美国)
  • 名称:灯带
  • 调用名称:灯带
  • 点击保存

这创造了技能。请注意技能 ID。

 
pYYBAGOSjlyAGN5pAACJBWk-ZTQ972.png
 

选择“交互模型”菜单,然后单击“启动技能生成器”按钮。

单击代码编辑器按钮并将LightStrip/alexaskill/lightstrip_skill.json文件的内容粘贴到文本框中。

 
poYBAGOSjmeAM4QLAAC_pQhgdjE492.png
 

单击保存模型构建模型按钮。构建模型需要几分钟时间,请耐心等待。单击技能信息按钮返回技能配置页面。

现在点击配置菜单。

在服务端点类型中,选择AWS Lambda ARN ,然后粘贴您在上面记下的 Lambda 函数 ARN。

保留所有默认值并单击下面的“保存”按钮。

将 Alexa 技能连接到 Lambda 函数

返回您的 Lambda 函数。在右侧有一个预定义触发器列表。选择Alexa Skills Kit ,它将添加到您的函数中。

 
pYYBAGOSjmuAY3CwAACsVY0CPMk263.png
 

配置如下:

  • 应用程序 ID = 您在上面记下的技能 ID
  • 点击添加
  • 点击保存

你完成了

该项目现已完成。尝试以下语音命令:

  • 打开灯带
  • 打开
  • 将亮度设置为 20%
  • 将亮度设置为 50%
  • 将颜色设置为红色
  • 将颜色设置为绿松石色
  • 关掉
  • 运行令人兴奋的动画
  • 播放轻松的动画

LightStrip 技能还允许更高级的语音交互

  • 我:Alexa,打开 Light Strip
  • Alexa:欢迎使用 LightStrip - LED 灯条会发出蓝光
  • 我:启动动画
  • Alexa:你想要轻松还是刺激的动画?
  • 我:放松
  • Alexa:好的 - LED 灯带将显示随机动画
  • 我:下一个动画
  • Alexa:好的 - 将显示另一个随机动画

为了更好地理解这里的交互模型是技能的完整 VUI 图。

 
pYYBAGOSjm-Af5CuAACvwGHpHQQ320.png
光带技能VUI图
 

增强和改进

开机自动启动 AlaWeb

该项目的一个小改进是在启动时自动启动lig​​htstrip.py脚本,这样您就不需要在每次启动 Raspberry PI 或出现问题时手动启动它,而您必须重新启动。按照此说明进行操作

添加和调整动画

Light Strip cskill 已经定义了 20 个动画变化。但是,ALA 库允许您轻松地设置您自己的动画,选择动画预设、调色板和速度。您可以添加自己的动画或调整ala_controller.py脚本中的现有动画。在第 80 行左右,您将看到一个动画设置列表,您可以根据自己的喜好修改或增强这些设置。

 


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

评论(0)
发评论

下载排行榜

全部0条评论

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