首頁>科技>

一、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模組為裝置端,控制繼電器模組的閉合,從而完成對開關的控制。其硬體電路如下:

ESP-01S與繼電器模組

四、介面配置

五、程式碼編寫

#include <Blinker.h>// 啟用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) {    \t\t// Your mode function    }    else if (mode == BLINKER_CMD_MIOT_NIGHT) {   \t\t // Your mode function    }    else if (mode == BLINKER_CMD_MIOT_COLOR) {    \t\t// Your mode function    }    else if (mode == BLINKER_CMD_MIOT_WARMTH) {    \t\t// Your mode function    }    else if (mode == BLINKER_CMD_MIOT_TV) {    \t\t// Your mode function    }    else if (mode == BLINKER_CMD_MIOT_READING) {    \t\t// Your mode function    }    else if (mode == BLINKER_CMD_MIOT_COMPUTER) {    \t\t// 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(){\t\tBlinker.run();}

  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 亞馬遜AWS的 ARM架構晶片會改變微處理器市場嗎?