Alexa 语音控制 Arduino 智能家居中枢:基于 Yun + PubNub + AWS Lambda 全栈实现
项目概览
构建一套完整的 Alexa 语音控制智能家居系统:Amazon Echo Dot 接收语音 → AWS Lambda 解析意图 → PubNub MQTT 云消息总线 → Arduino Yun 执行设备控制/传感器读取/拍照邮件。支持 4 路灯光、温湿度查询、蜂鸣器报警、USB 摄像头安防拍照邮件推送。提供现成 Skill(可直接启用)与完整自建教程(技能创建、Lambda 部署、安全配置、Yun 环境搭建)。
系统架构
- Amazon Echo Dot:语音交互入口
- Alexa Skill + AWS Lambda (Node.js):自然语言理解、意图路由、MQTT 消息发布
- PubNub MQTT Broker:双通道 (
AHC_IOT_01下行控制、AHC_IOT_02上行上报) - Arduino Yun:Linux (OpenWRT) + AVR 双核,桥接网络与硬件 IO,运行 Python 发送邮件、fswebcam 拍照
硬件清单
- Arduino Yun ×1(核心,含以太网/Wi-Fi 与 Linux)
- 4 路 I2C 继电器模块 (ControlEverything) ×1
- DHT11 温湿度传感器 ×1
- 无源蜂鸣器 + NPN 三极管驱动 ×1
- LM2596 降压模块 (12V→5V) ×1
- USB Webcam ×1
- 200×155×80mm 接线盒 ×1
- 原型扩展板、杜邦线、12V 电源适配器
Yun 引脚分配
| 功能 | 引脚 | 备注 |
|---|---|---|
| DHT11 数据 | D2 | |
| 蜂鸣器 | D8 | NPN 三极管驱动 |
| 卧室灯 | D9 | 继电器低电平触发 |
| 厨房灯 | D10 | |
| 车库灯 | D11 | |
| 客厅灯 | D12 | |
| USB Webcam | USB | Linux 侧驱动 |
核心软件栈
1. Alexa Skill 交互模型
- Intent:LightIntent (slots: which=room/kitchen/garage/living room, light=on/off)、AlarmIntent、TakePhotoIntent、GetTemperatureIntent、GetHumidityIntent、AboutIntent
- Sample Utterances 覆盖自然语言变体
2. AWS Lambda (index.js)
- PubNub SDK 发布控制消息:
{topic, command, id: user_email} - 订阅
AHC_IOT_02接收温湿度上报 - Account Linking (OAuth 2.0) 绑定用户邮箱作为设备 ID
3. Arduino Yun 固件 (ArduinoHomeMQTT.ino)
Bridge+PubSubClient+ArduinoJson+DHT库- 回调解析 MQTT JSON,按 topic 分发:继电器控制、温湿度读取上报、蜂鸣器、调用 Linux 进程拍照发邮件
- 断线自动重连 PubNub
4. Linux 端 Python 脚本 (AHC_SendEmail.py)
- SMTP (Gmail) 发送带附件邮件
- 配合
fswebcam抓拍 JPEG - 需在 OpenWRT 安装:
kmod-video-uvc、python-openssl、fswebcam
部署步骤精要
- 启用现成 Skill:Alexa App 搜索 “Arduino Home Controller” → Enable → 账号关联
- 自建 Skill 全流程:Developer Console 创建技能 → 定义 Intent/Slot/Utterance → 创建 Lambda → 配置触发器 → 上传代码 → 关联 Skill ID → 配置 Account Linking (Login with Amazon) → 发布测试
- Yun 环境准备:SSH 登录 →
opkg update && opkg install kmod-video-uvc python-openssl fswebcam→ 验证摄像头 → 放入 Python 脚本 → 修改邮箱密码 - 烧录固件:Arduino IDE 选 Yun 板卡,填入 Amazon 邮箱与 PubNub UUID,上传
- 硬件组装:扩展板焊接继电器/传感器/蜂鸣器/降压模块,装入接线盒,摄像头/传感器外置
- 全链路测试:对着 Echo 说 “Alexa, ask arduino home to turn kitchen light on” 等指令
语音指令示例
- 灯光:
Alexa, ask arduino home to turn room light on/off(room/kitchen/garage/living room) - 报警:
Alexa, ask arduino home to turn alarm on/off - 环境:
Alexa, ask arduino home to read temperature/humidity - 安防:
Alexa, ask arduino home to take a photo - 帮助:
Alexa, ask arduino home help / about
扩展性设计
- Proto Shield 预留扩展区,可加接土壤湿度、气体、光照等传感器
- 远程模块项目:Arduino Home Controller Remote Modules(433MHz/LoRa 子节点)
- 迁移至 ESP32/ESP8266 降低成本,保持相同 MQTT 协议
代码仓库
GitHub: https://github.com/jcruzp/ArduinoHomeController(含固件、Lambda、Python、原理图、库打包)
原理图
主板原理图展示 Yun、I2C 继电器、DHT11、蜂鸣器驱动、降压模块、USB 摄像头、12V 供电全连接。
制造工艺
- 基于 Web 控制的 DMX 灯光系统 – Arduino 主控制器
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
- Pixel Chaser:Arduino Nano 单键 NeoPixel 追逐小游戏
- Arduino Nano 驱动的智能家居植物自动浇水系统
- Arduino 简易排斥式磁悬浮:电路与 DIY 指南
- Arduino 驱动的真空荧光显示器(VFD)控制器套件
- 自主家庭助理机器人 O'nine - ROS + Alexa 语音控制 + 机械臂 + 麦克纳姆轮全向移动
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- Arduino DMX-512 测试控制器 – 可靠灯光控制的完整套件
- DIY LED 轮盘赌游戏机 —— Arduino Nano 打造单人桌面街机
- 基于 Arduino Mega 与物联网传感器的高级家庭监控系统