回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(246)---基于 ESP8266 的无线物联网blinker开关(使用单路继电器) 简单

头像 驴友花雕 2025.02.07 26 0

00.jpg
23.jpg

10-.jpg
19.jpg

单路继电器模块是一种用于电路控制的电子元件,它能够通过一个输入信号控制一个输出信号。这种模块通常包含一个继电器和一个控制电路。当输入信号(如电流或电压)达到一定阈值时,继电器会被激活,从而关闭或开启一个外部电路。

单路继电器模块的主要应用包括:

自动化控制系统:用于开关、启动或停止设备。

电源管理:用于切换电源或保护电路。

传感器接口:用于将传感器信号转换为控制信号。

这种模块的优点是结构简单、成本低、使用方便。

 

60-9.jpg

 【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
  实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
  实验项目之十九:基于 ESP8266 的无线物联网开关(使用单路继电器)

实验开源代码

 

代码
/*
  【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
   实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
   实验项目之十九:基于 ESP8266 的无线物联网开关(使用单路继电器)
*/

#define BLINKER_WIFI            // 启用Blinker的WiFi功能

#include <ESP8266WiFi.h>        // 本程序使用 ESP8266WiFi库
#include <Blinker.h>            // 引入Blinker库

// Blinker授权码
char auth[] = "d251bb68ea";  

int count = 0;            // 时间计数器
bool WIFI_Status = true;  // WiFi状态标志位

#define RELAY_PIN D1      // 要操作的继电器引脚
bool relayState = false;  // 继电器状态标志位

// 创建Blinker按钮对象
BlinkerButton Button1("btn-abc");

/* 配网函数 */
void smartConfig()
{
  WiFi.mode(WIFI_STA); // 设置STA模式
  Serial.println("\r\nWait for Smartconfig..."); // 打印log信息
  WiFi.beginSmartConfig(); // 开始SmartConfig,等待手机端发出用户名和密码
  while(1)
  {
    Serial.println(".");
    digitalWrite(LED_BUILTIN,HIGH); // 指示灯闪烁
    delay(1000);
    digitalWrite(LED_BUILTIN,LOW); // 指示灯闪烁
    delay(1000);
    if(WiFi.smartConfigDone()) // 配网成功,接收到SSID和密码
    {
      Serial.println("SmartConfig Success");
      Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
      Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
      break;      
    }
  }  
}

/* 继电器控制函数 */
void relayControl(const String & state)
{
    BLINKER_LOG("Set relay state: ", state);
    if (state == BLINKER_CMD_ON) {     // 打开继电器
        digitalWrite(LED_BUILTIN, HIGH);
        digitalWrite(RELAY_PIN, HIGH);
        relayState = true;
    }
    else if (state == BLINKER_CMD_OFF) {   // 关闭继电器
        digitalWrite(LED_BUILTIN, LOW);
        digitalWrite(RELAY_PIN, LOW);
        relayState = false;
    }
}

/* 按钮回调函数 */
void button1_callback(const String & state)
{
    relayControl(state); // 调用继电器控制函数
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    
    pinMode(RELAY_PIN, OUTPUT);
    digitalWrite(RELAY_PIN, LOW); 
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);
    Serial.println("\r\n正在连接WIFI...");

    while(WiFi.status() != WL_CONNECTED) // 判断是否连接WIFI成功
    {
        if(WIFI_Status)
        {
            Serial.print(".");
            digitalWrite(LED_BUILTIN, HIGH);  
            delay(500);                       
            digitalWrite(LED_BUILTIN, LOW);    
            delay(500);                 
            count++;
            if(count >= 5) // 5s
            {
                WIFI_Status = false;
                Serial.println("WiFi连接失败,请用手机进行配网"); 
            }        
        }
        else
        {
            smartConfig();  // 微信智能配网
        }
    }

    Serial.println("连接成功");  
    Serial.print("IP:");
    Serial.println(WiFi.localIP());
   
    Blinker.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str()); // 根据配网得到的WIFI信息和设备秘钥,连接到Blinker云

    // 注册按钮回调函数
    Button1.attach(button1_callback);
}

void loop()
{
    Blinker.run(); // 运行Blinker
}

代码解读

1、库和宏定义:

#define BLINKER_WIFI:配置为WIFI接入模式。

#include <Blinker.h>:引入Blinker库。

#include <ESP8266WiFi.h>:引入ESP8266WiFi库,用于WiFi连接。

#define RELAY_PIN D1:定义继电器控制的引脚。

2、创建Blinker按钮对象:

BlinkerButton Button1("btn-abc"):创建一个Blinker按钮对象。

3、配网函数:

smartConfig():通过SmartConfig进行WiFi配网。

4、继电器控制函数:

relayControl(const String & state):根据指令控制继电器的开关。

5、按钮回调函数:

button1_callback(const String & state):按钮触发时调用继电器控制函数。

6、初始化函数:

setup():初始化串口通信、继电器引脚、WiFi连接以及Blinker平台,并注册按钮回调函数。

7、主循环:

loop():持续运行Blinker平台处理通信和事件。

这样就可以通过WiFi和Blinker平台来控制普通插排的继电器开关了。

实验串口返回情况

 

60-10.jpg

打开手机blinker的APP,进入开发者模式

 

60-11 (0).jpg

进入EspToch模式

 

60-11 (1).jpg

 

智能配网

 

60-11 (2).jpg
60-11 (3).jpg

配置失败

 

60-11 (4).jpg

实验场景图

 

60-12.jpg

评论

user-avatar
icon 他的勋章
    展开更多