NodeMCU-ESP8266开发(VSCODE+PlatformIO+Arduino框架):第2篇--Blinker_Hello_WiFi(点灯科技-手机APP控制例程)

首先完成开发环境搭建:https://blog.csdn.net/felix_tao/article/details/113092886

其次完成工程模版的建立:https://blog.csdn.net/felix_tao/article/details/113282760

第一步:复制一份template工程,并重命名为Blinker_Hello_WiFi。

第二步:打开VSCODE->文件->将文件夹添加到工作区->选择工程文件夹Blinker_Hello_WiFi->添加到VSCODE中。

第三步:下载点灯科技的blinker Arduino库,并复制到platformio arduino esp8266的库目录下。

1)打开网址https://www.diandeng.tech/doc/getting-start-8266,找到“下载并安装blinker Arduino库”,点击下载即可。

2)解压blinker-library-master.zip后,复制blinker-library-master到目录C:\Users\felix\.platformio\packages\framework-arduinoespressif8266\libraries下。

第四步:复制Hello_WiFi例程中的代码到VSCODE中的src->main.cpp里面。

1)打开目录C:\Users\felix\.platformio\packages\framework-arduinoespressif8266\libraries\blinker-library-master\examples\Blinker_Hello\Hello_WiFi。

2)用NotePad++打开Hello_WiFi.ino,复制里面的代码到src->main.cpp里面(原来里面的代码全部删除)。

3)发现提示#include <Blinker.h>未包含,关闭VSCODE,再重新打开,发现刚才的“未包含提示”消失了,这是因为重新打开VSCODE后,工程中的.vscode->c_cpp_properties.json里面自动加载了头文件包含,即"C:/Users/felix/.platformio/packages/framework-arduinoespressif8266/libraries/blinker-library-master/src"。

4)所以可以将上面的步骤调一下顺序,先复制库文件blinker-library-master,再用VSCODE打开工程,就不用要关闭VSCODE再重新打开了,无论怎么样,千万记住:.vscode->c_cpp_properties.json里面的文件都不用作任何修改,软件会自动帮我们完成头文件的添加。

5)Hello_WiFi例程代码如下:

#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "Your Device Secret Key";
char ssid[] = "Your WiFi network SSID or name";
char pswd[] = "Your WiFi network WPA password or WEP key";

// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");

int counter = 0;

// 按下按键即会执行该函数
void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

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

void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
    
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

    Button1.attach(button1_callback);
}

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

第五步:在app中添加设备,获取Secret Key。

1)下载APP并进行安装,打开网址https://www.diandeng.tech/doc/getting-start-8266,找到“下载并安装blinker APP“,根据不同的手机平台,下载对应的APP并进行安装。

2)进入App,点击右上角的“+”号,然后选择 添加设备。

3)点击选择Arduino(独立设备)-> WiFi接入。

4)选择要接入的服务商(阿里云、点灯科技、腾讯云、OneNet),这里选择”阿里云“,主要是为了以后能接入小爱同学,“点灯科技”不支持小爱同学。

5)复制申请到的Secret Key到代码中要填写密钥的一栏中。

第六步:修改以下代码。

1)修改密钥、wifi名称、wifi密码为自己的。

char auth[] = "Your Device Secret Key";//Blinker APP中获取到的Secret Key(密钥)
char ssid[] = "Your WiFi network SSID or name";//wifi名称
char pswd[] = "Your WiFi network WPA password or WEP key";//wifi密码

2)修改初始化中LED的默认电平。

//digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(LED_BUILTIN, LOW);//默认点亮LED

3)修改并整理后的代码如下:

/* *****************************************************************  
 * 程序功能:
 * 1.使用开发板:nodemcu-ESP8266(模块ESP-12E)
 * 2.程序功能:使用Blinker 手机APP添加设备并绑定,通过APP远程控制开发板上的灯的亮灭
 * 3.例程文档:https://www.diandeng.tech/doc/getting-start-8266
 * *****************************************************************/

//#define LED_BUILTIN 2   //ESP-12E模块自身的LED,对应GPIO2,低电平亮
//#define LED_BUILTIN 16  //nodemcu-esp8266开发板扩展的LED,对应GPIO16,低电平亮

#define BLINKER_WIFI
#define BLINKER_WITHOUT_SSL  //blinker默认使用加密方式进行远程通信,但通信加密会消耗大量的RAM,如果您对通信安全性无要求,
							 //可以添加宏BLINKER_WITHOUT_SSL用以获得更多可用RAM,BLINKER_WITHOUT_SSL目前仅可用于ESP8266,其他设备的RAM足以进行加密通信

#include <Blinker.h>         //使用第三方库

char auth[] = "a3c936aa1b16";//Blinker APP中获取到的Secret Key(密钥)
char ssid[] = "Xiaomi_123";  //wifi名称
char pswd[] = "felix1234";   //wifi密码

// 新建组件对象
BlinkerButton Button1("btn-abc");//组件对象,要和APP组件中的“数据键名”一致
BlinkerNumber Number1("num-abc");

int counter = 0;//计数器

// 按下按键即会执行该函数
void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);//APP中的Monitor控件打印的信息
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//控制LED灯亮灭,低电平亮,高电平灭
}

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

void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
    
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    //digitalWrite(LED_BUILTIN, HIGH);
    digitalWrite(LED_BUILTIN, LOW);//默认点亮LED

    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

    Button1.attach(button1_callback);//绑定按键回调
}

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

第七步:修改完后,进行编译、下载,编译过程中发现有“黄色警告”,不用理会,最后编译是“SUCCESS”就OK。

下载成功后,可以看到开发板上的LED亮了起来,打开VSCODE的串口监视器可以看到打印一些信息。

第八步:使用手机APP进行远程控制开发板中的LED灯。

1)打开APP,由于未付费,所以进入的APP界面是DIY界面。

2)在设备列表页,点击设备图标,进入设备控制面板。

3)首次进入设备控制面板,会弹出向导页。

4)在向导页点击 载入示例,即可载入示例组件。

5)确保设备是在线的,然后点击”点我开灯”即可控制开发板中的LED灯亮和灭。

6)由于“点我计数”在代码未进行绑定,所以会触发dataRead()函数。

至此,所有流程均完成,愉快的玩耍吧!

完整的工程文件:https://download.csdn.net/download/felix_tao/14975814

参考文档:

1.点灯科技:https://www.diandeng.tech/doc/getting-start-8266

猜你喜欢

转载自blog.csdn.net/felix_tao/article/details/113359707