首先完成开发环境搭建: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
参考文档: