一、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();}
最新評論