目录
项目涉及的主代码
度盘共享地址:
https://pan.baidu.com/s/1UB_7as3BYeOaI437SRX3QA
提取码: 87cc
CSDN共享地址:
前言
使用ESP8266,连接点灯科技,绑定小爱同学或天猫精灵,控制舵机,实现远程开关灯操作。
一、环境搭建
需要搭建Arduino环境,并下载安装blinker-Arduino库
Arduino环境的搭建参考:
Blinker—Arduino库的导入参考:
二、开发步骤
1.注册点灯科技平台
2.在点灯科技平台注册设备,获取Secret Key
第一步,选择右上角加号添加设备
第二步,选择添加独立设备
第三步,选择网络接入
第四步,复制key,完成设备注册
3.在Arduino IDE中编写代码,写入ESP8266
此处以“小爱同学”控制为例进行说明,“天猫精灵”控制方式相同,修改回调函数即可
必需修改的三个部分:点灯科技设备Key,wifi名称,wifi密码
选择修改的两个部分:打开时的舵机旋转角度,关闭时的舵机旋转角度
具体实现代码如下:
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#include <Servo.h>
#include <Blinker.h>
#define PIN_SERVO D0 //舵机信号线
Servo myservo;
char auth[] = "123";//修改为你的点灯科技设备Key
char ssid[] = "123";//Wifi名称
char pswd[] = "123";//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(-45);//命令为打开时,控制舵机旋转角度
delay(1000);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
oState = true;
}
else if (state == BLINKER_CMD_OFF) {
myservo.write(90);//命令为关闭时,控制舵机旋转角度
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);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
BlinkerMIOT.attachPowerState(miotPowerState);
BlinkerMIOT.attachQuery(miotQuery);
}
void loop()
{
Blinker.run();
}
天猫精灵版本的函数,请参考文章开头提供的源代码文件。
4.编译固件,烧入到ESP8266中
选择对应的COM口,并点击上传按钮,将固件烧录到硬件中,完毕后等待上传成功提示。
5.将舵机连接至ESP8266
ESP8266示意图
舵机线路示意图
线路定义:红色---VCC;棕色:GND;橙色:信号线
实物连接图
代码中定义D0口为舵机信号线控制口,因此分别连接舵机的D0,3V,GND,完成连接后上电
6.绑定小爱同学/天猫精灵
小爱同学实现控制,需要下载米家APP,登陆账号后绑定点灯科技
若使用天猫精灵实现,需要在天猫精灵APP中绑定点灯科技
完成设备绑定后,即可使用语音控制舵机,实现灯的开关控制。
例如:小爱同学,关闭开关
总结
通过实验,学习通过Arduino编程实现对ESP8266的控制,实现相应效果。