¿Todavía estás comprando un palo de arranque de girasol? ¡Es mejor ser un pequeño compañero de clase de amor y comenzar el palo!

Este artículo ha participado en el evento "Ceremonia de creación de recién llegados" para comenzar juntos el camino de la creación de oro.

Principio de implementación

Hardware: módulo WIFI (esp01s), relé esp01s, varias líneas DuPont, una computadora que admite botones de encendido externos, una o dos líneas de encendido
Software: Arduino, plataforma de tecnología de iluminación, aplicación Mijia
Código Arduino:

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

#include <Blinker.h>

char auth[] = "*******";  //设备key
char ssid[] = "*******";  //路由器wifi ssid
char pswd[] = "*******";  //路由器wifi 密码
BlinkerButton Button1("btn-aaa");     //定义按钮键名
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();
}
复制代码

Ideas de conexión del circuito:
Idea 1 (la placa base admite la carga USB apagada):
(1) Apague primero cuando conecte el circuito.
(2) La entrada de 5v del relé se conecta libremente a la interfaz vcc del conector USB de la placa base, y la interfaz gnd del relé está conectada a la interfaz gnd del USB. La siguiente imagen es una ilustración de la toma USB en la placa base de la computadora.
输入图片说明
(3) Después de insertar el chip esp01s en el relé esp01s, el relé lo alimenta directamente.
(4) La cabeza hembra del cable de encendido de uno a dos está conectada a los pines pw+ y pw- en la placa base de la computadora, y no es necesario distinguir los polos positivo y negativo.
(5) Un extremo del cable de encendido de uno a dos está conectado al botón de encendido del chasis para garantizar que podamos usar el botón de encendido del chasis normalmente, y el otro extremo está conectado a la interfaz normalmente cerrada (no) y la interfaz común (com) del relé esp01s. Este paso tampoco necesita distinguir entre polos positivo y negativo.El relé simula la operación de presionar el botón de encendido con la mano. El principio de encender el botón de encendido es que los pines pw+ y pw- se cortocircuitan para formar una corriente que no exceda los 3 segundos, de modo que la placa base se inicie. No importa cómo esté conectada la interfaz, la corriente fluye desde pw+ a -, que no será causado por la conexión inversa de la línea DuPont.

Idea 2 (la placa base no es compatible con el apagado de USB en vivo): (1) Los pasos son básicamente los mismos que los de la idea, la única diferencia es cómo el relé del segundo paso obtiene una potencia de 5v de la placa base. Dado que la placa base no es compatible con la fuente de alimentación de apagado USB, tenemos que encontrar un voltaje de 5v de otros lugares, podemos obtenerlo directamente del pin 5VSB del cable de alimentación principal de la placa base. A continuación se muestra la definición de 20 pines y 24 pines.
输入图片说明
输入图片说明
Nota: este método es demasiado violento, debe cortar el cable de alimentación de la placa base y agregar un cable para conectar el relé, existen ciertos riesgos, ¡no lo intente a la ligera! ! !

程序配置思路:
(1)配置开发环境,安装arduino(可以参考我这篇博客)。
(2)安装点灯库,并申请一个设备key(可以参考我开发小爱同学温湿度传感器的博客
(3)修改ino文件,修改成你的WIFI账户和密码,并添加key
(4)烧录程序
(5)在米家APP中绑定点灯平台,并为设备设置别名。
(6)跟小爱同学说:“小爱同学,打开电脑”
(7)跟小爱同学说:“小爱同学,关闭电脑”
(8)愉快的使用吧

Supongo que te gusta

Origin juejin.im/post/7084916892611117087
Recomendado
Clasificación