【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关

2025-02-073141
【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关图2

【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关图1

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(10)
驴友花雕
驴友花雕
作者
实验场景图

驴友花雕
驴友花雕
作者
配置失败

驴友花雕
驴友花雕
作者
智能配网


驴友花雕
驴友花雕
作者
进入EspToch模式

驴友花雕
驴友花雕
作者
打开手机blinker的APP,进入开发者模式

驴友花雕
驴友花雕
作者
实验串口返回情况

驴友花雕
驴友花雕
作者
代码解读
1、库和宏定义:
#define BLINKER_WIFI:配置为WIFI接入模式。
#include :引入Blinker库。
#include :引入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平台来控制普通插排的继电器开关了。
驴友花雕
驴友花雕
作者
【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
实验项目之十九:基于 ESP8266 的无线物联网开关(使用单路继电器)
实验开源代码
[code]/*
【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
实验项目之十九:基于 ESP8266 的无线物联网开关(使用单路继电器)
*/
#define BLINKER_WIFI // 启用Blinker的WiFi功能
#include // 本程序使用 ESP8266WiFi库
#include // 引入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
}[/code]
驴友花雕
驴友花雕
作者
单路继电器模块是一种用于电路控制的电子元件,它能够通过一个输入信号控制一个输出信号。这种模块通常包含一个继电器和一个控制电路。当输入信号(如电流或电压)达到一定阈值时,继电器会被激活,从而关闭或开启一个外部电路。
单路继电器模块的主要应用包括:
[list]
[*]自动化控制系统:用于开关、启动或停止设备。
[*]电源管理:用于切换电源或保护电路。
[*]传感器接口:用于将传感器信号转换为控制信号。
[/list]这种模块的优点是结构简单、成本低、使用方便。

驴友花雕
驴友花雕
作者


- 没有更多了 -