Arduino-ESP8266检测温湿度上传阿里云
硬件准备Arduino IDE环境阿里云端实物接线IDE库文件配置ArduinoJsonAliyunIoTSDKPubSubClientCryptoAWS-SDK-ESP8266
容易出现的问题库文件缺失MQTT连接失败
代码部分
硬件准备
ESP8266-12F开发板 DHT11 或 DHT22温湿度传感器 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a42fcf4b7ca5434380823da73ef1966b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY3OTE2Mw==,size_16,color_FFFFFF,t_70)
Arduino IDE环境
我们使用ESP8266开发板在Arduino IDE下编译使用前,需要在Arduino下配置ESP8266的开发环境 在Arduino首选项中,添加附加开发板管理器网站:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
接着在工具——开发板——开发板管理器中下载安装ESP8266的开发板 安装好后,在开发板中选择:NodeMCU开发板 ![在这里插入图片描述](https://img-blog.csdnimg.cn/4b513ec2513b47d5832ae4a438004e9a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY3OTE2Mw==,size_16,color_FFFFFF,t_70)
阿里云端
进入阿里云官网 登陆后进入阿里云生活物联网 新建项目 新建产品 新建属性 新建两个属性,一个是温度,一个湿度(注意温度中标识符是temperature,湿度的标识符是humidity) PS:注意,这里有一点,我们在这里创建的属性中,数据类型要和代码中的数据类型一致,图中我们的数据类型创建的是int型,对应的我们代码中定义的数据类型也要是int型,float,double同理,DHT传感器检测范围可以精确到小数点后两位,所以建议数据类型设置为double或float,(图中疏忽,于下面的代码不符,还请见谅) 在设备中,选择找到乐鑫 继续新增测试设备 成功新增后得到密钥 保存记录好密钥!
实物接线
DHT11ESP8266VCC3VGNDGSD4
![在这里插入图片描述](https://img-blog.csdnimg.cn/48754e7775c94d9aa8206c4a02e96502.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY3OTE2Mw==,size_16,color_FFFFFF,t_70)
IDE库文件配置
ArduinoJson
![在这里插入图片描述](https://img-blog.csdnimg.cn/20d9434f9ccc4850ab7e2da4b1b28a3c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY3OTE2Mw==,size_16,color_FFFFFF,t_70)
AliyunIoTSDK
![在这里插入图片描述](https://img-blog.csdnimg.cn/6c7e9944ab3846cb8b8820bcbbf70a71.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY3OTE2Mw==,size_16,color_FFFFFF,t_70)
PubSubClient
![在这里插入图片描述](https://img-blog.csdnimg.cn/703dc8d8dfbe4993a5114e46f82b19e7.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY3OTE2Mw==,size_16,color_FFFFFF,t_70)
Crypto
![在这里插入图片描述](https://img-blog.csdnimg.cn/09e5a7ee1fb54bf1b4092a3febe4e59a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY3OTE2Mw==,size_16,color_FFFFFF,t_70)
AWS-SDK-ESP8266
![在这里插入图片描述](https://img-blog.csdnimg.cn/12aa880c93bc418a9c9ede088b1084d5.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY3OTE2Mw==,size_16,color_FFFFFF,t_70)
容易出现的问题
库文件缺失
注意,因为AliyunSDK依赖库比较多,以上的库请务必安装完毕 若出现报错 缺少SHA256.h即为Crypto库没有安装 SHA256.h是加密算法,如果有需要单独下载 ——SHA256.h
MQTT连接失败
若串口出现MQTT连接失败,则需要修改PubSubClient.h 默认的SIZE和KEEPALIVE较小分别修改为1024,60即可 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f74d99c30363473a9a574dbe1a096e98.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDY3OTE2Mw==,size_16,color_FFFFFF,t_70)
代码部分
#include
static WiFiClient espClient;
/*温湿度*/
#include "DHT.h"
#define DHTTYPE DHT11
#define dht_dpin D4
DHT dht(dht_dpin, DHTTYPE);
/*阿里云SDK*/
#include
/*配置阿里云设备信息*/
#define PRODUCT_KEY "***********" //产品KEY
#define DEVICE_NAME "********" //设备名字
#define DEVICE_SECRET "******************" //设备密钥
#define REGION_ID "cn-shanghai" //连接服务器
/* 配置WIFI */
#define WIFI_SSID "你的wifi名称"
#define WIFI_PASSWD "你的wifi密码"
void setup()
{
Serial.begin(115200);
dht.begin();
// 初始化WIFI
wifiInit(WIFI_SSID, WIFI_PASSWD);
// 传入WIFI-client 设备产品信息
AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
//AliyunIoTSDK::send("temperature", t); 如有需要可发送模拟数据
}
void loop()
{
AliyunIoTSDK::loop();
float h = dht.readHumidity();
float t = dht.readTemperature();
AliyunIoTSDK::send("temperature", t);
AliyunIoTSDK::send("humidity", h);
delay(800);
}
// 初始化 wifi 连接
void wifiInit(const char *ssid, const char *passphrase)
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, passphrase);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("WiFi not Connect");
}
Serial.println("Connected to AP");
}
实际效果图: 在设备详情-运行状态(勾选实时刷新)下可以看到当前实时的温湿度 祝你顺利!!!
|