- 使用的硬件组件:
- 使用CP2102 USB-TTL转换器对ESP-01模块进行编程:
- ESP-01与CP2102模块的连接:
- 用于Alexa家庭自动化的ESP-01模块的编程
- 电路原理图
- 设置用于家庭自动化的Amazon Alexa应用
如今,像Amazon Echo或Google Home这样的智能扬声器正变得越来越流行,并且两者都具有集成自定义技能或动作的功能,以使用这些智能扬声器控制任何设备。我们以前使用Raspberry Pi和Alexa构建了自己的智能扬声器,还使用该Raspberry Pi智能扬声器控制了家用电器。
如今,家庭自动化已变得非常普遍,人们正在使用物联网使家庭中的一切自动化。在这里,在本教程中,我们将使用一个真正的亚马逊回声点扬声器和创建自定义技能来控制AC家电,如灯光,风扇,电视,插座使用亚马逊回声点议长。在这里,我们将使用Arduino UNO和ESP8266-01 Wi-Fi模块将Echo点扬声器与AC设备连接。学习完本教程后,您将可以通过Alexa控制任何设备。
使用的硬件组件:
- Arduino UNO
- ESP-01模组
- 亚马逊Alexa回声点
- CP2102 USB-TTL转换器
- 面包板
- 5V继电器模块
- 交流电器
- 跳线
使用CP2102 USB-TTL转换器对ESP-01模块进行编程:
ESP-01是使用CP2102 USB-TTL转换器编程的;也可以使用Arduino UNO板对其进行编程。就我而言,在这里,我使用了CP2102模块,下面说明了执行此操作的步骤。
ESP-01模组
ESP8266 ESP-01是一个Wi-Fi模块,在IoT应用程序设计中非常流行,它用于允许Arduino UNO之类的微控制器与互联网连接。该模块是一个独立的片上系统(SOC),可以像小型计算机一样工作。它带有预装的AT固件,因此我们可以使用Arduino IDE对其进行编程。您可以通过以下链接了解有关ESP-01 Wi-Fi收发器及其使用Arduino IDE编程的更多信息。
引脚说明:
VCC: ESP-01的电源引脚,可提供3.3V DC
GND: ESP-01的接地参考引脚
TXD:用作UART发送器引脚
RXD:用作UART接收器引脚
复位:用于复位模块,它是一个有效的低电平引脚。
CH_PD:芯片使能引脚是高电平有效引脚。
GPIO0:该引脚有两个作用。一种是用作通用输入/输出,另一种是启用ESP-01的编程模式
GPIO2:这是通用输入/输出引脚。
ESP-01与CP2102模块的连接:
下图显示了CP2102 USB-TTL转换器的引脚排列图。如下表所示,将ESP-01模块与CP2102 USB-TTL转换器模块连接。
ESP-01模组 |
CP2102模块 |
VCC |
3.3伏 |
地线 |
地线 |
接收器 |
TXD |
TXD |
接收器 |
CH_PD |
3.3伏 |
重启 |
没有关联 |
GPIO0 |
地线 |
GPIO2 |
没有关联 |
成功完成上述连接后,电路应如下图所示:
然后将CP2102模块连接到我们的PC进行编程。在将代码上传到ESP-01之前,请先检查通信端口。为此,请转到开始->并搜索设备管理器。然后单击“ COM和端口”。在此选项下,我们应该获得一个带有USB-TTL转换器名称的COM端口,例如“ Silicon Labs CP21xx USB-UART Bridge ”,如下图所示:
成功完成上述步骤后,打开Arduino IDE,然后从“工具”菜单中选择板作为“通用ESP8266模块”,然后选择上一步中获得的COM端口。
用于Alexa家庭自动化的ESP-01模块的编程
在该项目的结尾给出了完整的代码。这是要在ESP-01模块上上传的代码的逐步说明。第一步是包括所有必需的库。您可以从此处的链接下载“ fauxmoESP.h”库。
#include #include
在此步骤中,我们必须定义将ESP-01与Internet连接所需的所有凭据。在程序中更新您的网络SSID和密码数据。
#define SSID“ *******” #define pass“ *******”
接下来,定义设备的名称,我们需要从Alexa进行控制。就我而言,我把我的设备名称为“卧室的灯”,“卧室风扇‘和’智能插座。 ”
#define device1“卧室灯” #define device2“卧室风扇” #define device3“智能插座”
功能WiFi.mode用于将ESP-01模块设置为Station模式,功能WiFi.begin用于将ESP-01模块连接到以网络的SSID和密码作为参数的Internet。
WiFi.mode(WIFI_STA); WiFi.begin(ssid,pass);
下一部分是初始化Fauxmo类的所有功能, 例如创建服务器,启用Alexa设备的端口号,启用设备等。然后使用我们之前创建的 fauxmo.addDevice 添加所有设备。
fauxmo.createServer(true); fauxmo.setPort(80); fauxmo.enable(true); fauxmo.addDevice(device1); fauxmo.addDevice(device2); fauxmo.addDevice(device3);
接下来,编写一个函数,将我们的语音命令与预定义的设备名称进行比较。如果命令匹配,则使用 Serial.print 将字符发送到Arduino串行终端 。
fauxmo.onSetState(((unsigned char device_id,const char * device_name,bool state,unsigned char value){if(strcmp(device_name,device1)== 0){if(state)Serial.print(“ 1”);否则为Serial.print(“ 2”);}}
在 void loop() 函数中, fauxmo.handle 函数将仅检查来自Alexa的传入数据,并将使用 onSetstate() 函数执行操作。
void loop(){fauxmo.handle(); }
现在,将最后给出的完整代码上传到ESP-01模块,并确保成功上传。
Arduino代码:
之后,是时候将代码上传到Arduino了。Arduino的代码非常简单。它仅接收通过其UART端子从ESP-01模块发送的字符,并对其进行比较以将打开/关闭信号发送到继电器。Arduino的完整程序如下所示:
字符数据; void setup(){Serial.begin(115200); pinMode(7,输出); pinMode(6,输出); pinMode(5,输出); digitalWrite(7,LOW); digitalWrite(6,LOW); digitalWrite(5,LOW); } void loop(){if(Serial.available()> 0){data = Serial.read(); Serial.print(数据); Serial.print(“ \ n”); if(data =='1')digitalWrite(7,HIGH); 否则if(data =='2')digitalWrite(7,LOW); 否则if(data =='3')digitalWrite(6,HIGH); 否则if(data =='4')digitalWrite(6,LOW); 否则if(data =='5')digitalWrite(5,HIGH); 否则if(data =='6')digitalWrite(5,LOW); }}
成功上传后,将代码上传到Arduino,然后根据下面给出的示意图连接硬件。
电路原理图
使用Alexa的家庭自动化的电路图如下所示:
在这里,我们将所有组件焊接在Perfboard上,使其充当Arduino屏蔽。
同样,我们还在Perfboard上构建了一个中继模块:
设置用于家庭自动化的Amazon Alexa应用
成功完成硬件设置和编码后,现在该设置Alexa Android应用了。首先,我们需要通过该应用程序搜索附近的任何智能设备。为此,请打开您的Alexa设备,然后打开您的Alexa应用程序,然后单击选项“ 设备 ”,然后单击“ +”号,要求您“ 添加设备 ”。然后单击“ 添加设备 ”,在设备类型中单击“ 其他 ”,然后选择发现设备。然后,您的Alexa应用应搜索可能最多需要45秒的设备。
注意:另外,我们也可以使用语音命令“ Alexa,发现设备 ”来 发现设备
完成设备发现后,您应该通过代码中提供的名称获得3个新设备。就我而言,这些是 卧室灯 ,卧室风扇 和 智能插座 。现在,该设置已准备就绪,可以进行测试了,只需说出“ Alexa,打开卧室灯”进行测试,它就会返回您的反馈信息,说“好”,并且灯应该打开。同样,我们可以测试所有其他命令。
这是Amazon Echo点控家用电器的完整设置的外观:
下面给出了ESP-01的完整代码以及演示视频。