當前位置: 華文星空 > 知識

小愛同學控制EP8266點燈

2020-04-10知識

小愛同學吃灰很久了,一直想接入小愛來控制些智慧硬體,無奈小米的IOT開放平台只對企業使用者開放。最近研究了點燈科技的物聯網平台,軟體硬體支持非常豐富,關鍵對於愛好者有免費的版本可以使用,愛了愛了有木有?本篇分享下如何透過Blinker平台接入小愛同學,進而控制聯網的ESP8266點燈。

1. 硬體部份

我使用了如下圖所示ESP8266開發板,其實就是板載了8266最小系統和USB轉串口部份。淘寶上很多,大的區別可能就是串口芯片有Cp40和CP2102之分吧。

ESP8266模組板載了LED燈,連線在GPIO2上,GPIO2輸出高電平燈熄滅,輸出低電平燈點亮,就來控制它吧。

2. 平台部份

在小愛同學APP中智慧家居裝置需要從米家APP中添加。所以,這兩個APP提前下載註冊好。這裏重點說下Blinker APP。

  • 從官網下載Blinker,支持安卓和蘋果版本,選擇你喜歡的 對應下載 ,並進行註冊。
  • 點選添加裝置,選擇Diy裝置中的Arduino,選擇WiFi接入。會得到唯一的金鑰,這個很重要,後面需要在程式碼中添加。
  • 返回裝置列表頁,點選添加的裝置圖示進入裝置控制台。可點選右上角進行編輯,這裏的裝置名最好用中文,後面用小愛進行控制的時候,你對它說英文,它可能聽不懂哈。
  • 3. 軟體部份

    1. 安裝ESP8266開發板擴充套件
  • 啟動Arduino IDE,單擊「檔」—「偏好設定」,在附加開發板管理網址中輸入如下網址:
  • http://arduino.esp8266.com/stable/package_esp8266com_index.json

  • 單擊「工具」—「開發板」—「開發板管理器」,在搜尋欄輸入"esp8266",找到開發板進行安裝,如下圖安裝完成。
  • 這個過程如果你網路不夠科學的話,可能無法完成,官方提供了離線安裝方式, 可點選檢視

    1. 安裝blinker Arduino庫

    點選下載庫 ,將下載好的blinker庫解壓到 我的電腦>文件>Arduino>libraries 資料夾中。

    1. 程式下載

    Blinker官方提供了小愛同學的接入流程,以RGB燈的控制為例,介紹了小愛同學的各操作介面,具體可參照 官方介紹

    我在這裏做了簡化,只用來控制燈的亮滅,只用了電源類操作介面和裝置查詢介面。其實就是實作兩個回呼函式,當接收到小愛同學的命令,會對應進入回呼函式去操作硬體。

    程式碼如下,程式碼中的auth、ssid、pswd要填入實際的值。

    #define BLINKER_WIFI #define BLINKER_MIOT_LIGHT #include <Blinker.h> char auth[] = "Your Device Secret Key"; char ssid[] = "Your WiFi network SSID or name"; char pswd[] = "Your WiFi network WPA password or WEP key"; bool ledState; void dataRead(const String & data) { BLINKER_LOG("Blinker readString: ", data); uint32_t BlinkerTime = millis(); Blinker.print("millis", BlinkerTime); } void miotPowerState(const String & state) { BLINKER_LOG("need set power state: ", state); if (state == BLINKER_CMD_ON) { digitalWrite(LED_BUILTIN, LOW); BlinkerMIOT.powerState("on"); BlinkerMIOT.print(); ledState = true; } else if (state == BLINKER_CMD_OFF) { digitalWrite(LED_BUILTIN, HIGH); BlinkerMIOT.powerState("off"); BlinkerMIOT.print(); ledState = false; } } void miotQuery(int32_t queryCode) { BLINKER_LOG("MIOT Query codes: ", queryCode); switch (queryCode) { case BLINKER_CMD_QUERY_POWERSTATE_NUMBER : BLINKER_LOG("MIOT Query Power State"); BlinkerMIOT.powerState(ledState ? "on" : "off"); BlinkerMIOT.print(); break; default : BlinkerMIOT.powerState(ledState ? "on" : "off"); BlinkerMIOT.print(); break; } } void setup() { Serial.begin(115200); BLINKER_DEBUG.stream(Serial); BLINKER_DEBUG.debugAll(); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); BlinkerMIOT.attachPowerState(miotPowerState); BlinkerMIOT.attachQuery(miotQuery); } void loop() { Blinker.run(); }

    選擇開發板型別和實際埠號,進行程式下載。

    4. 繫結小愛

  • 下載好程式後,復位開發板,然後在Blinker APP中會看到添加的裝置已經現在線上了。
  • 進入米家APP,點選「我的」—「其他平台裝置」,添加點燈科技,進入後,點選同步裝置,就會看到在Blinker中建立的裝置。
  • 前面繫結成功後,小愛同學中就會出現繫結的裝置了。
  • 試著對小愛說:「開啟燈」、「關閉燈」、「燈的狀態」,可能網路不好會有些延遲,不過想要的控制已經實作了。你也可以嘗試去控制些別的裝置了。

    小愛同學控制開關 https://www.zhihu.com/video/1232017286912565248