智能家居声控:Amazon Echo + NodeMCU(ESP8266 模拟 Wemo)控制 LED

在之前的文章里,我们都介绍了几个关于 Amazon + NodeMCU 进行声控的文章。这几篇翻译的文章里,我们都介绍了类似的方案,但是他们都不是完整。因此,在这篇文章里,我们将完整的介绍:如何搭建一个基于 Amazon Echo + NodeMCU 的系统。

工作原理

基本原理如下:

  • NodeMCU 上搭载的 ESP8266 带有 WiFi 功能
  • Amazon Echo 是内建对 Belkin WeMo、Philips Hue 等设备的支持

因此,这个系统的主要原理是,用 NodeMCU 模拟成 Belkin WeMo 设备。这些设备将被 Amazon Echo 识别出来,再由用户由声音进行控制。

步骤1:材料及环境准备

我们所需要的硬件设备有:

  • Amazon Echo
  • NodeMCU

而在软件上,我们需要一个安装有:ESP8266 板的 Arduino IDE。因此,首先我们需要先下载 Ardunio IDE,地址: http://www.arduino.cc/en/main/software

然后在 Arduino IDE 上安装 Arduino ESP8266,其 GitHub 地址: https://github.com/esp8266/Arduino。Arduino ESP8266 可以让 ESP8266 在 Arduino IDE 上运行,而不需要额外的硬件。

步骤2:安装 Arduino ESP8266

其安装方法如下:

  1. 启动 Arduino IDE,并进入 Preferences 窗口
  2. 在 Additional Board Manager URLs 中输入: http://arduino.esp8266.com/stable/package_esp8266com_index.json
  3. 从 Tools > Board 菜单中打开 Boards Manager,并输入安装 esp8266 平台

测试编译

重启玩 IDE,接上 NodeMCU,我们就可以测试:是否能使用 Arduino IDE 烧录代码到 ESP8266 芯片中。

  1. 选择开发板:Tools -> Board -> 选择对应的开发板,如我的是 NodeMCU MCU 1.0(ESP12-E Module)
  2. 选择示例代码:File -> Examples -> ESP8266 -> Blink
  3. 选择对应的端口
  4. 烧录测试程序
Arduino ESP8266 测试
Arduino ESP8266 测试

步骤3:Amazon 测试 NodeMCU 模拟 Wemo

在完成基本的搭建之后,我们就可以使用 NodeMCU 模拟 Wemo了。步骤如下:

与此的相似项目还有 Arduino Esp8266 Alexa Wemo switch emulator

确认无误后,我们就可以进入下一步的内容:在 Amazon Alexa 应用中搜索,并配置好对应的程序。

步骤4:连接 Amazon Echo 测试 NodeMCU

Amazon Alexa 应用配置过程
Amazon Alexa 应用配置过程

其配置过程如下:

  1. 打开手机上的 Alexa 应用
  2. 探索设备:点击左侧菜单选择:Smart Home -> Devices -> Discover
  3. 完成后,会找到对应的 office lights 和 kitchen lights

然后,我们可以在 Arduino 里打开串口应用,查看对应的日志:

Connecting to WiFi
Connecting .....
Connected to Phodal
IP address: 192.168.199.186
Begin multicast ..
Udp multicast server started at 239.255.255.250:1900
WebServer started on port: 
80
WebServer started on port: 
81
Adding switches upnp broadcast responder
Adding switch : office lights index : 0
Adding switch : kitchen lights index : 1

很明显应用已经正常启动了,我们只需要在房间里说:"Alexa, turn on office lights"(目前只支持英文),就可以成功地收到相应的指令。其对应的日志如下:

########## Responding to  /upnp/control/basicevent1 ... ##########
request:"1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1"><BinaryState>1</BinaryState></u:SetBinaryState></s:Body></s:Envelope>
Got Turn on request
Switch 1 turn on ...
````

同样的,对于控制 kitchen lights 来说就是:  "Alexa, turn on kitchen lights"(目前只支持英文),对应的日志如下:

request:"1.0" encoding="utf-8"?>1 Got Turn on request Switch 2 turn on ... ```

哈,是不是很帅

步骤5:扩展

有了上面的基础,现在我们可以做的就是,找一个继电器~~。

Done!

2 人评价

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.