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();
}
等待写入后即完成全过程