首先完成开发环境搭建:https://blog.csdn.net/felix_tao/article/details/113092886
其次完成Blinker_Hello_WiFi(点灯科技-手机APP控制例程):https://blog.csdn.net/felix_tao/article/details/113359707
第一步:下载DHT11/22温湿度传感器库-DHT-sensor-library-master。
下载地址:https://www.arduino.cn/thread-81585-1-1.html
第二步:下载后,将DHT-sensor-library-master.zip进行解压,放到此路径下C:\Users\felix\.platformio\packages\framework-arduinoespressif8266\libraries。
第三步:复制一份Blinker_Hello_WiFi工程,并重命名为Blinker_DHT_WiF。
第四步:打开VSCODE->文件->将文件夹添加到工作区->选择工程文件夹Blinker_DHT_WiF->添加到VSCODE中。
在打开VSCODE过程中,会自动加载PIO插件,以及.vscode->c_cpp_properties.json中会自动加载DHT-sensor-library-master包含路径。
第五步:复制以下代码到VSCODE中的src->main.cpp里面。
/* *****************************************************************
* @author TaoDream
* @version V1.0
* @date 2021.01.31
* 程序功能:
* 1.使用开发板:nodemcu-ESP8266(模块ESP-12E)
* 2.使用传感器:DHT11模块(数据引脚DAT接到开发板的D7,VCC接到开发板的3V3,GND接到开发板的GND)
* 3.程序功能:使用Blinker 手机APP添加设备并绑定,通过APP远程控制开发板上的灯的亮灭,并读取DHTXX传感器的温湿度值在APP上显示
* 4.例程文档:https://www.diandeng.tech/doc/arduino-course,选择“2.数据反馈”
* *****************************************************************/
//#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> //使用第三方库
#include <DHT.h> //使用第三方库
char auth[] = "aabfdfc3b167";//Blinker APP中获取到的Secret Key(密钥)
char ssid[] = "Xiaomi_123"; //wifi名称
char pswd[] = "felix1234"; //wifi密码
// 新建组件对象
BlinkerButton Button1("btn-key");//组件对象,要和APP组件中的“数据键名”一致
///读取DHTXX传感器相关定义和变量//
BlinkerNumber HUMI("humi");
BlinkerNumber TEMP("temp");
#define DHTPIN D7 //定义单总线协议传输的数据引脚
//传感器类型选择
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
float humi_read = 0, temp_read = 0;
///
// 心跳包函数
void heartbeat()
{
//将设备端采集的温湿度数据,通过心跳包同步数据的方式,显示到APP上
HUMI.print(humi_read);
TEMP.print(temp_read);
}
// 按下按键即会执行该函数
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);//APP中的Monitor控件打印的信息
if (state=="on")
{
digitalWrite(LED_BUILTIN, LOW);//打开LED灯
// 反馈开关状态
Button1.print("on");
} else if(state=="off"){
digitalWrite(LED_BUILTIN, HIGH);//关闭LED灯
// 反馈开关状态
Button1.print("off");
}
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);//默认点亮LED
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);//绑定按键回调
//注册一个心跳包
Blinker.attachHeartbeat(heartbeat);
dht.begin();//DTHXX传感器初始化
}
void loop()
{
Blinker.run();
float h = dht.readHumidity();//读取湿度值
float t = dht.readTemperature();//读取温度值
//如果身边没有DHTXX传感器,则使用以下数据来调试
// h = 60.1;//调试用,模拟湿度值
// t = 25.2;//调试用,模拟温度值
if (isnan(h) || isnan(t))
{
BLINKER_LOG("Failed to read from DHT sensor!");
}
else
{
BLINKER_LOG("Humidity: ", h, " %");
BLINKER_LOG("Temperature: ", t, " *C");
humi_read = h;
temp_read = t;
}
//需要注意的是:blinker下的所有延时操作,都需要使用Blinker.delay(val);替代,否则会导致设备断开连接
Blinker.delay(2000);
}
第六步:修改以下代码。
修改密钥、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密码
第七步:将DHT11模块与ESP8266开发板进行连接。
DHT11 --- ESP8266
DAT --- D7
VCC --- 3V3
GND --- GND
第八步:进行编译、下载,编译过程中发现有“黄色警告”,不用理会,最后编译是“SUCCESS”就OK。
下载成功后,可以看到开发板上的LED亮了起来,打开VSCODE的串口监视器可以看到打印一些信息,当看到“MQTT Connected!”则证明连接wifi是成功的,当看到"state":"online"则证明设备是在线的。
如果有接DHT11或DHT22模块,则能看到打印湿度、温度。
VSCODE串口监视器打印的信息:
......
[11393129] Humidity: 93.00 %
[11393130] Temperature: 19.50 *C
[11395181] Humidity: 93.00 %
[11395181] Temperature: 19.50 *C
[11397230] Humidity: 93.00 %
如果没有接,则会说连接传感器失败,没有接也没有关系,给一个固定值就行,因为我们的主要目的是为了调试数据在APP上显示。
[18161] Failed to read from DHT sensor!
[20260] Failed to read from DHT sensor!
[22370] Failed to read from DHT sensor!
[24475] Failed to read from DHT sensor!
第九步:APP界面添加组件,进行开关键控制并显示湿度、温度值。
1)添加“开关按键”组件。
点击右上角的“编辑图标”,进入编辑状态,全部删除原来APP中的组件,点击“按键图标”,然后进入编辑。
2)添加湿度、温度组件。
点击“数据图标”,然后进入编辑。
3)添加调试组件。
点击“调试图标”,然后进入编辑。
4)最后的界面如下图所示,按右上角的“锁图标”进行保存。
5)保存后的界面如下图所示,按开关键可以控制开关板上LED灯的亮和灭,同时湿度、温度组件正常显示数据。
至此,所有操作完成。
完整的工程文件:https://download.csdn.net/download/felix_tao/14978839
参考文档: