0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用继电器板和ESP8266实现家居自动化

454398 来源:工程师吴畏 2019-07-31 17:47 次阅读

硬件

此版本的主要组件是一个简单的继电器板,可用于切换高达250V AC的电压和10安培的最大电流:

用于高压项目的简单继电器板。

它将由基于ESP8266IoT开发板控制,该开发板与Arduino IDE完全兼容。或者,您也可以使用标准的Arduino和ESP8266(或类似的)分线板。

ESP8266。

你只有需要在这些设备之间建立两个连接。其中一个是接地,另一个是用于切换继电器的控制线,我选择连接到开发板的D2(数字引脚2)。

继电器和MCU需要连接到一个五伏电源,在我的情况下,用一个简单的直流插孔完成。

除此之外,你还需要一个标准的电源插座,一个IEC插头,最好是一个带有接地的插头。引脚和用于打开和关闭MCU的开关。此外,还需要一个外壳。我选择使用标准灰色项目框:

使用标准灰色项目框来容纳构建。

构建

构建此设备的过程非常简单。首先在机箱中制作必要的剪切:

在项目框中进行必要的剪切。

创建它们后,你可以安装组件。大多数组件都会卡入到位。我仍然决定添加热胶来密封外壳,这样灰尘就不会轻易进入:

使用胶水确保没有任何动作,并使盒子不易受灰尘影响。

完成后,是时候连接这些组件和其他电子设备了。我在三根电源线的一侧添加了电缆鞋并将它们连接到IEC连接器:

在三根电源线的一侧添加电缆鞋并连接到IEC连接器。

可以交换相位和中性线(欧洲的棕色和蓝色,美国的黑色/红色和白色)。然而,地球连接必须在中间。我将相连接到电源插座并将中性线连接到继电器的COM2端子,然后将继电器的NO2(常开)端子连接到插座:

将相位连接到电源插座并将中性线连接到COM2端子在将继电器的NO2(常开)端子连接到插座之前的继电器。

然后我将必要的电缆添加到DC插头。它们用于向微控制器和继电器提供电压。最后要做的是连接继电器和MCU,如上所述。然后我将热缩管添加到关键部分以防止短路并测试组件:

将必要的电缆添加到DC插头。

一旦一切都适合,收起电缆并关闭外壳。

软件

在MCU上运行的软件将您连接到无线网络,并像在Web服务器上一样接受端口80上的客户端请求。然后,您可以通过任何Web浏览器访问该设备:

通过任何网络浏览器访问设备。

我不会讨论详细的代码,以保持文章简短。但是,我详细记录了源代码,因此应该很容易理解。它可以在文章末尾找到。

结论

正如你所看到的,它是构建这样的设备并不是非常困难。大部分工作都是由软件完成的。虽然这是最基本的方法,但您可以添加传感器,计时器和其他设备来自动控制连接的设备。此外,如果您计划在无人看管的情况下使用此设备,我建议添加保险丝

完整的项目代码

#include

#define RELAY_PIN D2

const char* ssid = “YOUR_WIFI_NETWORK”;

const char* pass = “YOUR_NETWORKS_PASSWORD”;

WiFiServer server(80);

void setup()

{

Serial.begin(9600);

// You could add an EEPROM to store the last state if the device gets powered off.

// See: https://maker.pro/arduino/tutorial/how-to-permanently-store-data-on-your-arduino

//

// It‘s also possible to store the website and stylesheets/additional scripts on an SD

// card and display the files to a client when they connect.

// See: https://maker.pro/arduino/tutorial/how-to-use-an-sd-card-with-your-arduino

//

// However, this simple example will always start with the relay turned on and a very

// basic HTML page with two buttons.

pinMode(RELAY_PIN, OUTPUT);

digitalWrite(RELAY_PIN, HIGH);

// Connect to your local network

WiFi.begin(ssid, pass);

while (WiFi.status() != WL_CONNECTED)

delay(250);

Serial.print(“Connected to network: ”);

Serial.println(ssid);

// Start the server

// A client will connect to this server to change the state of the relay

server.begin();

Serial.print(“Server started with address: ”);

Serial.print(“http://”);

Serial.print(WiFi.localIP());

Serial.println(“/”);

}

void loop()

{

// Check for incoming connections

WiFiClient client = server.available();

if (!client)

return;

// Wait for the client to send data

while(!client.available())

delay(5);

// Read the first line of the HTTP request

// which will contain something like

// METHOD /requested_url HTTP_VERSION

// for example:

// PUT /dev2?relay=1&state=on HTTP/1.1

// However, for the sake of simplicity this device will

// respond to GET requests so that they can be sent with

// any web browser. Requests to this device will look

// similar to this:

// GET /state=on HTTP/1.1

String request = client.readStringUntil(’ ‘);

client.flush();

int state = 0, error = 0;

// Check, whether the request contains “/state=”

if (request.indexOf(“state=”) != -1)

{

// HIGH and LOW are swapped in this program because my

// relay is turned on when its input pin is pulled LOW.

if(request.indexOf(“state=on”) != -1)

{

digitalWrite(RELAY_PIN, HIGH);

state = LOW;

}

else if (request.indexOf(“state=off”) != -1)

{

digitalWrite(RELAY_PIN, LOW);

state = HIGH;

}

else

{

error = 1;

Serial.print(“Unknown request: ”);

Serial.println(request);

}

}

// Return the response

// If no error occurred, send an HTML page with two buttons

// so that the device can be managed.

// Otherwise, send an error message

if(error == 0)

{

// Return a response header

client.println(“HTTP/1.1 200 OK”);

client.println(“Content-Type: text/html”);

// The HTTP response body is separated from the header by an empty line

// (actually a line containing , but this will work)

client.println(“”);

// Return the response body (an html page)

client.println(“”);

client.println(“”);

client.println(“”);

client.println(“”);

client.println(“”);

client.print(“The relay is turned ”);

client.print(state==HIGH?“on”:“off”);

client.println(“

”);

client.println(“Change state:”);

client.println(“Device on”);

client.println(“Device off”);

client.println(“”);

client.println(“”);

}

else

{

// Return a response header

client.println(“HTTP/1.1 400 Bad Request”);

client.println(“Content-Type: text/html”);

client.println(“”);

client.println(“”);

client.println(“Unknown request parameter supplied!

”);

client.println(“Back to main page”);

client.println(“”);

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 继电器
    +关注

    关注

    132

    文章

    5314

    浏览量

    148326
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    44751
收藏 人收藏

    评论

    相关推荐

    ESP8266 太空人动画的 OLED 显示

    ESP8266 太空人动画的 OLED 显示
    的头像 发表于 10-08 15:06 175次阅读
    <b class='flag-5'>ESP8266</b> 太空人动画的 OLED 显示

    ESP8266 通过 MQTT 协议实现 LED 的远程控制

    本文简要介绍了搭建 EMQX 服务器实现基于 MQTT 协议远程控制 NodeMCU ESP8266 板载 LED 的解决方案。
    的头像 发表于 09-25 09:11 1632次阅读
    <b class='flag-5'>ESP8266</b> 通过 MQTT 协议<b class='flag-5'>实现</b> LED 的远程控制

    esp32和esp8266代码共用吗

    本文将介绍ESP32和ESP8266两款流行的微控制器在代码共用性方面的可能性与差异性。 一、引言 随着物联网技术的飞速发展,越来越多的智能设备开始进入我们的生活。其中,ESP32和ESP82
    的头像 发表于 08-19 18:23 882次阅读

    esp8266esp32区别是什么

    以下是关于ESP8266ESP32的主要区别: 处理器和架构 : ESP8266 :使用一个Tensilica L106 80MHz的处理器,属于Xtensa架构。 ESP32 :使
    的头像 发表于 08-19 18:16 3701次阅读

    esp8266不烧录可以使用吗

    ESP8266是一款非常流行的Wi-Fi模块,广泛应用于物联网项目中。然而,如果不进行烧录,ESP8266将无法正常工作。 1. ESP8266简介 ESP8266是一款由Espres
    的头像 发表于 08-19 17:28 562次阅读

    esp8266wifi模块怎么连接手机

    ESP8266 WiFi模块连接手机主要可以通过两种方式实现: 通过路由器连接(STA模式)和直接作为热点连接(AP模式) 。以下是两种连接方式的步骤: 一、通过路由器连接(STA模式) 配置
    的头像 发表于 08-19 17:27 1828次阅读

    机智云ESP8266开发RGB彩灯控件

    随着智能家居技术的迅猛发展,RGB彩灯控件正逐渐成为现代家庭不可或缺的一部分。在这一潮流中,机智云(Gizwits)的ESP8266开发RGB彩灯控件以其先进的物联网技术和多样的灯
    的头像 发表于 08-09 08:10 322次阅读
    机智云<b class='flag-5'>ESP8266</b>开发<b class='flag-5'>板</b>RGB彩灯控件

    如何在ESP8266实现wifi direct?

    我想知道是否有任何机会在ESP8266实现 wifi direct。在官方文档中,wifi direct似乎受支持,但我找不到任何示例或AT命令让我在上设置此模式。 有这方面的
    发表于 07-19 14:43

    ESP8266控制继电器,芯片会频繁复位的原因?

    事情是这样的,我们通过8266控制继电器8266的电源是220V转3.3V,继电器的电源和8266
    发表于 07-19 10:51

    如何让Windows 8自动连接到ESP8266

    有没有办法让 Windows 8 自动连接到ESP8266,而不考虑同一台 PC 中的有线以太网连接? 我还注意到,由于每个页面之前都会暂停,连接到ESP8266使我的以太网互联网变慢 - 直到
    发表于 07-18 08:08

    ESP8266网络天气时钟OLED显示

    基于ESP8266实现网络获取天气和时钟并OLED显示
    的头像 发表于 06-28 04:46 947次阅读
    <b class='flag-5'>ESP8266</b>网络天气时钟OLED显示

    继电器在工业自动化领域的应用

    随着工业自动化技术的不断发展,继电器作为电气控制系统中不可或缺的元件,在工业自动化领域发挥着越来越重要的作用。继电器通过控制电路的通断,实现
    的头像 发表于 06-24 11:53 785次阅读

    国产低成本Wi-Fi SoC解决方案芯片ESP8266ESP8285对比差异

    ESP8266ESP8285对比差异 ESP8285相当于在ESP8266基础上多加了1/2MB Flash, ESP8285与
    的头像 发表于 05-17 11:44 1122次阅读
    国产低成本Wi-Fi SoC解决方案芯片<b class='flag-5'>ESP8266</b>与<b class='flag-5'>ESP</b>8285对比差异

    ESP8266自动下载电路分析

    网上找到了一些解释,然而并不能让我信服……可能大多参考了正点原子的自动下载电路原理,但人家的自动下载功能也需要 mcu-isp 软件配合才能实现啊……等等,吐槽之中获得灵感,ESP8266
    的头像 发表于 11-25 09:29 3386次阅读
    <b class='flag-5'>ESP8266</b><b class='flag-5'>自动</b>下载电路分析

    如何减小esp8266启动时继电器的抖动?

    如何减小esp8266启动时继电器的抖动
    发表于 11-10 06:32