当前位置:首页 > 物联网 > IoT设计分享
[导读]在之前的教程中,我们使用NodeMCU构建了一个Alexa控制的家庭自动化系统。它很容易构建和实现。但有时我们需要更多的引脚来控制更多的设备,在这种情况下,我们可以使用一些具有更多GPIO引脚的微控制器与ESP8266板。在这里,我们将使用Arduino Uno和ESP8266来构建基于物联网的家庭自动化系统。

在之前的教程中,我们使用NodeMCU构建了一个Alexa控制的家庭自动化系统。它很容易构建和实现。但有时我们需要更多的引脚来控制更多的设备,在这种情况下,我们可以使用一些具有更多GPIO引脚的微控制器ESP8266板。在这里,我们将使用Arduino Uno和ESP8266来构建基于物联网的家庭自动化系统。

因此,在本教程中,我们将学习如何使用亚马逊Echo Dot扬声器通过语音命令控制家用电器。这并不是说我们懒得用开关来切换负载,而是在物联网时代,一切都变得“智能”,我们也应该建立一个智能家庭自动化系统。基于物联网的家庭自动化现在非常流行,我们以前使用不同的控制器(如树莓派,ESP8266, Arduino等)完成了许多物联网家庭自动化项目。

所需的材料

1. Arduino Uno

2. 亚马逊Alexa点扬声器

3. ESP8266-01

4. 跳线

5. 面包板或零PCB

在之前的教程中已经解释过,使用Alexa控制家用电器的方法有很多种,最流行的方法是使用第三方服务,如ThingSpeak, IFTTT和Webhooks。但是这些方法需要在每个平台上进行配置,这使得任务不那么繁琐和耗时。此外,编码部分需要一些计算来获取字符并解码它们。为了在这个方法中调用Alexa需要一些额外的短语,比如打开灯泡,我们不得不说“Alexa, Alexa触发打开灯泡”。正如你所看到的,我们必须在每次调用时说“Alexa触发”,这听起来很奇怪。因此,由于这么多的复杂性,我们将使用我们之前的方法,即使用fauxmoESP库。

FauxmoESP库仅适用于ESP板,不支持Arduino板。现在,如何在Arduino中实现它呢?别担心,我们有实现这个的方法。在这里,我们不会在AT模式下使用ESP8266模块,而是在编程模式下使用它。因此,我们将在此模块中上传fauxmoESP代码,并在从Alexa接收到的状态(0或1)发生变化时使用串行通信发送不同的字符。这些字符将在Arduino板上接收,就像Arduino板与Arduino接口时接收蓝牙模块的数据一样。

安装物联网Alexa家庭自动化库

由于我们将在ESP上创建多个虚拟连接环境,因此我们需要安装fauxmoESP以及异步TCP库。

1. 对于ESP8266,从这个链接下载异步TCP库,对于ESP32,从这个链接下载它。

2. 然后从这个链接下载fauxmoESP库。

3. 现在,在Arduino目录的libraries文件夹中解压缩这些文件,该目录可以在Documents文件夹中找到。另外,将这些文件夹重命名为oseperez-fauxmoesp-50cbcf3087f至xoseperez_fauxmoesp,将espasynccp -master重命名为ESPAsyncTCP。

4. 在fauxmoESP中有一个用于控制设备的示例代码,我们必须修改这个示例。打开Arduino IDE并进入Examples -> FauxmoESp -> fauxmoESP_Basic。

在开始编码部分之前,请确保已经安装了ESP板文件。如果你没有板文件,然后按照我们之前的教程开始使用Arduino IDE的ESP。

代码及工作说明

在这里我们分别解释了ESP8266和Arduino的代码,以了解该项目的工作原理。

ESP8266编程部分

这部分将与我们在以前的教程中所做的保持相同。但是这里有一些修改,因为这里的数据将通过串行通信发送到Arduino。

首先,我们包含了ESP板和fauxmoESP的重要头文件。

然后定义波特率115200和wi - fi ssid和Password。另外,为fauxmoESP创建一个实例fauxmomo,以便我们可以在代码中使用它。

为Wi-Fi设置一个单独的函数,以便它可以在void setup函数中调用。将WiFi模式设置为站模式,并在WiFi.begin()函数中传递SSID和Password。等待连接建立。另外,请注意不要使用Serial。print或println()是不必要的,因为它会将这些数据发送给Arduino。所以,避免使用它。

在void setup()函数中,将波特率传递给serial。Begin函数并调用wifissetup函数。

现在,fauxmoESP必须创建自己的web服务器,为此我们在createserver函数中传递true并将端口号设置为80。如果你在启用功能中设置false,那么它将阻止设备被发现和切换。

使用fauxmo.addDevice()函数添加设备。参数将是您的设备的名称,您将使用它来要求Alexa打开/关闭它。

现在,创建一个函数来处理从Alexa接收到的命令。在这个函数中,我们将比较字符串与设备名称,如果匹配,则使用Serial向Arduino发送一个字符。打印或串行写入。

同样,对第二个设备进行相同的操作,但这次向Arduino发送不同的字符。

在void loop()函数中,只需使用fauxmo检查来自Alexa服务器的传入数据包。handle函数,它将使用onSetstate()函数执行操作。

ESP8266的完整代码在本教程的末尾给出。使用FTDI模块或Arduino Uno板对ESP8266-01进行编程。我们将使用Arduino板进行编程。在Arduino板上上传一个空白草图或BareMinimum示例代码,并按照下面的电路图进行连接。在这里了解更多关于使用FTDI模块编程ESP8266的信息。

Arduino编程部分

Arduino代码Alexa家庭自动化是非常简单的。您必须使用Serial.available()函数检查传入的数据,当该数据与if语句中给定的条件匹配时,然后触发中继。

线路图

首先,使用Arduino板对ESP8266进行编程,进行以下连接,选择“board”为Generic ESP8266,并选择正确的端口号。最后,点击上传按钮。

模块编程完成后,只需从Arduino中移除Rx Tx线并上传Arduino部分代码。

然后再做一次连接,但要做一点改动。

连接ESP8266的Rx -> Arduino的Tx

连接ESP8266的Tx -> Arduino的Rx

从GND上取下Esp8266的GPIO 0。

除上述更改外,所有连接保持不变。

现在,我们已经完成了编码和硬件部分。是时候测试我们的家庭自动化系统了。另外,请注意,ESP8266和Amazon echo dot的Wi-Fi网络应该保持一致,即它们必须共享相同的Wi-Fi。

测试基于Arduino的Alexa家庭自动化系统

现在,试着说Alexa,发现设备。Alexa会回复说开始发现,我找到了两个设备,试着说“Alexa,打开卧室灯”。

或者,你可以在Alexa应用程序中发现这些设备。点击+号,然后发现设备。你应该看到两个装置,即卧室灯和电视。

现在我们准备测试我们的物联网Alexa家庭自动化系统。所以只要试着说Alexa,打开卧室灯,继电器应该就会打开。

现在说Alexa,关掉卧室灯,继电器一个要关掉。试着命令开/关电视。

您可以在串行监视器中看到设备的响应和状态。

还需要注意的是,fauxmoESP库存在一些bug,目前还处于改进阶段。所以,有时Alexa无法发现设备。

这就是如何使用Arduino制作基于Alexa的物联网控制的家庭自动化系统。

本文编译自iotdesignpro

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭