首先完成開發環境搭建:https://blog.csdn.net/felix_tao/article/details/113092886
其次完成Blinker_Hello_WiFi(點燈科技-手機APP控制例程):https://blog.csdn.net/felix_tao/article/details/113359707
第一步:復制一份Blinker_Hello_WiFi工程,并重命名為Blinker_MIOT_LIGHT,
第二步:打開VSCODE->檔案->將檔案夾添加到作業區->選擇工程檔案夾Blinker_MIOT_LIGHT->添加到VSCODE中,
第三步:復制以下代碼到VSCODE中的src->main.cpp里面,
/* *****************************************************************
* 程式功能:
* 1.使用開發板:nodemcu-ESP8266(模塊ESP-12E)
* 2.程式功能:程式功能:使用Blinker 手機APP添加設備并系結,通過APP遠程控制開發板上的燈的亮滅、還有小愛同學控制開發板上的燈的亮滅
* 3.例程檔案:https://www.diandeng.tech/doc/xiaoai
*
小愛支持的語音指令:
1.燈
打開/關閉{門口}的{燈}
把{臥室}的{燈}調為{紅色}
顏色范圍為0-16777215(0xFFFFFF)
把{臥室}的{燈}的{亮度調高一點}
亮度范圍為1-100
把{門口}的{燈}的{色溫}調到{1400}
色溫范圍為1000-10000
把{臥室}的{燈}調為{月光模式}
查詢{臥室}的{燈}的狀態
2.插座
打開/關閉{廚房}的{插座}
{客廳}的{插座}是否打開
3.傳感器
{設備名}室內{溫度}/{濕度}/{PM2.5}/{空氣質量}/{二訊訓碳含量}
* *****************************************************************/
//#define LED_BUILTIN 2 //ESP-12E模塊自身的LED,對應GPIO2,低電平亮
//#define LED_BUILTIN 16 //nodemcu-esp8266開發板擴展的LED,對應GPIO16,低電平亮
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT //小愛同學支持LED燈控制
#define BLINKER_WITHOUT_SSL //blinker默認使用加密方式進行遠程通信,但通信加密會消耗大量的RAM,如果您對通信安全性無要求,
//可以添加宏BLINKER_WITHOUT_SSL用以獲得更多可用RAM,BLINKER_WITHOUT_SSL目前僅可用于ESP8266,其他設備的RAM足以進行加密通信
#include <Blinker.h> //使用第三方庫
char auth[] = "aabfdfc3b167";//Blinker APP中獲取到的Secret Key(密鑰),小愛同學接入,需要選擇阿里云broker,點燈broker暫不支持語音控制
char ssid[] = "Xiaomi_123"; //wifi名稱
char pswd[] = "felix1234"; //wifi密碼
// 新建組件物件
BlinkerButton Button1("btn-abc");//組件物件,要和APP組件中的“資料鍵名”一致
BlinkerNumber Number1("num-abc");
int counter = 0;//計數器
uint8_t colorR, colorG, colorB, colorW;
// 按下按鍵即會執行該函式
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);//APP中的Monitor控制元件列印的資訊
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//控制LED燈亮滅,低電平亮,高電平滅
}
// 如果未系結的組件被觸發,則會執行其中內容
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
counter++;//未系結的組件被觸發,就會進行計數
Number1.print(counter);
}
//得到當前的顏色值
uint32_t getColor()
{
uint32_t color = colorR << 16 | colorG << 8 | colorB;
return color;
}
//小愛電源類回呼,例如:開燈/關燈
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, LOW);//低電平打開LED
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);//高電平關閉LED
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
//小愛設定顏色回呼,例如:紅色/綠色/藍色
void miotColor(int32_t color)
{
BLINKER_LOG("need set color: ", color);
colorR = color >> 16 & 0xFF;
colorG = color >> 8 & 0xFF;
colorB = color & 0xFF;
BLINKER_LOG("colorR: ", colorR, ", colorG: ", colorG, ", colorB: ", colorB);
BlinkerMIOT.color(color);
BlinkerMIOT.print();
}
//小愛調亮度回呼,例如:調亮一些
void miotBright(const String & bright)
{
BLINKER_LOG("need set brightness: ", bright);
colorW = bright.toInt();
BLINKER_LOG("now set brightness: ", colorW);
BlinkerMIOT.brightness(colorW);
BlinkerMIOT.print();
}
//小愛調色溫回呼,例如:色溫調到1400
void miotColoTemp(int32_t colorTemp)
{
BLINKER_LOG("need set colorTemperature: ", colorTemp);
BlinkerMIOT.colorTemp(colorTemp);
BlinkerMIOT.print();
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);//設定引腳為輸出模式
digitalWrite(LED_BUILTIN, LOW);//默認打開LED
// 初始化blinker
Blinker.begin(auth, ssid, pswd);//連接WiFi和設備上線
Blinker.attachData(dataRead);//如果沒有被系結的組件被觸發就執行這個回呼
Button1.attach(button1_callback);//系結按鍵
//小愛同學注冊回呼
BlinkerMIOT.attachPowerState(miotPowerState);//注冊小愛電源回呼
BlinkerMIOT.attachColor(miotColor);//注冊小愛顏色回呼
BlinkerMIOT.attachBrightness(miotBright);//注冊小愛亮度回呼
BlinkerMIOT.attachColorTemperature(miotColoTemp);//注冊小愛色溫回呼
}
void loop()
{
Blinker.run();
}
第四步:在app中添加設備,獲取Secret Key,
1)下載APP并進行安裝,打開網址https://www.diandeng.tech/doc/getting-start-8266,找到“下載并安裝blinker APP“,根據不同的手機平臺,下載對應的APP并進行安裝,
2)進入App,點擊右上角的“+”號,然后選擇 添加設備,
3)點擊選擇Arduino(獨立設備)-> WiFi接入,
4)選擇要接入的服務商(阿里云、點燈科技、騰訊云、OneNet),例如選擇”點燈科技“,如果要接入小愛同學,則要選擇”阿里云“,
5)復制申請到的Secret Key到代碼中要填寫密鑰的一欄中,
第五步:修改以下代碼,
修改密鑰、wifi名稱、wifi密碼為自己的,
注意:小愛同學接入,需要選擇阿里云broker,點燈broker暫不支持語音控制,
char auth[] = "Your Device Secret Key";//Blinker APP中獲取到的Secret Key(密鑰)
char ssid[] = "Your WiFi network SSID or name";//wifi名稱
char pswd[] = "Your WiFi network WPA password or WEP key";//wifi密碼
第六步:修改完后,進行編譯、下載,編譯程序中發現有“黃色警告”,不用理會,最后編譯是“SUCCESS”就OK,
下載成功后,可以看到開發板上的LED亮了起來,打開VSCODE的串口監視器可以看到列印一些資訊,當看到“MQTT Connected!”則證明連接wifi是成功的,當看到"state":"online"則證明設備是在線的,
VSCODE串口監視器列印的資訊:
......
[32881] MQTT Connected! //連接wifi成功
[32881] Freeheap: 39456
[48020] Got: {"deviceType":"DiyArduino","data":{"get":"state"},"fromDevice":"eeb71ff85f1d11eb81be5254","toDevice":"C133A71AZPR087CQTZ5FFRXR"}
[48022] data: {"get":"state"}
[48024] fromDevice: eeb71ff85f1d11eb81be5254
[48028] Authority uuid
[48051] available: 1
[48051] checkAvail: 1
[48051] parse data: {"get":"state"}
[48051] defined BLINKER_ARDUINOJSON
[48052] autoManager begin: 0 0
[48053] autoFormatData key: state, json: "state":"online" //設備在線
第七步:使用手機APP進行遠程控制開發板中的LED燈,
1)打開”點燈-blinker”APP,
2)在設備串列頁,點擊設備圖示,例如我的設備是:“房間1號”,點擊后進入設備控制面板,
3)點擊“點我開關燈”,則看到開發板上的LED燈會進行亮和滅的切換,
4)由于“點我計數”在代碼未進行系結,所以會觸發dataRead()函式,

第八步:使用米家APP中的小愛同學進行語音控制開發板中的LED燈,
1)下載米家APP并打開,通過 我的>其他平臺設備>點擊添加>點燈科技>系結賬號 ,系結blinker賬號,
2)系結成功后,支持小愛控制的blinker設備會出現在 我的>其他平臺設備>點燈科技 設備串列中,
3)如果設備串列中沒有設備,則需要點擊“同步設備”,
4)回傳到米家APP首頁,在首頁有一個“語音圖示”,點擊“語音圖示”,說:“關閉房間一號的燈”,則會看到開發板上的LE燈關閉,接著說“打開房間一號的燈”,則會看到LED燈打開,
注意事項:
1)如果系結blinker賬號后,點燈科技串列中沒有設備,可能是您設備中沒有燒寫小愛支持程式,或者設備沒有成功上線,
2)系結blinker賬號后,通過手機上的小愛同學也可以控制設備,
3)blinker App中對設備進行修改或新增后,可在米家App中,通過 我的>其他平臺設備>點燈科技>同步設備 更新設備資訊,
完整的工程檔案:https://download.csdn.net/download/felix_tao/14975837
參考檔案:
點燈科技:https://www.diandeng.tech/doc/xiaoai
參考例程:
點燈科技blinker庫:blinker-library-master\examples\Blinker_MIOT\MIOT_LIGHT
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255298.html
標籤:其他
上一篇:廣播、組播、單播區別與聯系
