目录

项目涉及的主代码

前言

一、环境搭建

二、开发步骤

1.注册点灯科技平台

2.在点灯科技平台注册设备,获取Secret Key

 3.在Arduino IDE中编写代码,写入ESP8266

4.编译固件,烧入到ESP8266中

5.将舵机连接至ESP8266

6.绑定小爱同学/天猫精灵

总结


项目涉及的主代码

前言

使用ESP8266,连接点灯科技,绑定小爱同学或天猫精灵,控制舵机,实现远程开关灯操作。


一、环境搭建

需要搭建Arduino环境,并下载安装blinker-Arduino库

Arduino环境的搭建参考:

二、开发步骤

1.注册点灯科技平台

2.在点灯科技平台注册设备,获取Secret Key

第一步,选择右上角加号添加设备

第二步,选择添加独立设备

第三步,选择网络接入

第四步,复制key,完成设备注册

esp8266驱动sg90舵机 esp8266加舵机_单片机

 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中

esp8266驱动sg90舵机 esp8266加舵机_51单片机_02

 选择对应的COM口,并点击上传按钮,将固件烧录到硬件中,完毕后等待上传成功提示。

5.将舵机连接至ESP8266

ESP8266示意图

esp8266驱动sg90舵机 esp8266加舵机_51单片机_03

 舵机线路示意图

esp8266驱动sg90舵机 esp8266加舵机_esp8266驱动sg90舵机_04

 线路定义:红色---VCC;棕色:GND;橙色:信号线 

实物连接图

esp8266驱动sg90舵机 esp8266加舵机_开发语言_05

代码中定义D0口为舵机信号线控制口,因此分别连接舵机的D0,3V,GND,完成连接后上电

6.绑定小爱同学/天猫精灵

小爱同学实现控制,需要下载米家APP,登陆账号后绑定点灯科技

esp8266驱动sg90舵机 esp8266加舵机_51单片机_06

 若使用天猫精灵实现,需要在天猫精灵APP中绑定点灯科技

esp8266驱动sg90舵机 esp8266加舵机_esp8266驱动sg90舵机_07

完成设备绑定后,即可使用语音控制舵机,实现灯的开关控制。

例如:小爱同学,关闭开关 


总结

通过实验,学习通过Arduino编程实现对ESP8266的控制,实现相应效果。