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

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

3天内不再提示

基于ESP8266电路使房屋备用开关照明工作

电子设计 来源:电路城 作者:电路城 2021-04-28 14:08 次阅读

我们可以使用ESP8266电路使房屋中的照明开关更智能,因此,如果没有WiFi,它将继续作为普通开关工作。

硬件组件:

NodeMCU Lolin V3模组ESP8266 ESP-12F Wifi× 1个

光耦合器的继电器模块× 1个

pc817光耦合器× 1个

AC-DC电源3.3V× 1个

AC-DC电源5V× 1个

电阻组× 1个

软件应用程序和在线服务:

Arduino IDE

手动工具和制造机:

烙铁(通用)

多功能工具,螺丝刀

我们可以使用ESP8266电路使房屋中的照明开关更智能,因此,如果出现问题(例如,没有WiFi或服务器关闭),它将继续作为普通开关工作。

注意!

以下电路的某些部分在电源电压下工作。电源电压不是玩具,需要注意规避风险。

下图中红色标记的区域低于电源电压!

让我们看一下电路:

我在市电电压为230V的欧盟使用此电路!如果要使用它,而您所在区域的电源电压不是230V,则可以通过更换图中所示的电源来使用。

电路

如果主电源电压不是230伏,则必须用正确的电压替换图中的2个黑色电源模块。

除了普通的备用开关外,还必须像安装其他备用开关一样安装继电器模块。该继电器模块具有一个光耦合器,因此ESP8266微控制器是完全光学隔离的。

在图中,上方的黑色立方体是一个230 V至3.3 V的开关电源(如果电源电压不是230伏,则必须更换!)。它的230 V输入连接到灯泡,其输出通过光耦合器(pc817)路由到ESP8266 D2引脚。这用于监视灯泡是否点亮。输入D2必须通过上拉电阻切换至3.3V。

下部的黑色立方体为230 V至5 V(如果市电电压不是230,则还必须更换!)开关模式电源,用于为电路的低压部分供电

备用开关如何工作

ESP8266微控制器必须经过编程才能使电路正常工作。打开Arduino应用并复制此原理图。重写WLAN连接所需的SSID和密码对以及MQTT服务器的IP地址。完成后,将代码上传到ESP8266。

/**************************************/

// https://myhomethings.eu //

// Alternative switch - ESP8266 //

// Board: NodeMCU 1.0 ESP-12E //

/**************************************/

#include 《ESP8266WiFi.h》

#include 《PubSubClient.h》

const char* ssid = “SSID”;

const char* password = “Password”;

const char* mqtt_server = “192.168.x.xxx”;

WiFiClient espClient;

PubSubClient client(espClient);

int relayPin = D5;

int lightControllPin = D2;

long previousMillis = 0;

int relayState = 1;

int switchState = 0;

int switchFlag = 0;

void setup_wifi()

{

delay(100);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED)

{

delay(500);

}

randomSeed(micros());

}

void reconnect()

{

while (!client.connected())

{

String clientId = “ESP8266-AlternativeSwitch”;

if (client.connect(clientId.c_str()))

{

client.subscribe(“Light_topic”);

}

else

{

delay(6000);

}

}

}

void callback(char* topic, byte* payload, unsigned int length)

{

payload[length] = ‘’;

String strTopic = String(topic);

String strPayload = String((char * ) payload);

if(strTopic == “Light_topic” && switchFlag == 0)

{

if(strPayload == “false”)

{

if(digitalRead(lightControllPin) == LOW)

{

if(relayState == 1)

{

digitalWrite(relayPin, LOW);

relayState = 0;

}

else

{

digitalWrite(relayPin, HIGH);

relayState = 1;

}

}

}

if(strPayload == “true”)

{

if(digitalRead(lightControllPin) == HIGH)

{

if(relayState == 1)

{

digitalWrite(relayPin, LOW);

relayState = 0;

}

else

{

digitalWrite(relayPin, HIGH);

relayState = 1;

}

}

}

}

}

void setup()

{

setup_wifi();

client.setServer(mqtt_server, 1883);

client.setCallback(callback);

pinMode(relayPin, OUTPUT);

pinMode(lightControllPin, INPUT);

digitalWrite(relayPin, HIGH);

}

void loop()

{

unsigned long Millis = millis();

if (Millis - previousMillis 》= 1000)

{

previousMillis = Millis;

switchFlag = 0;

}

if (!client.connected())

{

reconnect();

}

client.loop();

if(digitalRead(lightControllPin) == LOW)

{

if(switchState == 0)

{

client.publish(“Light_topic”, “true”);

switchState = 1;

switchFlag = 1;

}

}

if(digitalRead(lightControllPin) == HIGH)

{

if(switchState == 1)

{

client.publish(“Light_topic”, “false”);

switchState = 0;

switchFlag = 1;

}

}

}

说明

在第41行,我们输入设备的唯一ID。值得对此进行更改,否则我们可以通过将其更改为以下代码片段来创建更为简洁的生成的ID。

String clientId = “ESP8266ClientID-”;

clientId += String(random(0xffff), HEX);

在第45行中,我们在MQTT服务器上订阅了“ Light_topic”。这是一个包含指示灯状态的数据点。“回调”功能监视状态变化。

client.subscribe(“Light_topic”);

如果第60行的变量“ strTopic”的值为“ Light_topic”,而“ switchFlag”的值为“ 0”,则MQTT服务器上有更改。当使用常规开关打开灯时,“ switchFlag”的值为“ 1”。在这种情况下这是必需的,因为如果我们手动打开灯,则MQTT服务器上的灯的值会更改,并且由于订阅,该条件会再次满足,并且继电器会再次打开

if(strTopic == “Lampa_topic” && switchFlag == 0)

第62行:“ strPayload”的值为“ false”。这意味着必须根据从服务器收到的命令关闭指示灯。

if(strPayload == “false”)

第64行:检查灯泡是否点亮。如果它没有点亮,则程序不执行任何操作。尽管有此命令,打开灯泡也不是一件好事。

if(digitalRead(lightControllPin) == LOW) // it is on

值“ LOW”表示灯已打开,因为默认情况下D2引脚被拉至3.3 V,即“ HIGH”。灯泡打开时,pc817光耦合器将其下拉至GND。

如果到目前为止满足所有条件,则必须检查继电器的状态并进行相应的切换。

if(relayState == 1)

{

digitalWrite(relayPin, LOW);

relayState = 0;

}

else

{

digitalWrite(relayPin, HIGH);

relayState = 1;

}

第124行:程序检查灯泡是否点亮。如果是这样,并且在以下情况下,开关的状态为“ 0”。因此将其关闭,进行了手动切换。必须使用“ client.publish()”功能将其传输到MQTT服务器,并将“ Light_topic”数据点设置为“ true”。

if(digitalRead(lightControllPin) == LOW)

{

if(switchState == 0)

{

client.publish(“Lampa_topic”, “true”);

switchState = 1;

switchFlag = 1;

}

}

那就是代码的解释,我希望我可以理解。

调试后,新设备将在MQTT下的iobroker中显示为新数据点。

安装了IoT适配器后,您可以连接到Google Home或Amazon Alexa,还可以通过语音命令控制灯泡。
责任编辑:pj

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

    关注

    48

    文章

    6786

    浏览量

    147562
  • 继电器
    +关注

    关注

    131

    文章

    5013

    浏览量

    145949
  • 服务器
    +关注

    关注

    12

    文章

    8086

    浏览量

    82429
收藏 人收藏

    评论

    相关推荐

    ESP8266系列模块选型

    ESP8266系列模块选型ESP8266 ESP-01 ESO-02
    发表于 01-05 17:34 37次下载

    esp8266中文资料汇总(esp8266引脚图_与单片机连接_串口wifi实例)

    本文首先介绍了esp8266引脚图功能与esp8266特性,其次介绍了 单片机与ESP8266串口连接及最小系统连接与程序分享,最后介绍了esp8266串口wifi实例。
    发表于 05-24 08:36 22.1w次阅读
    <b class='flag-5'>esp8266</b>中文资料汇总(<b class='flag-5'>esp8266</b>引脚图_与单片机连接_串口wifi实例)

    如何将ESP8266连接到WiFi

    在之前的ESP8266项目中,我简要介绍了ESP8266 WiFi模块,如何开始使用ESP8266和Arduino,ESP8266 ESP-
    的头像 发表于 07-29 11:32 8.5w次阅读
    如何将<b class='flag-5'>ESP8266</b>连接到WiFi

    esp8266简介与esp8266引脚

    esp8266工作温度范围大,且能够保持稳定的性能,能适应各种操作环境。我们将详细看看ESP8266。这是一个无线保真(Wi-Fi)的小工具。它是在芯片(SoC)一个实用系统,它是内置的与TCP
    发表于 11-27 11:39 24.7w次阅读
    <b class='flag-5'>esp8266</b>简介与<b class='flag-5'>esp8266</b>引脚

    怎样使用ESP8266 Flasher和Programmer烧写ESP8266 AT固件

    选择要连接的COM端口ESP8266 Flasher和Programmer + ESP8266 Wifi串行收发器模块。将BAUDRATE设置为115200。
    的头像 发表于 11-18 17:58 2w次阅读

    ESP8266 控制开关

    ESP8266为服务端,当用户的访问设备与ESP8266在同一个Wi-Fi下时,可以通过ESP8266的IP地址来访问控制灯光开关的页面。使用方法:第一步、将下面的代码修改过Wi-F
    发表于 10-21 16:21 28次下载
    <b class='flag-5'>ESP8266</b> 控制<b class='flag-5'>开关</b>

    ESP8266

    优点1.性能稳定ESP8266EX 的工作温度范围大,且能够保持稳定的性能,能适应各种操作环境。2.低功耗ESP8266EX 专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现
    发表于 11-07 10:36 24次下载
    <b class='flag-5'>ESP8266</b>

    ESP8266之硬件机理

    ESP8266硬件机理1.ESP8266简介2.硬件结构3.运行机理3.1 Warning3.2 机理4.快速搭建服务器Attention4.1进入STA模式4.2复位4.3获取附近能够连接
    发表于 12-09 12:21 29次下载
    <b class='flag-5'>ESP8266</b>之硬件机理

    ESP8266硬件

    目前市面上有关ESP8266模组有很多的种类,但是都是使用的乐鑫公司开发的ESP8266的wifi模组,而且种类也很多。
    的头像 发表于 02-10 14:25 3076次阅读
    <b class='flag-5'>ESP8266</b>硬件

    esp8266驱动电机

    利用esp8266自制冲bian装置[doge]文章目录 利用esp8266自制冲bian装置[doge] 一、硬件介绍 二、设备连接 1.8266引脚图 2.代码展示 一、硬件介绍 esp8266
    发表于 03-17 14:51 1次下载
    <b class='flag-5'>esp8266</b>驱动电机

    基于arduino用esp8266和继电器实现小爱同学开关

    esp8266和继电器实现小爱同学开关灯 房间的灯离床太远了,于是想到用esp8266配合点灯科技app来实现用小爱同学开关灯。于是就用小led灯做了测试。 这些是我们需要的材料 在
    发表于 05-04 11:15 1次下载
    基于arduino用<b class='flag-5'>esp8266</b>和继电器实现小爱同学<b class='flag-5'>开关</b>灯

    采用ESP8266的物联网开关

    电子发烧友网站提供《采用ESP8266的物联网开关.zip》资料免费下载
    发表于 07-06 15:03 4次下载
    采用<b class='flag-5'>ESP8266</b>的物联网<b class='flag-5'>开关</b>

    nodemcu和esp8266是什么关系?

    nodemcu和esp8266是什么关系 nodemcu和esp8266是什么关系?通俗理解就是nodemcu是一个开发板,基于esp8266的开发板。 目前市面上搭载有ESP8266
    的头像 发表于 10-20 14:53 2169次阅读
    nodemcu和<b class='flag-5'>esp8266</b>是什么关系?

    乐鑫ESP8266-DevKitS-V1参考设计

    、天线开关、射频balun、功率放大器、低噪放大器、过滤器和电源管理模块等,仅需很少的外围电路,可将所占PCB空间降低。ESP8266EX专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术
    发表于 10-19 16:13 1次下载

    乐鑫ESP8266-DevKitC-V1参考设计

    、天线开关、射频balun、功率放大器、低噪放大器、过滤器和电源管理模块等,仅需很少的外围电路,可将所占PCB空间降低。ESP8266EX专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术
    发表于 10-19 16:13 2次下载