SONOFF:远程开关,用于打开或关闭电器

sonoff

你想像 远程打开或关闭某物? 您可以打开暖气,或者如果误将其关闭则将其关闭,如果您有自动门,也可以打开或关闭百叶窗,或者通过在任何地方操作空调来使房屋处于合适的温度。 好吧,那是一个 SONOFF.

例如, 在市场上可以找到的是Itead Sonoff。 这是一款基于ESP8266模块的设备,如果您是制造商并使用Arduino创建DIY项目,肯定听起来很熟悉。 这是一个非常受欢迎的WiFi模块,我们已经专门针对该模块 Hwlibre中的特别文章。 为了那个 模块已添加继电器 在连接的设备上执行操作,从而能够通过WiFi关闭或打开设备。

什么是子弹?

Un Sonoff是WiFi智能开关 以便能够远程打开和关闭电器。 此设备使您可以通过家庭或办公室中的WiFi路由器连接到Internet。 从连接到网络的任何设备以及任何地方,您都可以与之交互以控制您的设备。

许多商业人士曾有过 您自己的Android或iOS应用 易于控制。 例如,Sonoff Basic具有应用程序eWeLink。 此外,这些应用程序中的许多应用程序还允许您配置计时器,以便在特定时间激活它们。 例如,这使您可以在休假时离开家,可以进行编程,以便打开和关闭收音机或抬起百叶窗以及为避免盗窃而占用房屋的外观...

此外,一些商业Sonoffs实施 功能,因此您可以将它们连接到传感器 并根据温度,声音,存在传感器,湿度等打开或关闭设备。 这对于花园灌溉系统,对房屋进行适当的空调调节等很有用。 甚至某些专为家庭自动化设计的模型都与Amazon Alexa / Echo,Google Home等兼容。

其他附加组件

除了这次探亲 还有其他设备 WiFi插座,WiFi灯泡插座,WiFi开关,WiFi-RF网关,SC-WiFi站等可能对您有帮助,对您的WiFi中继或探戈而言是完美的补充。

使用Arduino和ESP8266模块制作自己的Sonoff(简易)

尽管它是一种非常简单且便宜的设备,但您可能并不总是对购买它感兴趣。 如果您是制造商,并且想创建自己的DIY项目,而不是购买商业附属产品, 您可以自己创建。 这将通过使用用于Arduino的中继模块和WiFi模块来实现。 这样,您就可以连接项目,并准备在负责中断或连接高压设备的继电器上进行操作。

另一种可能性是 破解Sonoff 已经完成了带来新功能的工作。 为此,您最好的选择是 伊泰德·索诺夫(Itead Sonoff)。 例如, 没有找到产品。,这是一家面向制造商的中国公司生产的设备。 该设备的文献资料非常丰富,这就是为什么可以轻松地对其进行修改和使其适应您的项目的原因。 通过基于ESP8266,一切都将变得更加容易,并且包括用于移动设备的自己的控制应用程序。

用Arduino创建一个简单的Sonoff

也许对您来说会更容易 用Arduino创建自己的Sonoff 必须修改Itead的固件。 使用Itead和其他现成的设备非常简单,但是从仅使用它们到修改其固件之间就存在很大的差异。 因此,也许您对由您创建Sonoff的简单方法感兴趣。

你需要什么?

所有 你需要什么 对于这个项目,它是:

  • Arduino UNO,否则也值得另外一盘。
  • 面包板或PCB(如果要焊接)。
  • ESP8266模组
  • 继电器模块
  • 连接连线
  • 带有Arduino IDE和用于编程的电缆的PC
  • 您要通过WiFi控制的电气设备

分步建设

Arduino与ESP8266和继电器的连接

开始 建立您自己的Sonoff跟随这个 逐步指南:

  1. 一旦掌握了所有要素,就必须 正确连接原理图 如图所示。 请记住,我放置“设备”的位置就是您要控制的地方:炉子,风扇,电视,灯泡等,并且插头必须为所述设备供电。 如您所见,所要做的是中断连接到设备的一根导线,并插入继电器以充当开关。 如果对连接有疑问,可以查阅我们的手册:
    1. 如何将ESP8266连接到Arduino?
    2. 如何在Arduino上使用继电器?
  2. 现在以下是 Arduino IDE中的程序 使它正常工作。 如果您是初学者,也可以 下载PDF 我们的Arduino编程手册。 控制继电器和红色,绿色和蓝色LED的简单代码示例为:
#include <SoftwareSerial.h>

#define DEBUG true

SoftwareSerial esp8266(2,3); 
void setup()
{
  SSSerial.begin(19200);
  esp8266.begin(19200);
  
  pinMode(10,OUTPUT);
  digitalWrite(10,LOW);
  
  pinMode(11,OUTPUT);
  digitalWrite(11,LOW);
  
  pinMode(12,OUTPUT);
  digitalWrite(12,LOW);
  
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
   
  sendData("AT+RSTrn",2000,DEBUG); 
  sendData("AT+CWMODE=2rn",1000,DEBUG); 
  sendData("AT+CIFSRrn",1000,DEBUG); 
  sendData("AT+CIPMUX=1rn",1000,DEBUG);
  sendData("AT+CIPSERVER=1,80rn",1000,DEBUG); 
}

void loop()
{
  if(esp8266.available())
  {

    
    if(esp8266.find("+IPD,"))
    {
     delay(1000); 
     int connectionId = esp8266.read()-48; 
          
     esp8266.find("pin="); 
     
     int pinNumber = (esp8266.read()-48)*10;
     pinNumber += (esp8266.read()-48);
     
     digitalWrite(pinNumber, !digitalRead(pinNumber));  
     
     String closeCommand = "AT+CIPCLOSE="; 
     closeCommand+=connectionId;
     closeCommand+="rn";
     
     sendData(closeCommand,1000,DEBUG); 
    }
  }
}
String sendData(String command, const int timeout, boolean debug)
{
    String response = "";
    
    esp8266.print(command); 
    
    long int time = millis();
    
    while( (time+timeout) > millis())
    {
      while(esp8266.available())
      {
        
        char c = esp8266.read(); 
        response+=c;
      }  
    }
    
    if(debug)
    {
      Serial.print(response);
    }
    
    return response;
}

一旦插入Arduino IDE并通过串行端口进行编程,一切都应该可以正常工作。 尽管可以使用串行监视器,但是如果您为iOS或Android创建更简单的Web界面或小型应用程序,则将是合适的。 如果是 HTML代码 这样比较容易,这样就可以从浏览器中管理LED的亮或灭以及与继电器连接的设备:

<html>
<head>
<title>Control con Sonoff</title>
</head>
<body>
<button id="10" class="led">A</button>
<button id="11" class="led">LED AZUL</button>
<button id="12" class="led">LED VERDE</button>
<button id="13" class="led">LED ROJO</button>
<script src="jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
$(".led").click(function(){ var p =
$(this).attr('id');
$.get("http://XXX.XXX.X.X:80/", {pin:p});
});
});
</script>
</body>
</html>

您可以在任何文本编辑器中编写它,并以名称保存 控件.html。 请记住,要使其正常运行,必须将http://XXX.XXX.XX:80替换为 适合您的情况的IP,也就是您的WiFi网络中分配给ESP8266的那个。另一方面,如果您想将设备标签A替换为所用设备的名称,并使其更直观,请随时这样做...

Web界面控制

现在,如果您使用以下命令打开此control.html 任何网络浏览器都可以处理您的Sonoff。 通过单击按钮,您将看到电路的工作方式。

修改Sonoff固件(高级)

尽管由于复杂性不建议大多数用户使用,但您可以执行的另一项操作是修改 Itead Sonoff固件。 这是可能的,但是它涉及许多步骤,并且如果您真的不知道自己在做什么,那将很复杂。 为了让您有个好主意,我为您提供了所需的信息和基本步骤,以及固件链接和完整指南,以防您敢于看完基本步骤...

使用ESPurna

你需要什么?

要使用Itead Sonoff进行编程, 您将需要以下物品:

  • Itead Sonoff WiFi基础版
  • FTDI或TTL适配器和电缆(USB /串行引脚)
  • 螺丝刀
  • 项目所需的其他要素
  • 用于编程的计算机

修改Itead Sonoff WiFi Basic固件(基本步骤)

Itead Sonoff电路

要修改Itead Sonoff,您必须购买一个并 遵循后续步骤:

处理设备之前,请确保已断开连接。 建议不要在将继电器或电路连接到网络时对其进行操作,因为您将使用220v的交流电,并且它不是在低电压下工作的无害直流电路...

  1. 从Sonoff上取下塑料盖 才能访问内部电路。 您可以先使用螺丝刀卸下侧盖,然后撬起连接主机壳两部分的接头,直到可以卸下为止。
  2. 如果看一下前面的电路,它们可以很好地区分 ESP8266模块的各个部分:
    1. 继电器周围的电气元件来自AC / DC转换器。
    2. 方形黑色组件是在5v(控制部分)和220v(输出)下工作的继电器。
    3. 在中心,您有一些串行连接针脚。 您可以使用它们来对微控制器进行编程或连接更多元件。 在GPIO14上,您可以连接执行器或传感器。
    4. 您还将在引脚旁边看到一个按钮。 您可以按它来更改可以设置的模式。
    5. 指示操作及其所处的模式或状态的LED。
    6. 在PBC的两端各有两个绿色连接器。 其中一个是输入,另一个是输出。 最接近继电器的是交流输入,即设备连接到电网的位置。 另一个是插座,您可以在其中连接要关闭或打开的设备。 请记住,它支持高达10A的电流,即2,2v时的功耗为220kW。
  3. 现在,您将使用连接引脚来加载程序。 为了她 您将需要FTDI或TTL,使您可以将这些针脚连接到计算机上的USB。 但是除了连接它之外,您还必须记住,集成微控制器具有两种工作模式,一种是UART模式,另一种是闪存。 UART模式允许您加载程序并执行FLASH。 要进入UART模式以编写程序,您需要将GPIO0(LOW)和GPIO2(HIGH)引脚置于特定状态。 程序将通过标记为RX和TX的引脚加载。 当然,您还必须使用3v3和GND电源引脚,以及GPIO0按钮,LED或GPIO13和GPIO12上的继电器。
  4. 正确建立连接并用USB电缆将其连接到PC后,就可以开始编程了。 请记住,当 FTDI必须穿越RX和TX连接,即从Itead的RX到FTDI的TX,反之亦然。
  5. 后来,这将是使用的问题 Arduino IDE 为所需的控件创建必要的代码(必须选择ESP8266开发板作为要记录的微控制器设备)。 它也可以帮助您 XosePérez开发的固件。 叫做ESPurna 并且特定于Sonoff WiFi。 通过其控制面板,您可以控制网络和安全参数。
  6. 最后,当您已经拥有了销钉时,可以将销钉退回 GPIO0和GPIO2为高电平高状态 分别返回到FLASH模式并运行您的程序。
  7. 完成后,您可以 在Sonoff上建立正确的连接 连接所需的设备并为其供电。 从应用程序中,您可以控制一切...

更多信息 - 简易编程

使用Tasmota

要用Tasmota而不是ESPurna做到这一点, 通用步骤 为此,它们将是:

  1. 您必须像上一个案例一样首先打开Itead Sonoff的案例。
  2. 然后,您应该焊接布线或引脚以能够建立电源连接以及USB至UART TTL适配器。
  3. 转到Arduino IDE,然后在Tools中必须选择ESP8266开发板而不是 Arduino UNO 或默认情况下您拥有的那个。 您安装新板。
  4. 现在 下载Tasmota 并正确安装以与Arduino IDE集成。
  5. 现在是时候根据需要编程和配置项目并将其保存到主板上了。完成后,您可以像ESPurna一样将组件连接到Sonoff。

更多信息 - 家庭自动化


7条评论,留下您的评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   胡安

    Web服务器无法正常工作,无法在浏览器中加载。

    1.    艾萨克

      你好约翰,
      您是说将IP放在网络浏览器中? 您确定在局域网中设置了正确的IP吗? 公用IP无效。 它必须是分配给子程序的那个。 另外,在html代码中,您还必须用适当的IP替换X。
      您好!

      1.    约翰

        实际上,我两者都做过,但是当我在浏览器中加载IP时,它使我连接失败。 同样,当我运行Web服务器时,它不是以按钮的形式加载的,而是以文本形式加载的。

        1.    艾萨克

          你好约翰,
          它为我正确地工作,我不明白为什么这会发生在你身上...
          我将进行调查,如果发现问题,我会通知您。
          问候和感谢您的阅读

  2.  

    你好,
    我不明白我们拥有的图书馆会使用AT代码…。

    我也没有看到您使用ESP8266的WIFI模式,这是本文的重点。

    放置一个更清晰明了的示例,您将看到该项目将理解。

    问候。

    1.   

      我忘了,
      如果您想要的是继电器,ESP8266会自己控制它,如果要加载固件,请使用Arduino。

      另一个问候。

  3.   安德烈斯·雷伯托·古兹曼·加尔文

    我按照您的所有步骤操作,对我来说不起作用,如何知道为我的ESP8266分配了什么IP