esp8266 01s加小爱同学(米家)控制卧室灯
Fortunately / 2020-03-20 / / 阅读量 1091

填坑
前几天买的esp8266 01s昨天到拿到了
经过了我的摸索和专业老师的指导,外加b站的视频,填好了自己挖的坑
自己动手实践挺有意思的
esp1.jpg
以下为串口监视器反馈的灯的状况
esp8266.png
记录一下制作步骤

第一步:NodeMCU固件下载

第二步:打开点灯科技app新建设备,打开米家,选择第三方平台设备,选择点灯科技,关联设备

点灯科技新建设备时,需要复制好设备的key,等会填入代码中
图一:
esp6.png
图二:
esp82663.png
图三:
esp82662.png

第三步:打开IDE,编写代码,进行烧录

esp3.jpg
代码如下:

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET   //小爱同学

#include <Blinker.h>

char auth[] = "**********";//点灯app上获取的key
char ssid[] = "**********";//wifi名称
char pswd[] = "**********";//wifi密码
BlinkerButton Button1("btn");     //定义按钮数据
bool oState = false;
int counter = 0;
void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {     //小爱同学控制开命令
        digitalWrite(0, LOW);
        delay(200);
        digitalWrite(0, HIGH);
        BlinkerMIOT.powerState("on");

        BlinkerMIOT.print();

        oState = true;
    }
    else if (state == BLINKER_CMD_OFF) {   //小爱同学控制关命令
        digitalWrite(0,LOW);
        delay(200);
        digitalWrite(0, HIGH);
        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 button1_callback(const String & state)     //点灯app内控制按键触发
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(0,LOW);
    delay(200);
    digitalWrite(0, HIGH);
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    pinMode(0, OUTPUT);              //定义io口为输出
    digitalWrite(0, HIGH);           //定义io默认为高电平

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    
    BlinkerMIOT.attachPowerState(miotPowerState);
    BlinkerMIOT.attachQuery(miotQuery);
    Button1.attach(button1_callback);      
}

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

代码需要修改四个地方,需要填写在点灯app上获取的key,自己家的WiFi名称,WiFi密码,点灯科技新建设备时按键的名称

第四步连接电路

因为继电器需要5v电源,所以可以使用手机充电器或者5v电源模块,我这里使用的是手机充电器
将烧写好的esp8266插上物联网继电器再连接5v手机充电器和外电路就ok了
esp4.jpg
继电器连接示意图:
esp8266继电器.png
到这里就可以通过小爱同学,语音控制开关卧室灯了
开.jpg
关.jpg
一个很简单的物联网的应用。在家没事,做着玩。毕竟纸上得来终觉浅,绝知此事要躬行。
这篇笔记记录的很粗糙,可能只有我自己能看懂吧(摊手)

微信捐赠
请使用微信扫一扫进行赞赏
1 + 5 =
4 评论
    小谈谈BH1XAQChrome 81Windows 10
    4月30日 回复

    不错不错,写的挺好的,有机会我也试试

      TanHua’s blogChrome 81Windows 10
      5月1日 回复

      @小谈谈BH1XAQ 哈哈哈哈,将就

    特厉害Chrome 84Windows 10
    7月24日 回复

    5V 变压器很大怎么办,就用接线板吗?

      FortunatelyChrome 80Windows 10
      9月9日 回复

      @特厉害 那我建议你去买个5v的电源模块吧,要方便许多,太大了也不美观