自从我开始使用ESP Wi-Fi模块以来,我一直希望构建一个智能Wi-Fi插座,使我能够通过智能手机无线控制AC负载。虽然这类产品已经在市场上出售,例如流行的Moko WiFi Smart Plug或Sonoff,但它们有点贵,最重要的是,它并没有给您带来建造自己的乐趣。因此,在本项目中,我将向您展示如何使用ESP8266 Wi-Fi模块构建自己的智能插头。我们制造的设备可以轻松插入任何现有的交流电源插座,然后在另一端,只需将实际负载插入设备上的此插座即可连接实际负载。之后,只需保持插座的总开关始终打开,您就可以直接从智能手机控制负载。好玩吧?因此,让我们进入项目…。
ESP智能插头,用于家庭自动化
从简单的基于RF的家庭自动化到我最喜欢的基于Google Assistant的语音控制家庭自动化,我们已经建立了一些家庭自动化项目。但是今天,该项目的需求略有不同。
在这里,目的是仅通过直接从我的工作站使用智能手机来打开/关闭我的Wi-Fi路由器。因为有时我的互联网连接断开,当我打电话给客户服务时,我得到的标准答案是 “先生,对于给您带来的不便,我们深表歉意。请重启路由器,方法是 先将 其关闭,然后在几秒钟后重新 打开。”厌倦了每次都走到路由器的麻烦,我决定构建此wifi智能插头并使用它控制路由器。
但是,请稍等!关闭路由器后,我将无法再访问互联网。那么,我该如何再次将其重新打开?幸运的是,我们的ESP8266可以用作接入点,这意味着它还可以通过发送自己的Wi-Fi信号像路由器一样工作。只要ESP8266通电,此Wi-Fi信号将始终可用。因此,我们会将ESP8266编程为专属门户,这样,一旦我们连接到ESP的Wi-Fi信号,我们将被带到一个可以打开/关闭负载的网页。
所需材料
1. ESP8266 Wi-Fi模块
2. Hi-Link交流到直流转换器(3.3V)
3. 3V继电器
4. NPN晶体管BC547
5. FTDI编程器模块
6. Arduino Wi-Fi防护板
7.连接线
注意:我们正在使用我们之前构建的Arduino Wi-Fi Shield。开发板仅用于将Arduino代码上传到ESP8266模块中。如果您没有此开发板,则可以使用此简单的ESP8266编程器电路的链接构建一个上载您的代码。
ESP8266的智能插件程序
在继续进行下一步之前,让我们直接进入程序,了解我们的DIY WiFi智能插头如何工作。如您所见,我们通过包含一些头文件和设置DNS网络服务器来开始该程序
#包括
然后,我们将ESP的GPIO引脚2初始化为输出,该输出将用于控制负载。之后,我们为网页提供了很长的HTML代码。在这里,我们在网页上总共有三个屏幕,分别是主屏幕,在屏幕上和在关闭屏幕上。
String Home_Screen =“” //第1页-主屏幕HTML代码“”“ ” + style_detials +“
”欢迎-CircuitDigest
“”“;字符串ON_Screen =”“ //第2页-如果设备已开启”“” “ + style_detials +” ”智能插头-开启
“”“; 字符串OFF_Screen =”“ //第3页-如果设备已关闭 ”“ ” “ + style_detials + ” “ ”智能插头-已关闭
“ ”“;这三个网页在打开时将显示如下内容。您可以自定义网页,使其以您喜欢的方式显示。
然后,我们有了我们的 void设置 函数,在其中定义我们的ESP作为接入点,并为其提供名称,在此处为“ ESP_Smart_Plug”。当任何用户连接到该Wi-Fi时,他们将被带到我们之前定义的主页。
pinMode(LED_BUILTIN,输出); // LED引脚作为指示 pinMode(GPIO_2,OUTPUT)的输出; // GPIO引脚作为继电器控制 WiFi.mode(WIFI_AP)的 输出;//将ESP设置为AP模式WiFi.softAPConfig(apIP,apIP,IPAddress(255,255,255,0)); WiFi.softAP(“ ESP_Smart_Plug”); //将您的AP网络 命名为dnsServer.start(DNS_PORT,“ *”,apIP); webServer.onNotFound((){ webServer.sendHeader(“ Location”,String(“ http://www.circuitdigest-automation.com/home.html”),true); //默认情况下打开主屏幕 webServer.send( 302,“ text / plain”,“”); });
如果用户单击“ ON”按钮,则会在主页上显示屏幕页面,并将GPIO 2引脚设置为高电平
// ON_Screen webServer.on(“ / relay_ON”,(){//如果按下了打开按钮 digitalWrite(LED_BUILTIN,LOW); //关闭LED digitalWrite(GPIO_2,HIGH); //关闭Relay webServer.send (200,“ text / html”,ON_Screen); //显示此屏幕 });
同样,如果用户单击关闭按钮,将显示关闭屏幕页面,并且GPIO 2引脚将设置为LOW。
// OF_Screen webServer.on(“ / relay_OFF”,(){//如果按下了关闭按钮,则 digitalWrite(LED_BUILTIN,HIGH); //打开LED digitalWrite(GPIO_2,LOW); //打开Relay webServer.send (200,“ text / html”,OFF_Screen); //显示此屏幕 });
完整的代码以及库文件可以从下面给出的链接中下载为ZIP文件。现在我们的代码已经准备好了,我们只需单击上传按钮即可将其上传到ESP模块,然后等待代码被上传。完整的程序以及库文件可以从下面的链接下载
ESP8266智能插件– Arduino代码下载
那些拥有Wi-Fi防护罩的人可以如上所述将您的模块简单地插入在一起,然后将其连接到您的计算机,以开始使用Arduino IDE对我们的ESP8266进行编程。没有此板的人可以使用前面提到的电路图。
代码上传后,在手机上搜索Wi-Fi网络,您应该会找到一个名为 “ ESP_Smart_Plug” 的信号 。 连接到它,您将被带到我们刚刚设计的网页。在这里,当您按下关闭按钮时,您应该注意到ESP板上的LED指示灯已熄灭,而当您按下打开按钮时,LED指示灯应再次点亮。
再验证几次代码后,我们将不再需要该项目的编程器板。现在,我们必须建立电路以直接从市电为ESP模块供电,并使用其GPIO引脚触发继电器。为了构建该电路,我使用了Hi-Link的AC-DC转换器模块,该模块将交流市电电压转换为3.3V DC,并具有900mA的输出电流,足以通过市电为ESP模块供电。输出端Relay是一个3.3V继电器,可以通过ESP的GPIO引脚通过诸如BC547这样的晶体管进行控制。我们还需要一个1k电阻来限制晶体管的基极电流。
电路原理图
Wi-Fi智能插头的完整电路图如下所示。
可通过此插头获得为我们的项目供电的交流电源。其他组成部分则解释了早期产品。另一个需要重点注意的事情是在启动时保持GPIO-0和GPIO-2为高电平。否则,ESP模块将进入编程模式,输出代码将不起作用。因此,默认情况下,我使用了一个10k(可使用3.3k至10k之间的值)电阻将GPIO引脚拉高。或者,您也可以使用PNP晶体管代替BC547,并从高端切换继电器。准备好电路图后,我计划如何通过使电路板的尺寸保持尽可能小以使其适合小型外壳并焊接电路板的方式来焊接这些组件。
用于智能插头插座的3D打印外壳
接下来,我使用游标卡测量了电路板的尺寸,还测量了插头和插座的尺寸,以设计智能插头的外壳。完成后,我的设计如下所示。
对设计感到满意之后,我将其导出为STL文件,根据打印机设置对其进行了切片,最后进行了打印。同样,STL文件也可以从thingverse中下载,您可以使用它打印自己的外壳。
打印完成后,我对结果非常满意。然后,我将电线添加到板上,然后将其拧紧到电源端子和插座。完整的连接完成后,我将电路组装到了机壳中,一切都非常合适。
准备好要使用的智能插头后,我去了路由器,追踪了电线以找到其适配器。然后,我将其从插座中拔出,然后将智能插头连接到同一插座,然后将其打开。现在,我将适配器插回了智能插头上,之后便可以通过手机对其进行控制了。同样,您可以控制家里的任何低功率AC负载并享受乐趣。
可以从此处下载完整的代码,并且可以在此页面底部找到此DIY智能电源插座的工作视频。希望您喜欢这个项目,请在评论部分让我知道您将使用此设备自动执行的操作。如果您有任何疑问,请将其留在论坛中,我会尽力解答。