- Google Assistant控制的家庭自动化的电路图
- 设置Blynk应用程序
- 使用Google Assistant和Blynk设置IFTTT以读取字符串
- 为Blynk家庭自动化编程Arduino
- 使用PCBGoGo制作PCB
- 组装PCB
- 将开发板与交流电源单元/扩展板连接
随着Google Assistant和Alexa等虚拟助手的发展,家庭自动化和语音控制应用程序正变得越来越普通。现在,我们自己已经建立了许多家庭自动化项目,从简单的自动楼梯灯到使用Raspberry Pi的基于IoT的Web控制的家庭自动化。但是这里的项目是不同的,这里的想法是创建一个实用的家庭自动化板,该板可以安装在墙上的交流电源中,并隐藏在里面。电路板不应中断电源开关的正常工作,也就是说,也应使用手动开关将其打开或关闭。而且,不用说,它也应该能够使用Google Assistant用语音控制相同的负载,还应该设置计时器,以便任何负载都可以在一天的预设时间内自动打开或关闭。
该项目与我们的ESP8266 Smart Wi-Fi插头非常相似,但是在这里,因为我们将使用ESP12,我们将拥有更多的GPIO引脚,使我们可以同时控制四个AC负载。另外,由于我们将Blynk和Google Assistant集成在一起,因此该项目变得有趣且实用。对于这个项目,我们使用PCBGOGO PCB制造服务来构建电路板。在本文的后面部分中,我们提供了为电路设计的Gerber文件,并说明了从PCBGOGO订购PCB的完整过程。
警告:该项目涉及使用交流电源电压。请注意,在高交流电压下工作时应格外小心。如果您是新手,请确保由有经验的人来监督。
Google Assistant控制的家庭自动化的电路图
可以在下面找到家庭自动化的完整电路图。
如您所见,电路非常简单,让我们从ESP12E Wi-Fi模块开始进行说明。您也可以查看下面的视频以获取详细的项目说明。该模块可以像nodeMCU开发板一样进行编程,并且减少了很多空间。默认情况下,ESP12E上电后会进入运行模式。为了对其进行编程,我们必须使用“重置并刷新”按钮。也就是说,将ESP12置于编程模式,同时按住Reset和Flash按钮,然后释放Reset按钮。这将在按下闪光灯按钮的情况下启动ESP12E,现在释放闪光灯按钮,ESP12E将进入编程模式。编程完成后,您必须再次按复位按钮以正常操作模式启动ESP12E才能执行上载的程序。编程引脚Rx,Rx,和接地扩展到可以与FTDI板或USB到TTL转换器连接。确保将ESP12的Tx引脚连接到Programmer的Rx引脚,反之亦然。
其他标志引脚I1至I4和R1至R4用于连接开关和继电器。引脚I1至I4代表输入引脚。所有这些引脚都支持内部上拉电阻,因此我们只需要通过下拉电阻将扩展盒上的开关连接到我们的输入引脚即可,如下所示。
类似地,继电器输出引脚R1至R4用于控制继电器。我们已经使用了带有BC547和IN4007二极管的标准继电器驱动器电路,如下所示。请注意,继电器应以5V触发,但ESP12E输出引脚仅为3.3V。因此,必须使用晶体管来驱动继电器。我们还在晶体管的基本路径中放置了一个LED,以便每当触发晶体管时,LED也会点亮。
最后,为所有电路供电,我们使用了Hi-Link AC-DC转换器将220V AC转换为5V DC。然后,使用AMS117-3.3V稳压器将此5V DC转换为3.3V。5V用于触发继电器,3.3V用于为ESP21 Wi-Fi模块供电。
设置Blynk应用程序
我们之前已经建立了许多Blynk项目,例如Wi-Fi控制的Arduino机器人,因此我们将不涉及设置blynk应用程序的详细信息。但简单起见,只需安装应用程序,为NodeMCU创建一个新项目,然后开始放置小部件,如下所示。
我已使用虚拟引脚V1至V4来控制项目中的继电器1至4。确保更改要切换的按钮的类型。即使关闭了电话,timer选项也可用于在设置的时间自动触发虚拟引脚。例如,我在这里仅将计时器用于虚拟引脚V1,但是如果需要,您可以将其用于所有四个引脚。
确保从项目页面获取blynk身份验证令牌值。只需单击螺母图标(上图中用红色圆圈圈出),然后使用copy all选项复制auth令牌,然后将其粘贴到安全的地方,这是在编写Arduino板时需要的。
使用Google Assistant和Blynk设置IFTTT以读取字符串
使用Google Assistant进行家庭自动化的最简单方法是使用IFTTT。之前,我们还使用NodeMCU和Raspberry Pi构建了许多IFTTT项目。在此项目中,我们将使用Blynk应用通过Google助手来触发Webhook。它与我们的语音控制家庭自动化和语音控制FM广播项目非常相似。除此之外,这里我们将结合使用blynk和IFTTT来发送字符串,这使它变得更加容易和有趣。
基本上,我们将使用blynk上的虚拟引脚V5和V6发送触发命令。V5将用于打开命令,而V6将用于关闭命令。例如,如果我们说打开电视和灯泡。此处的字符串命令“ TV and Lamp”将使用API发送到NodeMCU。API的语法如下。
现在,在IFTTT中我们要做的就是将google助手用作IF,将webhooks用作THAT,因此侦听此命令,并使用上述API将信息发送到NodeMCU。打开小程序的形式如下所示。
请注意,在为Google Assistant创建食谱时,您必须选择用文字成分说短语。同样,您必须对虚拟引脚V6重复相同的操作以关闭继电器。您可以查看此页面底部的视频以获取详细信息。
为Blynk家庭自动化编程Arduino
该项目的完整Arduino代码可在本页底部找到。相同的解释如下。在此之前,请确保您可以使用Arduino IDE中的Blynk和NodeMCU编程。如果不遵循,请参阅ESP12入门。另外,使用板管理器将blynk库添加到Arduino IDE。
和往常一样,我们从定义输入和输出引脚开始我们的代码,这里的输入将来自开关,输出将来自继电器。我们将所有四个开关的引脚名称定义为sw,而将继电器定义为rel,如下所示。
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
在下一步中,您必须输入一些凭据,例如blynk身份验证令牌以及nodeMCU应连接到的Wi-Fi路由器的用户名和密码。可以从blynk应用程序获取眨眼身份验证令牌。我们将在设置blynk应用程序部分中了解有关此内容的更多信息。
char auth =“ Fh3tm0ZSrXQcROYl_lIYwOIuVu-E”; //从blynk应用程序中获取char ssid =“ home_wifi”; char pass =“ fakepass123”;
接下来,我们给出了一个名为 read_switch_toggle() 的函数的定义。在此功能中,我们将比较开关的当前状态和先前状态。如果开关已打开或关闭,即是否已切换开关。开关状态将发生变化,该功能将监视此变化并返回开关编号。如果未检测到更改,它将返回0。
int read_switch_toggle(){int result = 0; //注意(int i = 0; i <= 3; i ++)的所有先前值pvs_state = crnt_state; //读取开关的当前状态crnt_state = digitalRead(sw1); crnt_state = digitalRead(sw2); crnt_state = digitalRead(sw3); crnt_state = digitalRead(sw4); //比较(int i = 0; i <= 3; i ++)的当前状态和pvs状态{如果(pvs_state!= crnt_state){result =(i + 1); //如果切换了任何开关,我们将获得开关号作为结果返回结果; } else result = 0; //如果没有更改结果,则返回0}; //返回结果}
接下来,我们有blynk应用程序的代码。我们将使用虚拟引脚V1至V6来控制我们的智能接线盒。引脚V1至V4将分别用于直接从blynk应用程序控制继电器1至4。以下代码显示了从blynk应用程序触发V1时发生的情况。我们只需读取状态(高或低)并相应地控制继电器即可。
BLYNK_WRITE(V1){digitalWrite(rel1,param.asInt()); Serial.println(“ V1”); }
同样,虚拟引脚也可以用于从blynk应用程序读取字符串。稍后,我们将学习如何使用IFTTT和Google Assistant将字符串从Google Assistant发送到NodeMCU,但现在,让我们看看NodeMCU代码如何读取该字符串并搜索特定的关键字并相应地触发中继。
在下面的代码中,您可以看到触发虚拟引脚V5时,我们将其传递的字符串转换为名为 ON_message 的字符串变量。然后使用此字符串变量和inderOf方法,搜索是否存在诸如“ lamp”,“ LED”,“ music”,“ TV”之类的关键字,如果是,则打开该特定负载。如果检测到关键字“一切”,我们将打开所有内容。 V6也可以关闭继电器。当我们进入IFTTT部分时,我们将对此有更多的了解。
BLYNK_WRITE(V5){字符串ON_message = param.asStr(); Serial.println(ON_message); if(ON_message.indexOf(“ lamp”)> = 0)digitalWrite(rel1,HIGH); if(ON_message.indexOf(“ LED”)> = 0)digitalWrite(rel2,HIGH); if(ON_message.indexOf(“ music”)> = 0)digitalWrite(rel3,HIGH); if(ON_message.indexOf(“ TV”)> = 0)digitalWrite(rel4,HIGH); if(ON_message.indexOf(“ everything”)> = 0){digitalWrite(rel1,HIGH); digitalWrite(rel2,HIGH); digitalWrite(rel3,HIGH); digitalWrite(rel4,HIGH); }}
最后,在循环功能内部,我们仅需检查是否有任何按钮的开关位置已更改。如果是,则我们使用如下所示的开关盒来切换该特定继电器的位置。
开关(toggle_pin){情况0:中断;情况1:Serial.println(“切换继电器1”); digitalWrite(rel1,relay_state); 打破; 情况2:Serial.println(“切换继电器2”); digitalWrite(rel2,relay_state); 打破; 情况3:Serial.println(“ Togging Relay 3”);digitalWrite(rel3,relay_state); 打破; 情况4:Serial.println(“ Togging Relay 4”);digitalWrite(rel4,relay_state); 打破; }}
使用PCBGoGo制作PCB
现在我们了解了原理图的工作原理,可以继续为家庭自动化项目构建PCB 。上述电路的PCB布局也可以从链接下载Gerber。
- 使用Google Assistant下载用于语音控制家庭自动化的GERBER
现在我们的设计已经准备就绪,是时候使用Gerber文件制作它们了。要从PCBGOGO制作PCB很容易,只需执行以下步骤-
第1步: 进入www.pcbgogo.com,如果这是您第一次,请注册。然后在“ PCB原型”选项卡中,输入PCB的尺寸,层数以及所需的PCB数。假设PCB为80cm×80cm,则可以如下设置尺寸。
第2步: 单击 立即报价 按钮继续。如果需要,您将转到一个页面,在其中设置一些其他参数,例如使用的轨道间距等材料。但是大多数情况下,默认值都可以正常工作。我们在这里唯一需要考虑的是价格和时间。如您所见,构建时间仅为2-3天,而PCB的成本仅为5美元。然后,您可以根据需要选择首选的运输方式。
第3步: 最后一步是上传Gerber文件并继续付款。为了确保过程顺利进行,PCBGOGO在继续付款之前会验证您的Gerber文件是否有效。这样,您可以确保您的PCB易于加工,并且能够按承诺达到您的要求。
组装PCB
订购该板后,经过几天的快递,它被装在包装整齐,贴有标签的盒子中,到达了我的手中,并且像往常一样,PCB的质量很棒。我收到的PCB如下所示。如您所见,顶层和底层都达到了预期的效果。
通孔和焊盘尺寸均正确。我花了大约15分钟的时间将其组装到PCB板上才能获得正常工作的电路。组装好的板如下图所示。
将开发板与交流电源单元/扩展板连接
该板设计为固定在我们家中的交流电源插座内。但是为了这个项目,我们将使用扩展箱。如果您需要更永久的解决方案,则将其连接到交流电源插座中,因为您可以看到下面的PCB长度足够紧凑,可以放置在交流电源插座中。
使用交流电源时,请确保遵守安全预防措施。请按照以下电路图了解如何将继电器和开关连接到我们的PCB板上。
仅一个中继和交换机的连接图断开,但您也可以为其余三个中继和交换机复制相同的连接图。连接完成后,您的电路板应如下所示
连接完成后,请确保已使用螺钉端子将其牢固固定,并使用热胶水以提高安全性。将所有东西都装回盒子,我们应该准备好进行测试。您可以在下面的视频中找到该项目的完整工作。
希望您喜欢这篇文章并学到一些有用的东西。如有任何疑问,请将其留在下面的评论部分或使用我们的论坛。