一、blinker物联网平台简介

blinker是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、数据监测等领域,可以帮助用户更好更快地搭建物联网项目。

(1)特性

  • 由服务器端、APP端、设备端组成,可以部署到几乎所有物联网平台
  • APP端支持ios、android设备端可以使用蓝牙、WiFi、MQTT等方式接入,支持Arduino、freeRTOS、mbed OS、Linux等开发平台
  • 服务器端可以部署到阿里云、腾讯云、OneNET、百度云、AWS、google cloud等平台
  • 通过界面布局器,DIY用户可自己拖拽布局设备控制界面,自由打造你的物联网设备
  • 通过专属SDK,认证用户可以使用blinker开发自己的产品,并用于商业用途

(2)应用场景

  • 快速开发物联网 / 智能家居 / 无线遥控项目
  • 手机 / 语音助手 控制设备
  • 蓝牙BLE/ 局域网WiFi / 远程MQTT 接入设备

二、ESP8266智能硬件简介

ESP8266是低成本、高集成度的WIFI芯片,可以用于智能家居、智能玩具等多种场景。

(1)特性

  • 性能稳定
  • 高集成度
  • 低功耗
  • 32位处理器,性能优越

(2)使用场景

  • 智能家居,如智能开关等
  • 智能玩具,如WiFi遥控车等

三、电路连接

该智能开关以ESP-01S WIFI模块为设备端,控制继电器模块的闭合,从而完成对开关的控制。其硬件电路如下:

2a70527e293889b0479e6e4e3c110dc0.png

ESP-01S与继电器模块

四、界面配置

69b63f64beaf3ba5c1626234ca3ca6e3.png

APP端界面配置

五、代码编写

#include // 启用WIFI接入,并可通过小爱同学控制#define BLINKER_WIFI#define BLINKER_MIOT_LIGHT// 定义继电器控制端口#define GPIO0 0// Blinker认证及WIFI信息char auth[] = "xxxxxxxxxxxxx"; // 从APP创建设备时生成的秘钥char ssid[] = "xxxxxxxxxxxxx"; // WIFI名称char pswd[] = "xxxxxxxxxxxxx"; // WIFI密码// 新建开关组件对象BlinkerButton Button1("btn-s82");// 定义灯的状态和模式bool lightState = false;uint8_t lightMode = BLINKER_CMD_MIOT_DAY;// 电源控制回调函数void miotPowerState(const String & state) {    BLINKER_LOG("need set power state: ", state);      if (state == BLINKER_CMD_ON) {        digitalWrite(LED_BUILTIN, LOW);        digitalWrite(GPIO0, LOW);        BlinkerMIOT.powerState("on");        BlinkerMIOT.print();        lightState = true;    }    else if (state == BLINKER_CMD_OFF) {        digitalWrite(LED_BUILTIN, HIGH);        digitalWrite(GPIO0, HIGH);        BlinkerMIOT.powerState("off");        BlinkerMIOT.print();        lightState = false;    }}// 模式设置回调函数void miotMode(uint8_t mode) {    BLINKER_LOG("need set mode: ", mode);    if (mode == BLINKER_CMD_MIOT_DAY) {    // Your mode function    }    else if (mode == BLINKER_CMD_MIOT_NIGHT) {    // Your mode function    }    else if (mode == BLINKER_CMD_MIOT_COLOR) {    // Your mode function    }    else if (mode == BLINKER_CMD_MIOT_WARMTH) {    // Your mode function    }    else if (mode == BLINKER_CMD_MIOT_TV) {    // Your mode function    }    else if (mode == BLINKER_CMD_MIOT_READING) {    // Your mode function    }    else if (mode == BLINKER_CMD_MIOT_COMPUTER) {    // Your mode function    }    lightMode = mode;    BlinkerMIOT.mode(mode);    BlinkerMIOT.print();}// 设备查询回调函数void miotQuery(int32_t queryCode) {    BLINKER_LOG("MIOT Query codes: ", queryCode);    switch (queryCode)    {        case BLINKER_CMD_QUERY_ALL_NUMBER :        BLINKER_LOG("MIOT Query All");        BlinkerMIOT.powerState(lightState ? "on" : "off");        BlinkerMIOT.print();        break;        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :        BLINKER_LOG("MIOT Query Power State");        BlinkerMIOT.powerState(lightState ? "on" : "off");        BlinkerMIOT.print();        break;        default :        BlinkerMIOT.powerState(lightState ? "on" : "off");        BlinkerMIOT.print();        break;    }}// 数据读取回调函数void dataRead(const String & data){    BLINKER_LOG("Blinker readString: ", data);    Blinker.vibrate();    uint32_t BlinkerTime = millis();    Blinker.print("millis", BlinkerTime);}// 开关回调函数void button1_callback(const String & state) {    BLINKER_LOG("get button state: ", state);    if (state == BLINKER_CMD_ON) {        digitalWrite(GPIO0, LOW);        digitalWrite(LED_BUILTIN, LOW);        BLINKER_LOG("Toggle on!");        Button1.color("#FF0000");        Button1.print("on");    }    else if (state == BLINKER_CMD_OFF) {        digitalWrite(GPIO0, HIGH);        digitalWrite(LED_BUILTIN, HIGH);        BLINKER_LOG("Toggle off!");        Button1.color("#000000");        Button1.print("off");    }}void setup(){    Serial.begin(115200);    BLINKER_DEBUG.stream(Serial);    BLINKER_DEBUG.debugAll();    // 板载LED    pinMode(LED_BUILTIN, OUTPUT);    digitalWrite(LED_BUILTIN, HIGH);    // 继电器    pinMode(GPIO0, OUTPUT);    digitalWrite(GPIO0, HIGH);    // 初始化Blinker    Blinker.begin(auth, ssid, pswd);    Blinker.attachData(dataRead);    // 绑定回调函数    BlinkerMIOT.attachPowerState(miotPowerState);    BlinkerMIOT.attachMode(miotMode);    BlinkerMIOT.attachQuery(miotQuery);    // 绑定对象    Button1.attach(button1_callback);    // 初始化开关颜色黑色    Button1.color("#000000");}void loop(){Blinker.run();}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐