DIY一个智能开关 用以替换普通的86开关(主控模块用ESP12S)blinker 版本

本文介绍了如何使用ArduinoIDE2.0.4配合ESP8266扩展包和blinkerArduino库,设置和编写代码来控制硬件设备,如继电器,通过手机端的blinkerAPP进行网络接入和设备状态交互。用户需要获取SecretKey,配置WIFI信息,并根据代码示例编写控制逻辑。
摘要由CSDN通过智能技术生成

​1.准备软件

使用Arduino IDE 1.8.7或更新版本,本文发布时版本为Arduino IDE 2.0.4。本文以该版本为实例。

第一步,安装Arduino IDE 2.0.4 (点击可下载)。成功后接第二步

第二步,下载离线ESP8266 扩展包3.1.1版本,下载成功后,不运行Arduino ,直接安装扩展包。

第三步,安装blinker Arduino库(点击可下载)

下载后得到blinker-library-0.3.100221211.zip 的zip 文件

然后打开第一步的Arduino IDE 2.0.4,按下面位置图片添加文件。

提示:Arduino 首次运行需要联网下载更新所需要的组件,需要等待几分钟。

第三步,在手机端下载并安装blinker APP

准备完成。

2.开始操作。

1打开手机端blinker APP。注册成完后

2点击右上角的“+”号,然后选择 添加设备

3点击选择独立设备> 网络接入

4复制申请到的Secret Key

5自定义布局。按下图操作即可。

6打开电脑端的 Arduino IDE,点击 左上角的“file -> new sketch”

将下面代码复制到Arduino中(确保Arduino原来的要消除)

#define BLINKER_WIFI
#include <Blinker.h>
#define BLINKER_WITHOUT_SSL 
char auth[] = "你的密钥";
char ssid[] = "你的WIFI名称";
char pswd[] = "你的WIFI密码";
// 新建APP的组件对象
BlinkerButton Button1("btn-abc");
// 定义物理开关IO口
#define LED      15
#define l_LED    13
#define r_LED    12
#define btn      0
#define l_btn    16
#define r_btn    2
#define relay    14
// 按下APP按键即会执行该函数
void button1_callback(const String & state) 
{
    BLINKER_LOG("get button state: ", state); 
//当APP按键状态为通时,继电器IO14输出高电平 LED IO15输出高电平
    if (state=="on") 
        {
        digitalWrite(LED, HIGH);
        digitalWrite(relay, HIGH);
        // 反馈开关状态
        Button1.print("on");
        Button1.text("通电");
        } 
//当APP按键状态为断时,继电器IO14输出低电平 LED IO15输出低电平
    else if(state=="off")
        {
        digitalWrite(LED, LOW);
        digitalWrite(relay, LOW);
        // 反馈开关状态
        Button1.print("off");
        Button1.text("断电");
        }
}
void setup() 
{
    // 初始化串口
    Serial.begin(115200);

    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif
    
    // 初始化有IO
    pinMode(btn, INPUT_PULLUP);
    digitalWrite(btn, HIGH);
    pinMode(relay, OUTPUT); 
    digitalWrite(relay, LOW);
    pinMode(LED, OUTPUT);
    digitalWrite(LED, LOW);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
}
//反馈继电器状态函数
void RelayState()
{
     if(digitalRead(relay)==HIGH)
        { digitalWrite(LED, HIGH);
          //Button7.color("#FF0000");  设置app按键是纯黄色,16进制颜色码
          Button1.text("通电");          //设置app按键注释“通电”
          Button1.print("on");
          
        }
     else if(digitalRead(relay)==LOW)
        {
          digitalWrite(LED, LOW);
          Button1.text("断电");          //设置app按键注释“断电”
          Button1.print("off");
        }
}
//本地开关控制继电器程序
void bdms()
  {
  if(digitalRead(btn)==LOW)
  {
    digitalWrite(relay, !digitalRead(relay));
    //反馈继电器状态
    RelayState();    //调用继电器反馈程序
    Blinker.delay(200);    //必须加延时,否则灯一直切换状态
  }
  }
void loop()
{
    bdms();
    Blinker.run();     
}

等待写入后即完成全过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值