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

使用 Arduino 和 Alexa 打造动画智能 LED 灯带控制系统

项目概述

本项目将指导你构建一个由 Amazon Alexa 语音控制的动画智能 LED 灯带系统。系统采用分层架构:Alexa 技能处理语音指令,AWS Lambda 函数作为桥梁,AWS IoT 设备影子存储灯带状态,树莓派通过 MQTT 订阅状态变化并通过串口指挥 Arduino 驱动 WS2812B (NeoPixel) 灯带。Arduino 运行 ALA (Arduino Light Animations) 库实现丰富的灯光动画效果。

所需硬件

所需软件与云服务

系统架构

整个系统包含以下核心组件:

  1. Amazon Alexa:自定义技能 "Light Strip" 定义语音交互模型,将语音指令转换为意图发送给 Lambda。
  2. AWS Lambda (Python):接收 Alexa 请求,更新 AWS IoT 设备影子的期望状态。
  3. AWS IoT Core:维护设备影子,通过 MQTT 将影子变更(delta)推送给订阅者(树莓派)。
  4. 树莓派:运行 Python MQTT 客户端,订阅影子变更,通过串口向 Arduino 发送控制指令。
  5. Arduino + ALA 库:解析串口指令,驱动 LED 灯带播放动画、变色、调节亮度等。

分步实施指南

第一阶段:硬件基础与 Web 控制(预备项目)

首先完成 Web-Controlled LED Animations with Raspberry Pi and Arduino 项目,建立树莓派、Arduino 与灯带的物理连接,并实现通过浏览器控制动画。这一步验证硬件通信无误,为后续接入 Alexa 打下基础。

第二阶段:AWS IoT 设备影子配置

1. 创建 IoT 策略

Action: *
Resource: *
Effect: Allow

2. 注册 Thing 并下载证书

第三阶段:树莓派 MQTT 客户端部署

# 安装 AWS IoT Device SDK for Python
sudo pip3 install AWSIoTPythonSDK

# 获取项目代码
mkdir -p /home/pi/LightStrip
cd /home/pi/LightStrip
wget https://github.com/bportaluri/LightStrip/archive/master.zip
unzip master.zip

# 复制证书到项目目录
cp /path/to/downloaded/certs/* /home/pi/LightStrip/LightStrip-master/pi/

编辑 lightstripcfg.py,填入:

运行测试:

cd /home/pi/LightStrip/LightStrip-master/pi
sudo python3 lightstrip.py /dev/ttyACM0

成功连接后,在 AWS IoT 控制台的 LS01 > Shadow 页面编辑 Desired 状态:

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

灯带应立即播放动画。再尝试设置颜色:

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

第四阶段:AWS Lambda 函数创建

  1. 在同一区域创建 Lambda 函数,名称 LightStrip,运行时 Python 3.6+。
  2. 角色选择 "Create a custom role",自动生成 lambda_basic_execution。
  3. 记下右上角的 Lambda ARN。
  4. 在代码编辑器中创建两个文件:

保存后,在 Configuration > Permissions 确保角色拥有 iot:UpdateThingShadow 权限。

第五阶段:Alexa 自定义技能配置

  1. 进入 Alexa Developer Console,创建技能:
  1. 在 Interaction Model > JSON Editor 粘贴仓库 LightStrip/alexaskill/lightstrip_skill.json 内容,保存并构建模型。
  2. 在 Configuration 选择 AWS Lambda ARN,粘贴第 4 步记下的 ARN。

第六阶段:关联 Lambda 与 Alexa 技能

回到 Lambda 控制台,添加触发器 Alexa Skills Kit,应用 ID 填入技能 ID,保存。

支持的语音指令示例

用户:Alexa, open Light Strip
Alexa:Welcome to LightStrip
用户:Launch an animation
Alexa:Do you want a relaxing or exciting animation?
用户:Relaxing
Alexa:OK(播放随机舒缓动画)
用户:Next animation
Alexa:OK(切换到下一个随机动画)

进阶优化建议

开机自启动

将 lightstrip.py 加入树莓派 /etc/rc.local 或创建 systemd 服务,实现上电自动运行。

自定义动画扩展

在 ala_controller.py 第 80 行左右定义了 20 种动画预设,可按需修改颜色调色板、速度、效果组合,或新增动画 ID 并在 Alexa 交互模型中添加对应语音槽位。

原理图与代码仓库

完整代码: GitHub - bportaluri/LightStrip

原理图: 参见项目附件中的 Fritzing 图,展示 Arduino 与灯带、电源连接细节。

故障排查提示

制造工艺

  1. Arduino Nano飞行模拟2020控制面板——LCD与CDI显示
  2. Arduino 飞行模拟器 2020 实体开关面板
  3. Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
  4. 智能自系鞋带鞋:内置压电发电与计步功能
  5. 从零构建智能 Arduino 四足机器人:完整指南
  6. Arduino + MPU6050 姿态控制舵机:SG90 与 MG996R 精准跟随实战
  7. Bolt IoT + Arduino UNO 实现 6 路 LED 无级调光
  8. u-blox LEA-6H GPS 模块:Arduino 与 Python 集成指南
  9. DIY 智能 Arduino 机械臂:主从控制与动作记忆教程
  10. 在 Arduino Due 上实现语音识别与语音合成 - BitVoicer Server 方案
  11. Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
  12. 用 Arduino Uno 和 1Sheeld 构建 4x4x4 LED 立方体 - 互动音乐可视化项目