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(“”);

}

}

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

    关注

    133

    文章

    5531

    浏览量

    153764
  • ESP8266
    +关注

    关注

    51

    文章

    966

    浏览量

    48998
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于芯源CW32 MCU智能家居照明控制系统设计与实现

    。 光照传感器:用于检测环境亮度,自动调节灯光亮度。 Wi-Fi模块(如ESP8266):实现与手机应用或智能音箱的无线通信,远程控制照明系统。 继电器模块:控制灯光的开关。 按键/触
    发表于 12-03 06:06

    晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) ESP8285/ESP8266芯片案例

    【应用】国产26MHz频率晶振应用于物联网WIFI物联网模块(串口转WiFi模块),Espressif(乐鑫)ESP8285/ESP8266芯片匹配测试OKESP8285其实是ESP8266的升级版
    的头像 发表于 11-21 15:37 4043次阅读
    晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) <b class='flag-5'>ESP</b>8285/<b class='flag-5'>ESP8266</b>芯片案例

    ESP8266ESP32开发常见的2种下载方式

    ESP32和ESP8266是性价比很高而且使用较为广泛的的Wi-Fi模块,在物联网(IoT)领域的DIY项目中可以首先考虑这2款产品。 两款芯片都属于32位处理器。ESP32是低功耗双核80MHz
    的头像 发表于 11-10 20:30 318次阅读
    <b class='flag-5'>ESP8266</b>和<b class='flag-5'>ESP</b>32开发<b class='flag-5'>板</b>常见的2种下载方式

    ESP8266ESP32开发常见的2种下载方式

    ESP8266全IO口引出,直接下载无需复位! ESP32功能框图 基于arduino的ESP32/ESP8266开发环境搭建 1.在arduino ide文件里选择首选项,然后选
    发表于 10-24 18:04

    STM32+esp8266连接机智云,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码移植)

    本教程将详细介绍如何将STM32微控制器与ESP8266Wi-Fi模块连接到机智云平台,实现温湿度数据的上传与继电器的远程控制。通过此过程,您将学会如何配置机智云平台,烧录ESP8266
    的头像 发表于 07-15 18:54 742次阅读
    STM32+<b class='flag-5'>esp8266</b>连接机智云,上传温湿度数据并控制<b class='flag-5'>继电器</b>开关(平台配置、代码生成、代码移植)

    ESP8266烧录与机智云一键配网教程

    ESP8266模块因其低成本和高性能,广泛应用于智能家居和工业自动化等领域。机智云平台提供了一键配网功能,简化了设备的联网过程。本教程将详细介绍如何使用ESP8266进行烧录,并通过机
    的头像 发表于 05-24 11:04 1549次阅读
    <b class='flag-5'>ESP8266</b>烧录与机智云一键配网教程

    在工业自动化中使用固态继电器时应避免的5个错误

    固态继电器(SSR)已成为工业自动化的无名英雄。它们安静、可靠、速度快——这是继电器应具备的所有特点。但就像高科技驾驶舱中的新手飞行员一样,即使是经验丰富的工程师在使用SSR时也会犯常见错误。本文让我们来看看应如何避免在工业
    的头像 发表于 04-20 11:42 509次阅读

    零知开源——ESP8266+MPU6050 实现运动姿态检测

    零知ESP8266的I2C通信        在运动姿态检测、机器人平衡控制、VR头戴设备等应用中,MPU6050(三轴加速度计+三轴陀螺仪)是一个常见的姿态传感器。而ESP8266作为一款低功耗
    的头像 发表于 02-20 17:54 2805次阅读
    零知开源——<b class='flag-5'>ESP8266</b>+MPU6050 <b class='flag-5'>实现</b>运动姿态检测

    STM32和ESP32应该学哪个

    STM32 和 ESP32,哪个更适合我们学习? 这两个虽然都是单片机,但是各自的应用领域不一样,不存在谁取代谁的关系。 STM32 历史悠久,产品线非常的丰富,应用领域涉及医疗、汽车、工业自动化
    的头像 发表于 02-18 09:52 1115次阅读

    继电器在智能家居中的应用作用

    、电流、温度等)自动切换电路的开闭状态。继电器的主要功能是实现电路的自动控制和保护,它们可以在不需要人工干预的情况下,根据预设的条件自动执行
    的头像 发表于 12-28 11:10 1698次阅读

    继电器的作用及故障排除

    人工干预,提高系统的自动化程度。 信号放大: 继电器可以将小信号转换为大信号,实现信号的放大。 隔离保护: 继电器可以在不同电压等级的电路之间提供隔离,保护电路不受损害。 电路转换:
    的头像 发表于 12-28 11:05 2010次阅读

    继电器自动化控制中的作用

    在现代工业自动化和控制系统中,继电器作为一种电气控制元件,其作用不容小觑。继电器能够根据输入信号(如电压、电流、温度、压力等)的变化,自动或手动切换电路,从而
    的头像 发表于 12-28 10:52 1830次阅读

    固态继电器在工业自动化中的应用

    随着工业自动化技术的不断发展,对控制元件的性能要求也越来越高。固态继电器(SSR)以其独特的优势在这一领域中扮演着越来越重要的角色。 1. 固态继电器的定义和工作原理 固态继电器是一种
    的头像 发表于 12-11 16:19 2000次阅读

    时间继电器自动化中的应用

    随着工业自动化技术的不断发展,时间继电器作为一种基本的控制元件,在自动化控制系统中扮演着越来越重要的角色。时间继电器能够实现对电气设备的延时
    的头像 发表于 12-09 10:25 2634次阅读

    继电器驱动芯片CN8021可用于自动化设备,兼容BL8023

    继电器驱动芯片CN8021可用于自动化设备,兼容BL8023
    的头像 发表于 12-06 10:07 1658次阅读
    <b class='flag-5'>继电器</b>驱动芯片CN8021可用于<b class='flag-5'>自动化</b>设备,兼容BL8023