基于小爱+8266+Blinker+舵机 宿舍关灯神器

//项目备注:基于小爱同学+ESP8266+Blinker+SG90舵机--宿舍关灯神器
//项目作者:科技小宅神
//完成时间:2022/06/26
/*
材料清单:
ESP8266模块一个;
SG90舵机一个;
杜邦线若干;
USB数据线一条;
舵机与ESP8266模块接线:
橙色信号线——D0
红色电源正极——VV
棕色电源负极——G(GND)
*/
需要用到的软件:

以上的几个软件一般在应用商店里都可以下载,如果有需要用小爱同学的智能音箱可以添加进来,通过小爱同学控制音箱的播放。
编程软件:

打开Blinker:

添加设备:

选择独立设备并选择网络接入:

网络接入,选择点灯科技,等待注册完毕,此时会弹出一个设备密钥,

复制密钥并保,返回我的设备

更改图标和名称

打开米家--->我的

打开平台设备添加绑定点灯科技

同步设备:

添加小爱训练,就可以语音控制宿舍灯了。

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET //插座参数
#include <Servo.h>
#define PIN_SERVO D0 //舵机信号线
Servo myservo;
#include <Blinker.h>
const char auth[] = " "; //新建设备的秘钥
const char ssid[] = " "; //你的WiFi热点名称
const char pswd[] = " "; //你的WiFi密码
bool oState = false;
//小爱电源类回调
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
myservo.attach(PIN_SERVO);//绑定舵机引脚
if (state == BLINKER_CMD_ON)
{
myservo.write(29);//舵机正转度数
delay(1000);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
oState = true;
}
else if (state == BLINKER_CMD_OFF)
{
myservo.write(-29);//舵机反转度数
delay(1000);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
oState = false;
}
}
//小爱同学语音命令反馈
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;
//查询电源状态
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); //串口打印调试信息
//初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);//LED_BUILTIN 宏就是开发板指示灯的io口
digitalWrite(LED_BUILTIN, LOW);
//初始化blinker
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);//绑定数据读取
BlinkerMIOT.attachPowerState(miotPowerState);//绑定小爱电源控制
BlinkerMIOT.attachQuery(miotQuery);//绑定小爱语音反馈
}
void loop()
{
Blinker.run(); /*每次运行都会将设备收到的数据进行一次解析。
在使用WiFi接入时,该语句也负责保持网络连接*/
}