22.jpg
23.jpg

官方初始化例程

ide为Arduino(方便起见,也可选其他)

#define BLINKER_WIFI 

#include <Blinker.h>
//定义好WiFi信息和密钥
char auth[] = "Your Device Secret Key";//wifi密码
char ssid[] = "Your WiFi network SSID or name";//wifi名称
char pswd[] = "Your WiFi network WPA password or WEP key";//blinker密钥

// 新建组件对象(将设备与app界面的ui组件进行绑定)
BlinkerButton Button1("btn-abc");//按钮
BlinkerNumber Number1("num-abc");//数值
/*blinker库定义了多种组件类型,如BlinbkerSlider BlinkerRGB BlinkerNumber BlinkerText*/

int counter = 0;//定义计数器

// 按下按键执行函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}
//主程序开始
void setup() {
    // 初始化串口
    Serial.begin(115200);//设置端口频率
    BLINKER_DEBUG.stream(Serial);//设置下载方式

    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
}

void loop() {
    Blinker.run();
}

关键词解析

blinker初始化/选择连接方式

//用于指定接入方式,(BLINKER_BLE为蓝牙),不同方式初始函数不同
蓝牙接入:
#define BLINKER_BLE
#include<Blinker.h>
voide setup(){
    Blinker.begin();
}
wifi接入:
#define Blinker_WIFI
#include<Blinker.h>
void setup(){
    Blinker.begin(auth,ssid,pswd);
}

NBIoT:

#define BLINKER_NBIOT_SIM7020  
#include <Blinker.h>  
  
void setup() {  
    Blinker.begin(auth);  
}

NBIoT AT模块 SIM7020C: Blinker.begin() 将使用默认设置配置 Serial(默认使用软串口)
Blinker.begin(auth);// 默认设置: 数字IO 2(RX) 3(TX), 波特率 9600 bps
Blinker.begin(auth, 4, 5);// 设置数字IO 4(RX) 5(TX), 默认波特率 9600 bps
Blinker.begin(auth, 4, 5, 115200);// 设置数字IO 4(RX) 5(TX) 及波特率 115200
bps 若配置时Blinker.begin(auth, 0, 1); 0 1对应硬串口的RX TX, 库会默认使用硬串口与BLE模块进行通信
Blinker.begin(auth, 15, 14);//Arduino MEGA中如15, 14对应硬串口Serial3
注意使用软串口时: 使用Arduino MEGA时以下IO可以设置为RX: 10, 11, 12, 13, 50, 51, 52, 53,
62, 63, 64, 65, 66, 67, 68, 69 使用Arduino Leonardo时以下IO可以设置为RX: 8, 9,
10, 11, 14, 15, 16

新建组件对象/绑定组件

BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");

使用组件的键名创建对应的对象可以将设备与blinker app界面上的UI组件进行绑定。
key为组件的键名,在app中切换到编辑模式可以看到;
blinker库定义了多种组件类型,如 BlinkerSlider BlinkerRGB BlinkerNumber BlinkerText

注册组件回调

回调函数

void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

注册回调函数

Button1.attach(button1_callback);

当app中组件触发并发送到设备端时将触发该组件注册的回调函数
使用方法:

BlinkerSlider Slider1("Slider_1");  //绑定滑动条  
BlinkerRGB RGB1("RGB_1");           //绑定取色器  
BlinkerNumber NUM1("NUM_1");        //绑定数字组件  
BlinkerText Text1("TEXTE_1");       //绑定文字组件  

开启调试信息

BLINKER_DEBUG.stream(Serial);

串口蓝牙模块: Blinker.begin() 将使用默认设置配置 Serial(默认使用软串口)

Blinker.begin();// 默认设置: 数字IO 2(RX) 3(TX), 波特率 9600 bps
Blinker.begin(4, 5);// 设置数字IO 4(RX) 5(TX), 默认波特率 9600 bps
Blinker.begin(4, 5, 115200);// 设置数字IO 4(RX) 5(TX) 及波特率 115200 bps

若配置时Blinker.begin(0, 1); 0 1对应硬串口的RX TX, 库会默认使用硬串口与BLE模块进行通信
Blinker.begin(15, 14);//Arduino MEGA中如15, 14对应硬串口Serial3

注意使用软串口时: 使用Arduino MEGA时以下IO可以设置为RX: 10, 11, 12, 13, 50, 51, 52, 53,
62, 63, 64, 65, 66, 67, 68, 69 使用Arduino Leonardo时以下IO可以设置为RX: 8, 9,
10, 11, 14, 15, 16 用于指定调试信息输出的串口,设备开发时调试使用,项目或产品成型后,可以删除不用

Blinker运行时数据反馈

void loop() {
    Blinker.run();
}

Blinker.run()语句负责处理Blinker收到的数据,每次运行都会将设备收到的数据进行一次解析。
在使用WiFi接入时,该语句也负责保持网络连接

组件操作

void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

触发该组件注册的回调函数时,可获取到该组件对应的状态值

数据管理

//读取数据的回调函数
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}

可以检测是否收到未解析的数据
如果app发送的数据,不是绑定过的组件数据,blinker将不会解析这些数据
此时您可以回调函数获取这些未解析的数据。

注册该回调函数

Blinker.attachData(dataRead);

发送数据

Blinker.print(BlinkerTime);
Blinker.print("millis", BlinkerTime);

使用print可以向app发送数据,其形式有二:

Blinker.print(value);

当只有一个参数时,发送的是一个内容为value的纯字符串

Blinker.print(key, value);

但有两个参数时,发送的是一个json数据,如{"millis":1000}
如果数据键名对应app上的文本组件、开关组件、滑块组件,app收到数据后,会找到对应的键名的组件,并将值传递给组件,组件会以自己的方式呈现出这个数据

特定指令

Blinker.vibrate()

blinker app能接收一些特定指令,但设备端调用api发送特定指令后,app会执行相应操作。
如使用Blinker.vibrate()即会让手机震动。