前言
网上已有很多该教程,但从我刚开始入坑时按照那些教程做都没有成功,大部分都是对流程没有介绍完整还有一些细节没有提到,对于刚入坑的小白我来说是一个巨大的挑战。我在 Blinker官网学习了他们开放的接口后并且自己实验成功后,写下了这篇博客,帮助有需要的小伙伴避避坑。
文章内容比较长,有基础的小伙伴可以选择性看。为了写这篇教程也花费我较长时间,这也是我第一次写,对图片编辑还不太会,如果有什么不足的地方请批评指正。最后,如果有用的话就为我点一个赞吧。
整体流程
一、搭建ESP8266开发环境
ESP8266的开发方法很多开发环境也比较多,我选择的是用Arduino IDE烧写程序的方式开发的。(windows电脑)
二、为ESP8266烧录程序安装驱动
ESP8266的多种多样,在这里我选择的是ESP8266 NODEMCU开发板。这块板子有两种串口芯片,需要不同的驱动。(有的电脑会自动安装驱动程序,有的不会然后就识别不到ESP8266开发板)
三、ESP8266程序的编辑与烧录
用ESP8266库函数和Blinker库函数编辑需要的功能函数,再烧录进ESP8266。
四、点灯APP的配置
五、米家APP和小爱训练的配置
一、搭建ESP8266开发环境
1.1安装Arduino IDE
到Arduino官网下载安装包。
在这里我们选择下载就好了,当然您也可以选择为Arduino的开源精神捐献。
下载好后打开文件安装就好了,这里就不做演示了,如果有不会的小伙伴可以去搜索其他的安装教程。
1.2安装ESP8266库和Blinker库
1.2.1安装ESP8266库
打开Arduino IDE(我安装的是1.8.19的版本,和最新的版本可能有点不一样),然后选择“文件”,再点击首选项。
在“附加开发板管理器网址”中粘贴:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
如下图:
在工具中选中“开发板”点击“开发板管理器...”,搜索“ESP8266”。
选择版本点击安装就好了。
安装好后在开发板选项中就会出现ESP8266的选项。然后我们选择NodeMCU 0.9就好了。
1.2.2安装Blinker库
因为我们要连接点灯科技的服务器,就需要安装他们提供的开发软件包。
到点灯科技官网下载软件包。
打开Arduino IDE,在“项目”中选择“加载库”,点击“添加.ZIP库”,在文件中找到刚下载的软件包。
然后就可以在“文件”“示例”的最下面第三方库中看到Blinker。
到此软件包已安装完成。
二、为ESP8266安装驱动
NodeMCU开发板的串口芯片有CH340和CP210两种,前者要便宜点,相应的驱动程序应该也有所不同,根据自己的开发板串口芯片选择就好了。
CP210驱动:官网下载,下载第一个安装就好了。
CH340驱动:官网下载,也是下载安装就好了。
安装好驱动程序后您可以用USB线连接ESP8266和电脑,您就可以在设备管理器中看到您的开发板了。同时要注意这里的端口号,在烧录程序时要选择对应的端口号,我这里是COM3.
到此开发环境已经搭建好了,您想让ESP8266做任何事都可以做了。
三、ESP8266程序的编辑与烧录
打开Arduino IDE在“示例”,“Blinker”,“Blinker_Hello”中选择“Hello_WiFi”
根据Blinker官方文档的介绍,我们需要对示例程序做一些修改,来连接小爱同学。
下面是完整代码:
#define BLINKER_MIOT_LIGHT//用于连接小爱的宏定义
#define BLINKER_WIFI//用于连接WiFi的宏定义
#include <Blinker.h>//Blinker第三方库
char auth[] = "Your Device Secret Key";//您的Blinker密钥
char ssid[] = "Your WiFi network SSID or name";//WiFi名称
char pswd[] = "Your WiFi network WPA password or WEP key";//WiFi密码
// 新建组件对象
BlinkerButton Button1("btn-abc");//创建一个按键(此按键为开关按键,引号中的名字需要与BlinkerAPP中的按键名字相对应)
BlinkerNumber Number1("num-abc");//计数,可以自己尝试
int counter = 0;
// 按下按键即会执行该函数
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
if (state == "on") { //按键被点击
Button1.color("#FF0000"); // 返回按键颜色为红色
Button1.text("已开灯"); //设置按键的描述
digitalWrite(LED_BUILTIN,LOW); // 将LED灯状态反转,灭变亮
Button1.print("on"); //将按键状态信息输出给电脑上显示
}
else if (state == "off") { //按键被按下
Button1.color("#FFFF00"); //返回按键颜色显示为黄色
Button1.text("已关灯"); //Button1返回文本信息
digitalWrite(LED_BUILTIN, HIGH); // 将LED灯状态反转,亮变灭
Button1.print("off"); //打印Button1状态信息
}
}
// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
counter++;
Number1.print(counter);
}
//小爱同学回调函数
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == "on") { //打开灯
digitalWrite(LED_BUILTIN, LOW); //改变灯的状态
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == "off") {
digitalWrite(LED_BUILTIN, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
//注册小爱同学回调函数
BlinkerMIOT.attachPowerState(miotPowerState);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
Button1.attach(button1_callback);
}
void loop() {
Blinker.run();
}
代码中需要修改为您自己信息的两个地方:
char auth[] = "Your Device Secret Key";//您的Blinker密钥
char ssid[] = "Your WiFi network SSID or name";//WiFi名称
char pswd[] = "Your WiFi network WPA password or WEP key";//WiFi密码
// 新建组件对象
BlinkerButton Button1("btn-abc");
在“工具”,“端口”中选择您的端口号(设备管理器中可以查看)。
然后点击上传。
上传完成后显示如下(版本不同可能样式不一样)。
到此代码已编辑烧录完成。
四、点灯APP的配置
首先我们需要到官网下载APP并安装。(选择对应的手机系统)(小米手机用户请忽略安全提醒)
在操作之后的流程之前您需要先注册一个点灯的账号。
打开点灯APP,点击添加设备。
选择独立设备
选择网络接入
点击复制key,后面粘贴到您的程序中。
点击示例界面或者跳过示例都可。
点击编辑
点击按键
点击创建的按键
组件键名要与代码中的一致,选择开关按键,最后保存。
最后确保代码中的密钥和自己的一致,WiFi密码和名称要正确,然后烧录到ESP8266上。
到此APP和代码配置完毕。
五、米家APP和小爱训练的配置
在米家中找到“我的”,点击“添加其他平台”,然后搜索“点灯科技”,然后点击绑定账号。把程序下载到ESP8266中等待连好网。在米家中刚注册的点灯科技中点击“同步设备”,就可以看到上面创建的设备。如下图:
最后一步,打开“小爱同学”,点击“训练计划”,点击“个人训练”,再点击“+”创建训练。
后面就是一些简单的添加操作。
最后就试着对小爱说一句吧。
如果您比较感兴趣,您可以把控制LED灯换成控制继电器,这样您就可以控制家电了。(220V高压电注意安全)
感谢您的观看。