【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
单路继电器模块是一种用于电路控制的电子元件,它能够通过一个输入信号控制一个输出信号。这种模块通常包含一个继电器和一个控制电路。当输入信号(如电流或电压)达到一定阈值时,继电器会被激活,从而关闭或开启一个外部电路。单路继电器模块的主要应用包括:
[*]自动化控制系统:用于开关、启动或停止设备。
[*]电源管理:用于切换电源或保护电路。
[*]传感器接口:用于将传感器信号转换为控制信号。
这种模块的优点是结构简单、成本低、使用方便。
【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
【花雕学编程】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
}
【花雕学编程】Arduino动手做(246)--ESP8266 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平台来控制普通插排的继电器开关了。
【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
实验串口返回情况【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
打开手机blinker的APP,进入开发者模式【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
进入EspToch模式【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
智能配网【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
配置失败【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关
实验场景图
页:
[1]