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

    文章

    7646

    浏览量

    152053
  • 继电器
    +关注

    关注

    132

    文章

    5361

    浏览量

    149529
  • 服务器
    +关注

    关注

    12

    文章

    9295

    浏览量

    86006
收藏 人收藏

    评论

    相关推荐

    ESP8266系列模块选型

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

    esp8266,tcp通信实例详解

    ESP8266工作在station模式下,需确认ESP8266已经连接AP(路由器)并分配到IP地址,启用client连接,ESP8266工作
    发表于 11-04 10:14 4.3w次阅读
    <b class='flag-5'>esp8266</b>,tcp通信实例详解

    使用esp8266实现STM32联网(最简单USART方法)

    上一篇 esp8266怎么配置esp8266和USB转TTL连接esp8266简单介绍esp8266连接路由器esp8266通过路由器连接在
    发表于 11-22 11:51 1.3w次阅读

    esp8266 at指令集详解

    ESP8266可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域。本文介绍了esp8266 at指令集,以及ESP8266使用AT指令开发示例
    发表于 12-08 13:52 14.4w次阅读
    <b class='flag-5'>esp8266</b> at指令集详解

    esp8266简介与esp8266引脚

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

    ESP8266 控制开关

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

    ESP8266-NodeMCU

    ²C1.8 SPI1.9 ESP8266引脚功能一览ESP8266-NodeMCU引脚功能1.1 可用引脚  ESP8266芯片有17个GPIO引脚(GPIO0~GPIO16)。这些引脚中的GPIO6~GPIO 11被用于连接开
    发表于 10-25 16:51 43次下载
    <b class='flag-5'>ESP8266</b>-NodeMCU

    ESP8266 wifi模块开发汇总

                                  ESP8266 wifi模块开发汇总 ESP8266 wifi模块开发汇总本文档主要介绍开发者在ESP8266开发中常见的一些问题。 这些
    发表于 11-05 19:21 188次下载
    <b class='flag-5'>ESP8266</b> wifi模块开发汇总

    ESP8266

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

    ESP8266学习之路——环境部署

    文章目录前言ESP8266SDK前言ESP8266SDK官方链接
    发表于 12-22 18:47 28次下载
    <b class='flag-5'>ESP8266</b>学习之路——环境部署

    ESP8266 Non OS AT指令使⽤示例

    电子发烧友网站提供《ESP8266 Non OS AT指令使⽤示例.pdf》资料免费下载
    发表于 09-23 14:38 1次下载
    <b class='flag-5'>ESP8266</b> Non OS AT指令<b class='flag-5'>使</b>⽤示例

    ESP8266硬件

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

    esp8266驱动电机

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

    采用ESP8266的物联网开关

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

    乐鑫ESP8266-DevKitC_入门指南

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