基于arduino用esp8266和继电器实现小爱同学开关灯

761 阅读2分钟

用esp8266和继电器实现小爱同学开关灯

房间的灯离床太远了,于是想到用esp8266配合点灯科技app来实现用小爱同学开关灯。于是就用小led灯做了测试。

这些是我们需要的材料

  • ESP8266
  • 继电器
  • ESP8266读写器
  • 5V供电

硬件部分的搭建

1.关于继电器的接线

VCC、GND分别接5v直流的正负极。左边nc口为常开端,火线从中间com口进,常开端和com口为默认导通状态,右边为no常闭端,只有当有指令时继电器就会和常闭导通与常开端断开。一般我们接com进火线no出火线。当然如果想实现与机械开关双控可以配合双联开关接三个口。

软件部分

下面是关于点灯科技的软件配置 1.我们需要把点灯科技的开发库: 解压放到 我的电脑>文档>Arduino>libraries 文件夹中

2.在arduino官方论坛上下载esp8266开发板信息安装到arduino(关于详细的环境搭建:可以到点灯科技官网查看

3.下载点灯科技app并添加设备

代码

#define BLINKER_MIOT_LIGHT
#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "888888888";  //设备key,打开点灯app,添加设备,选择arduino设备,选择wifi接入,这里就会获得一个密钥,把密钥填写在这里。
char ssid[] = "**********";  //路由器wifi ssid
char pswd[] = "88888888";  //路由器wifi 密码

int GPIO=0;//定义GPIO口用于控制继电器

#define BUTTON_1 "ButtonKey"


BlinkerButton Button1("key");//这里需要根据自己在BLINKER里面设置的名字进行更改

void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(GPIO,!digitalRead(GPIO));
    Blinker.vibrate(); 
}



void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ",state);

    if (state == BLINKER_CMD_OFF) {//如果语音接收到是关闭灯就设置GPIO口为高电平
        digitalWrite(GPIO, HIGH);

        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_ON) {
        digitalWrite(GPIO, LOW);
        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
    }
}


void setup() {
    Serial.begin(115200);
    pinMode(GPIO,OUTPUT);
    digitalWrite(GPIO,HIGH);//初始化,由于继电器是低电平触发。所以刚开始设为高电平
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    BlinkerMIOT.attachPowerState(miotPowerState);//这段代码一定要加,不加小爱同学控制不了,务必在回调函数中反馈该控制状态


}

void loop()
{
    Blinker.run();
}