基于小愛+8266+Blinker+舵機(jī) 宿舍關(guān)燈神器

//項(xiàng)目備注:基于小愛同學(xué)+ESP8266+Blinker+SG90舵機(jī)--宿舍關(guān)燈神器
//項(xiàng)目作者:科技小宅神
//完成時(shí)間:2022/06/26
/*
材料清單:
? ESP8266模塊一個(gè);
? SG90舵機(jī)一個(gè);
? 杜邦線若干;
? USB數(shù)據(jù)線一條;
舵機(jī)與ESP8266模塊接線:
? 橙色信號(hào)線——D0
? 紅色電源正極——VV
? 棕色電源負(fù)極——G(GND)
*/
需要用到的軟件:

以上的幾個(gè)軟件一般在應(yīng)用商店里都可以下載,如果有需要用小愛同學(xué)的智能音箱可以添加進(jìn)來,通過小愛同學(xué)控制音箱的播放。
編程軟件:

打開Blinker:

添加設(shè)備:

選擇獨(dú)立設(shè)備并選擇網(wǎng)絡(luò)接入:

網(wǎng)絡(luò)接入,選擇點(diǎn)燈科技,等待注冊(cè)完畢,此時(shí)會(huì)彈出一個(gè)設(shè)備密鑰,

復(fù)制密鑰并保,返回我的設(shè)備

更改圖標(biāo)和名稱

打開米家--->我的

打開平臺(tái)設(shè)備添加綁定點(diǎn)燈科技

同步設(shè)備:

添加小愛訓(xùn)練,就可以語音控制宿舍燈了。

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET //插座參數(shù)
#include <Servo.h>
?
#define PIN_SERVO D0 //舵機(jī)信號(hào)線
Servo myservo;
#include <Blinker.h>
const char auth[] = "????"; //新建設(shè)備的秘鑰
const char ssid[] = "????"; //你的WiFi熱點(diǎn)名稱
const char pswd[] = "????"; //你的WiFi密碼
bool oState = false;
//小愛電源類回調(diào)
void miotPowerState(const String & state)
{
? ? BLINKER_LOG("need set power state: ", state);
? ? myservo.attach(PIN_SERVO);//綁定舵機(jī)引腳
? ? if (state == BLINKER_CMD_ON)?
? ? {
? ? ? ? myservo.write(29);//舵機(jī)正轉(zhuǎn)度數(shù)
? ? ? ? delay(1000);?
? ? ? ? BlinkerMIOT.powerState("on");
? ? ? ? BlinkerMIOT.print();
? ? ? ? oState = true;
? ? }
? ?else if (state == BLINKER_CMD_OFF)?
? ? {
? ? ? ? myservo.write(-29);//舵機(jī)反轉(zhuǎn)度數(shù)
? ? ? ? delay(1000);?
? ? ? ? BlinkerMIOT.powerState("off");
? ? ? ? BlinkerMIOT.print();??
? ? ? ? oState = false;
? ? }
}
?//小愛同學(xué)語音命令反饋
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(oState ? "on" : "off");
? ? ? ? ? ? BlinkerMIOT.print();
? ? ? ? ? ? break;
? ? ? ? //查詢電源狀態(tài)
? ? ? ? case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
? ? ? ? ? ? BLINKER_LOG("MIOT Query Power State");
? ? ? ? ? ? BlinkerMIOT.powerState(oState ? "on" : "off");
? ? ? ? ? ? BlinkerMIOT.print();
? ? ? ? ? ? break;
? ? ? ? default :
? ? ? ? ? ? BlinkerMIOT.powerState(oState ? "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 setup()
{
? ? //初始化端口
? ? Serial.begin(115200);
? ? BLINKER_DEBUG.stream(Serial); //串口打印調(diào)試信息
? ? //初始化有LED的IO
? ? pinMode(LED_BUILTIN, OUTPUT);//LED_BUILTIN 宏就是開發(fā)板指示燈的io口
? ? digitalWrite(LED_BUILTIN, LOW);
? ??
? ? //初始化blinker
? ? Blinker.begin(auth, ssid, pswd);
? ? Blinker.attachData(dataRead);//綁定數(shù)據(jù)讀取
? ??
? ? BlinkerMIOT.attachPowerState(miotPowerState);//綁定小愛電源控制
? ? BlinkerMIOT.attachQuery(miotQuery);//綁定小愛語音反饋
}
?
void loop()
{
? ? Blinker.run(); /*每次運(yùn)行都會(huì)將設(shè)備收到的數(shù)據(jù)進(jìn)行一次解析。
? ? ? ? ? ? ? ? ? ? 在使用WiFi接入時(shí),該語句也負(fù)責(zé)保持網(wǎng)絡(luò)連接*/
}