【花雕学编程】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
- }
复制代码
|