esp8266物联网开发二:RTOS名门正派

由于micropython网上资料挺少,整体用起来挺费力,而且很多软硬件厂商并不会把重心放到micropython上,所以决定使用arduino ide和C语言配合来进行,开始吧。

1. arduino环境配置

首先,需要下载arduino ide压缩包并进行安装,可以去arduino官网找到我们需要的版本,然后进行安装,这里不再过多描述。

然后,需要添加ESP8266的配置,由于文件在国外,需要翻墙,可以参考此文章中的链接进行:https://www.arduino.cn/thread-76029-1-1.html

一切都安装好之后,看到的界面如下:

之后就可以进行正常的编码了。

注意,串口监视器功能,如果配置不好,会有乱码存在的可能,这时候需要做如下的设置来解决乱码:

首先,把电脑字体为clearType字体的勾去掉,可以去控制面板里面找。

其次,烧写的波特率要和串口监视器的波特率设置的一样。

 2. 通过继电器连接小爱同学操作LED

相信大家在网上看到很多的例子了。我这里也做成功了,具体来说一下过程吧。

首先,去点灯科技网站,下载其Blinker库,并将下载的库解压后,放到C:\Users\sscy\Documents\Arduino\libraries文件夹中,整体如下:

然后,书写代码,使得可以通过wifi控制继电器开关LED:

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT//支持小爱同学
#include <Blinker.h>

char auth[] = "xxxxxxx";//app中获取到的Secret Key(密钥)
char ssid[] = "cxsr";
char pswd[] = "scy251147";

int GPIO = 16; //定义继电器输入引脚为GPIO/0

// 新建组件对象
BlinkerButton ButtonOpen("btn-open");
BlinkerButton ButtonClose("btn-close");

// 按下BlinkerAPP按键即会执行该函数
void ButtonOpen_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(GPIO, 1);
    Blinker.vibrate();
}

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

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

    if (state == BLINKER_CMD_ON) {
        digitalWrite(GPIO, 1);

        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_OFF) {
        digitalWrite(GPIO, 0);

        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();
    }
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
}

void setup() {
    // 初始化串口,并开启调试信息,调试用可以删除
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    // 初始化IO
    pinMode(GPIO, OUTPUT);
    digitalWrite(GPIO, HIGH);
    
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    
    ButtonOpen.attach(ButtonOpen_callback);
    ButtonClose.attach(ButtonClose_callback);

    BlinkerMIOT.attachPowerState(miotPowerState);

}

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

猜你喜欢

转载自www.cnblogs.com/scy251147/p/12727697.html