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

带有 Alexa 和 Arduino 的动画智能灯

组件和用品

Arduino UNO
Arduino Nano 也可以使用。 Arduino Mega 可能有助于驱动更多 LED 像素。
× 1
Raspberry Pi 3 B 型
× 1
NeoPixel strip
可以使用任何 WS8212 LED 灯条。
× 1

应用和在线服务

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

关于这个项目

为什么选择灯带

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

项目概况

有这个项目所需的组件。

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

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

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

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

亚马逊物联网

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

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

创建物联网事物

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

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

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

我们首先需要创建一个安全策略 对于我们的“东西”。转至安全> 政策 菜单,然后点击创建政策 按钮并输入以下信息:

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

现在我们可以创建物联网 事情 .

  • 选择管理 > 事情 菜单并通过单击注册事物来创建一个新的 AWS IoT 事物 按钮(或创建 按钮在右上角)然后在创建一个单一的东西 .
  • 在名称字段中输入“LS01”。保留其他字段的默认值,然后单击 Next .
  • 点击创建证书 一键创建证书中的按钮 部分。
  • 为您的设备和根 CA 下载 3 个证书。对于根 CA,您可能需要右键单击并保存它。
  • 下载证书后,点击激活 按钮。
  • 点击附加政策 按钮,然后选择 LightStripPolicy 您之前已创建,然后单击注册事物 .

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

配置 Raspberry PI 以收听“Thing”

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

sudo pip3 安装 AWSIoTPythonSDK 

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

mkdircd /home/pi/LightStripwget https://github.com/bportaluri/LightStrip/archive/master.zipunzip master.zip 

复制您在 /home/pi/LightStrip/LightStrip-master/pi 中创建 IoT Thing 时下载的四个证书 文件夹。

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

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

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

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

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

启动lightstrip.py脚本如下。

sudo python3 lightstrip.py 

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

sudo python3 lightstrip.py /dev/ttyACM0 

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

要验证一切正常,请返回 AWS IoT 控制台并选择 Manage> Things 菜单然后打开LS01 设备。选择阴影 菜单,您将看到设备阴影状态。

点击编辑 链接影子文档部分并将以下 JSON 文档粘贴到影子状态框中。

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

这是你应该看到的。

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

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

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

此时,我们可以通过 ASW IoT 服务控制我们的 LED 灯条,因此您应该为自己感到自豪。

AWS Lambda 函数

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

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

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

点击创建函数 按钮。点击从头开始创作 并配置如下:

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

记下右上角的 Lambda ARN ID。

点击LightStrip 框调出功能代码部分。

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

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

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

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

这就是整个事情的样子。

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

Alexa 技能

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

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

转至 Alexa> Alexa Skills Kit(入门) .

点击添加新技能 按钮并在技能信息中输入以下数据 标签:

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

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

选择交互模型 菜单,然后点击Launch Skill Builder 按钮。

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

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

现在点击配置 菜单。

在服务端点类型中选择 AWS Lambda ARN 然后粘贴上面提到的 Lambda 函数 ARN。

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

将 Alexa 技能连接到 Lambda 函数

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

配置如下:

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

你完成了

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

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

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

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

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

增强和改进

开机自动启动AlaWeb

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

添加和调整动画

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

代码

灯带
这个项目你需要的所有代码https://github.com/bportaluri/LightStrip

示意图


制造工艺

  1. 带有 Arduino 的用于飞行模拟器的 LCD 面板
  2. 用于 FS2020 的带有 Arduino 的开关/LED 面板
  3. Arduino 带蓝牙控制 LED!
  4. 智能鞋(自动系带和发电)
  5. Arduino Quadruped
  6. 使用 Arduino 和 MPU6050 控制伺服电机
  7. 使用 Bolt 和 Arduino 控制 LED 亮度
  8. u-blox LEA-6H 02 GPS 模块,带有 Arduino 和 Python
  9. 使用 Arduino 的简单智能机械臂
  10. 使用 Arduino 进行语音识别和合成
  11. 使用 Arduino Uno 控制 LED 矩阵
  12. 4x4x4 LED 立方体,带有 Arduino Uno 和 1sheeld