menu Fortunately
esp8266 01s加小爱同学(米家)控制卧室灯
541 浏览 | 2020-03-20 | 分类:单片机 | 标签:秃头

填坑
前几天买的esp8266 01s昨天到拿到了
经过了我的摸索和专业老师的指导,外加b站的视频,填好了自己挖的坑
自己动手实践挺有意思的

以下为串口监视器反馈的灯的状况

记录一下制作步骤

第一步:NodeMCU固件下载

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

点灯科技新建设备时,需要复制好设备的key,等会填入代码中
图一:

图二:

图三:

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


代码如下:

#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了

继电器连接示意图:

到这里就可以通过小爱同学,语音控制开关卧室灯了


一个很简单的物联网的应用。在家没事,做着玩。毕竟纸上得来终觉浅,绝知此事要躬行。
这篇笔记记录的很粗糙,可能只有我自己能看懂吧(摊手)

发表评论

email
web

全部评论 (共 2 条评论)

    2020-04-30 11:00
    不错不错,写的挺好的,有机会我也试试
      2020-05-01 13:26
      @小谈谈BH1XAQ哈哈哈哈,将就