154浏览
查看: 154|回复: 10

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

[复制链接]
【花雕学编程】Arduino动手做(246)--ESP8266 blinker单路开关图2

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

驴友花雕  中级技神
 楼主|

发表于 4 天前

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

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

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

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

单路继电器模块是一种用于电路控制的电子元件,它能够通过一个输入信号控制一个输出信号。这种模块通常包含一个继电器和一个控制电路。当输入信号(如电流或电压)达到一定阈值时,继电器会被激活,从而关闭或开启一个外部电路。
单路继电器模块的主要应用包括:
  • 自动化控制系统:用于开关、启动或停止设备。
  • 电源管理:用于切换电源或保护电路。
  • 传感器接口:用于将传感器信号转换为控制信号。

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

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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

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

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

实验开源代码

  1. /*
  2.   【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
  3.    实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
  4.    实验项目之十九:基于 ESP8266 的无线物联网开关(使用单路继电器)
  5. */
  6. #define BLINKER_WIFI            // 启用Blinker的WiFi功能
  7. #include <ESP8266WiFi.h>        // 本程序使用 ESP8266WiFi库
  8. #include <Blinker.h>            // 引入Blinker库
  9. // Blinker授权码
  10. char auth[] = "d251bb68ea";  
  11. int count = 0;            // 时间计数器
  12. bool WIFI_Status = true;  // WiFi状态标志位
  13. #define RELAY_PIN D1      // 要操作的继电器引脚
  14. bool relayState = false;  // 继电器状态标志位
  15. // 创建Blinker按钮对象
  16. BlinkerButton Button1("btn-abc");
  17. /* 配网函数 */
  18. void smartConfig()
  19. {
  20.   WiFi.mode(WIFI_STA); // 设置STA模式
  21.   Serial.println("\r\nWait for Smartconfig..."); // 打印log信息
  22.   WiFi.beginSmartConfig(); // 开始SmartConfig,等待手机端发出用户名和密码
  23.   while(1)
  24.   {
  25.     Serial.println(".");
  26.     digitalWrite(LED_BUILTIN,HIGH); // 指示灯闪烁
  27.     delay(1000);
  28.     digitalWrite(LED_BUILTIN,LOW); // 指示灯闪烁
  29.     delay(1000);
  30.     if(WiFi.smartConfigDone()) // 配网成功,接收到SSID和密码
  31.     {
  32.       Serial.println("SmartConfig Success");
  33.       Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
  34.       Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
  35.       break;      
  36.     }
  37.   }  
  38. }
  39. /* 继电器控制函数 */
  40. void relayControl(const String & state)
  41. {
  42.     BLINKER_LOG("Set relay state: ", state);
  43.     if (state == BLINKER_CMD_ON) {     // 打开继电器
  44.         digitalWrite(LED_BUILTIN, HIGH);
  45.         digitalWrite(RELAY_PIN, HIGH);
  46.         relayState = true;
  47.     }
  48.     else if (state == BLINKER_CMD_OFF) {   // 关闭继电器
  49.         digitalWrite(LED_BUILTIN, LOW);
  50.         digitalWrite(RELAY_PIN, LOW);
  51.         relayState = false;
  52.     }
  53. }
  54. /* 按钮回调函数 */
  55. void button1_callback(const String & state)
  56. {
  57.     relayControl(state); // 调用继电器控制函数
  58. }
  59. void setup()
  60. {
  61.     Serial.begin(115200);
  62.     BLINKER_DEBUG.stream(Serial);
  63.    
  64.     pinMode(RELAY_PIN, OUTPUT);
  65.     digitalWrite(RELAY_PIN, LOW);
  66.     pinMode(LED_BUILTIN, OUTPUT);
  67.     digitalWrite(LED_BUILTIN, LOW);
  68.     Serial.println("\r\n正在连接WIFI...");
  69.     while(WiFi.status() != WL_CONNECTED) // 判断是否连接WIFI成功
  70.     {
  71.         if(WIFI_Status)
  72.         {
  73.             Serial.print(".");
  74.             digitalWrite(LED_BUILTIN, HIGH);  
  75.             delay(500);                       
  76.             digitalWrite(LED_BUILTIN, LOW);   
  77.             delay(500);                 
  78.             count++;
  79.             if(count >= 5) // 5s
  80.             {
  81.                 WIFI_Status = false;
  82.                 Serial.println("WiFi连接失败,请用手机进行配网");
  83.             }        
  84.         }
  85.         else
  86.         {
  87.             smartConfig();  // 微信智能配网
  88.         }
  89.     }
  90.     Serial.println("连接成功");  
  91.     Serial.print("IP:");
  92.     Serial.println(WiFi.localIP());
  93.    
  94.     Blinker.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str()); // 根据配网得到的WIFI信息和设备秘钥,连接到Blinker云
  95.     // 注册按钮回调函数
  96.     Button1.attach(button1_callback);
  97. }
  98. void loop()
  99. {
  100.     Blinker.run(); // 运行Blinker
  101. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】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平台来控制普通插排的继电器开关了。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

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

实验串口返回情况

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

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

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

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

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

进入EspToch模式

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

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

智能配网

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

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

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

配置失败

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

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

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

实验场景图

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail