基于Blinker的小爱同学语音控制ESP8266
前些天在使用esp8266时遇到很多小爱不能控制设备问题,现在来叙述我控制过程中所遇到的问题,以及到完整的小爱能成功控制Esp8266的过程。
1.需要先安装8266_package_2.7.4.exe,不然不能够正确使用,相关的下载链接在官方有提供,我在这里也是去官方寻找的链接,大家自行寻找下载。
Blinker 链接地址
2.官方例程
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT //支持小爱开关LED
#include <Blinker.h>
#define LED 2 // 板子上的灯
char auth[] = "你的密钥"; // blinker app提供的秘钥
char ssid[] = "wifi名";// wifi 名字
char pswd[] = "密码";// wifi 密码
bool wsState;
uint8_t wsMode = BLINKER_CMD_MIOT_DAY;
// 新建组件对象
BlinkerButton Button1("btn-abc");//注意:要和APP组件’数据键名’一致
// 按下BlinkerAPP按键即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
digitalWrite(LED, !digitalRead(LED));
Blinker.vibrate();
}
//小爱电源类操作的回调函数:
//当小爱同学向设备发起控制, 设备端需要有对应控制处理函数
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();
}
else if (state == BLINKER_CMD_OFF) {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
void setup() {
// 初始化串口,并开启调试信息,调试用可以删除
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
// 初始化IO
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH); // 初始化 led 高电平 ,则灯熄灭状态
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
//小爱同学务必在回调函数中反馈该控制状态
BlinkerMIOT.attachPowerState(miotPowerState);//注册回调函数
}
void loop() {
Blinker.run();
}
3.在调试时,打开串口调试界面查看当前数据传输状况。
4.接下来是重点,小米小爱语音控制的设置步骤
1)打开blinker App,点击右上角+号。
2)选择独立设备。
3)选择wifi接入。
4)这里是重点,一定要选择阿里云,不然不能进行语音控制。
5)点击设备
点击右上角三个点
6)然后填写对应的密钥在代码里面下载成功即可。
7)接下来是米家的账号绑定。
打开米家。
8)点击我的
9)选择其他平台设备
10)点击添加
11)账号绑定
12)回到绑定位置,点击点灯科技。
13)点击同步设备,可以获得当前esp的控制设备。
这里拿刚才设置的名来做对比,要与上述设备名相同。
到现在米家的Blinker绑定账号设备结束,接下来要训练小爱,不然控制无法完成。
14)打开小爱同学。
15)点击训练计划。
16)点击我的训练。
17)新建训练。
18)重点:小爱语音控制,训练操作
19)点击设备控制,跳转到设备页面选择。
20)点击设备,进行对应小爱的操作。
21)最后步骤。
基于小爱同学和Blinker平台的ESP8266物联网控制灯
指令要一一对应关系,不然就会出现意想不到的情况。
到此,小爱的语音控制功能就能正常实现,有遇到问题,欢迎大家留言讨论。