让我们继续使用ESP8266来控制世界任何地方的继电器,继续探索ESP8266模块。您所需要的只是一个Arest应用程序中的帐户和具有Internet连接性的Web浏览器(设置硬件后,即Arduino,ESP8266和Relay模块)。
概述
在以前的ESP8266项目中使用ESP8266和Android控制继电器,我向您展示了如何在ESP8266的帮助下通过WiFi控制继电器模块(随后是连接到继电器的负载),以及使用MIT App Inventor 2应用程序开发的Android应用程序。
即使这是一个很棒的项目,您可以在其中开发自己的Android应用程序并使用该应用程序控制继电器模块,但该项目的主要限制是其连接范围。
更清楚地,必须将Android手机(已安装应用程序上)和ESP8266模块(接力连接到该模块)必须连接到同一WiFi网络。如果您尝试在ESP模块的WiFi网络之外进行控制,那么您最终会感到失望。
因此,在这个项目中,我们将通过查看如何从世界任何地方控制继电器来进一步迈出一步。是的。这是正确的。您可以使用网络浏览器来控制世界任何地方的继电器。
为了实现这一目标,我将使用一个名为Arest的唯一平台。将Arest与ESP8266一起使用,您可以轻松地实现一个真正的物联网家庭自动化项目。
关于Arest的简短说明
Arest平台开发的主要目的是将物联网和家庭自动化的概念更接近DIY社区。
使用AREST平台,您可以创建基于Web的应用程序,并控制来自世界任何地方的Arduino,ESP8266和Raspberry Pi,例如Arduino,ESP8266和Raspberry Pi。
为了使用Arest平台,您所需要的只是一个帐户(不是强制性的,我将在工作中解释),以及ESP8266(或Arduino)的一些库。而已。
以后的部分将说明有关AREST以及如何将其与ESP8266一起使用的更多信息。
电路原理图
为了控制世界任何地方的继电器,您需要按照以下电路图进行连接。Arduino并不是强制性的,因为它仅用于编程ESP8266模块,即它是USB到串行转换器。
如果您碰巧拥有专用的USB到串行转换器,那么您将不需要Arduino板。
需要组件
- USB到Serial Converter(Arduino Board)
- ESP-01(ESP8266模块)
- 两个通道继电器模块(仅使用一个通道)
- 按钮
- 电阻(1kΩ和2.2kΩ)
- 跳线
- 滑动开关(SPDT)
电路设计
从世界任何地方控制继电器的电路设计非常简单。实际上,设计与我们在Android App控制的继电器项目。
因此,我不会再介绍电路的详细信息,建议您参考该项目以进行详细的电路设计。
代码
该项目的代码如下。此代码是从最大的示例“ ESP8266_Cloud”启发的。我将在工作部分中的更多信息解释。
硬件和软件配置
现在让我们尝试了解该项目,并查看如何使用ESP8266从世界任何地方控制继电器。
首先,根据电路图进行所有必要的连接。将Arduino连接到计算机,然后将GPIO0连接到GND并重置ESP模块。在上面给出的代码上传之前,您需要进行一些添加和更改。
第一个重要的是,您需要特殊的库,称为“ Arest”和“ PubSubclient”。这两个库可以从以下链接下载休息和pubsubclient。
下载zip文件并提取内容。然后将两个称为“ Arest-Master”和“ PubSubclient-Master”的文件夹复制到文档 - > Arduino –>库。该路径将是这样的“ C:\ Users \ Ravi \ Documents \ arduino \ libraries”。
执行此操作后,将上述代码复制到Arduino IDE中,然后移至“ char* device_id =“ re1403”;”的线路。该行包含特定于设备的唯一设备ID。用您的ID替换为最多6个字符(可以是字母数字,不确定特殊字符)。
笔记:不要忘记用自己的设备ID替换“ RE1403”。
分配了设备ID后,请继续进入下一行并输入WiFi网络详细信息,即SSID和密码。然后移至“ arestvar.set_name(“ myesp”);”的行。在这里,您可以为设备设置名称。连接到Arest仪表板后,将看到此名称。
现在,您可以将代码上传到ESP模块。上传后,如果打开串行监视器,则可以查看ESP模块是否连接到Arest框架的状态。
使用ESP8266和Web浏览器控制世界任何地方的继电器
现在让我们查看项目的实施。请记住,在电路中,我将继电器模块连接到ESP模块的GPIO2。
上传代码并连接到AREST服务器后,打开与ESP8266模块连接到不同网络的Web浏览器,然后输入以下URL。
使用此URL,您正在配置具有ID“ RE1403”的设备,并将其引脚2设置为输出。如果配置成功,您将获得如下响应。
现在,配置了您的设备,您可以继续控制其销钉,即您可以使PIN高或低。为此,您需要使用两个URL。
要使PIN高高,请使用以下URL。
对高销的响应如下。
为了使PIN降低,URL是:
对此URL的响应是:
{“消息”:“ PIN D2设置为0”,“ ID”:“ RE1403”,“名称”:“ myesp”,“硬件”:“ ESP8266”,“连接”:true}
笔记:我在项目中使用的继电器模块是一个主动低模块。因此,ESP的低点将打开继电器,ESP上的高位将关闭中继。
而已。您可以使用上述所有步骤,并使用ESP8266和AREST控制世界任何地方的继电器。
使用ESP8266和Arest仪表板从世界任何地方控制继电器
请注意,您不需要在Arest框架中的帐户即可实施上述过程。但是有一个优势是用Arest创建帐户。
使用以下URL并在Arest中创建一个帐户。
如果您已经有一个带有Arest的帐户,请使用上述URL登录您的凭据。之后,您将获得以下页面。
之后,输入一个新的仪表板标题,例如“ ESP8266_RELAY”,然后单击“添加新仪表板”。这将在“您的仪表板:”下添加。打开新创建的仪表板。
在这里,您可以添加要控制的设备。给设备,设备ID(您在程序中提到),PIN类型(在我们的情况下),引脚号(引脚2)和控件类型(ON - OFF按钮)并创建一个新元素。
笔记:您可以随时显示或隐藏编辑详细信息。
如果一切顺利,请单击创建一个新元素(带有所有详细信息)的那一刻,您将获得设备的名称,该名称在代码中设置(在我的情况下,是myesp)和它的状态(在线的)。
现在,您可以控制继电器,该中继通过此接口连接到ESP8266的GPIO2。因此,创建AREST帐户的好处是,您不需要输入上述URL来控制ESP模块。
使用ESP8266和Android应用程序从世界任何地方控制继电器
除了ESP模块的URL和AREST仪表板控件外,我还将向您展示如何使用MIT App Inventor 2应用程序创建Android应用程序,并使用该应用程序从世界任何地方控制继电器。
您需要的只是在应用程序中创建两个按钮元素,如下图所示。我添加了一些额外的标签来提及项目的标题,并指示继电器的状态。
在“块”部分中,为按钮创建块并添加Web元素。将这些相应的Web元素链接到我之前提到的URL。因此,每当您单击按钮时,该应用程序都会向该URL发送请求,结果将控制继电器。
笔记:我没有使用MIT应用Inventor 2应用程序提供有关创建Android应用程序的完整详细信息。如果您有兴趣,我也可以在该主题上进行一个专门的项目。
申请
- 我认为控制继电器的应用以及互联网上的电气设备非常明确。
- 真正的基于物联网的家庭自动化是您可以监视温度,烟雾警报等的家用必需品的主要和重要应用程序之一。同时,可以控制任何电器,互联网上的一切以及来自世界任何地方的所有电器。
18个回应
在此项目上制作视频。
是的。我们将尽早进行并尽早上传。
精彩的。同意创建视频,以更好地解释如何做。良好的努力。
该项目的成本估算是多少。看起来我可以尝试的东西。
我认为大约35-40美元。
出色的工作,并有很好的解释,我们非常感谢您所做的努力,谢谢
嗨,我们如何从ESP到应用程序进行按摩?
首先,谢谢先生。这是非常好的项目。您的解释非常简单,可以理解孔项目。
接下来,我们可以控制世界上任何地方的Home Endertiance in en nobable Amable房间。这在当前的技术中非常有用。每个人都忙于他们的作品,他们都可以使用应用程序来关闭开关,我们可以关闭世界上任何地方的开关。
我的问题是您如何知道启用物联网的当前状态。(打开和关闭多少个开关)
即,可能应通过使用MIT应用程序发明家进行通知到应用程序如何完成,请您解释一下先生,
等待你的答复
如果您制作了视频,您可以发布链接吗
我正在使用arduino nano,我对代码有问题
董事会汇编Arduino Nano的错误
你能帮我吗?
该代码必须直接上传到ESP8266模块。它不会与Arduino(UNO或Nano)一起使用。
你好,
我可以配置像AP的AP,以获取本地WiFi“ ssid”“密码”数据?
此致
非常感谢先生。如果准备就绪,请为我们提供视频链接。
上帝保佑你更多
如何上传代码错误?
一个非常好的项目,您能制作一个视频如何制作应用程序,以便我们可以制作它。
我已经能够按照您创建的方式准确地运行代码。但是,无论设备如何,我都希望通过继电器控制多个设备。我可以打开多个设备。
正如我在当前示意图中看到的那样,如果我连接多个设备,它将全部打开或全部关闭。您能解释一下我如何实现这一目标吗?
谢谢,这是一个很好的指导,而不是完美的,因为在项目中没有提及我如何在Web和Android应用中设置高安全性?再次感谢
i; m在错误下方错误:
“ class arest”没有名为“ get_topic”的成员
char* out_topic = arestvar.get_topic();
^
退出状态1
“ class arest”没有名为“ get_topic”的成员