Arduino-ESP8266检测温湿度上传阿里云
硬件准备Arduino IDE环境阿里云端实物接线IDE库文件配置ArduinoJsonAliyunIoTSDKPubSubClientCryptoAWS-SDK-ESP8266容易出现的问题库文件缺失MQTT连接失败代码部分硬件准备
ESP8266-12F开发板
DHT11或DHT22温湿度传感器
Arduino IDE环境
我们使用ESP8266开发板在Arduino IDE下编译使用前,需要在Arduino下配置ESP8266的开发环境
在Arduino首选项中,添加附加开发板管理器网站:
/stable/package_esp8266com_index.json
接着在工具——开发板——开发板管理器中下载安装ESP8266的开发板
安装好后,在开发板中选择:NodeMCU开发板
阿里云端
进入阿里云官网
登陆后进入阿里云生活物联网
新建项目
新建产品
新建属性
新建两个属性,一个是温度,一个湿度(注意温度中标识符是temperature,湿度的标识符是humidity)
PS:注意,这里有一点,我们在这里创建的属性中,数据类型要和代码中的数据类型一致,图中我们的数据类型创建的是int型,对应的我们代码中定义的数据类型也要是int型,float,double同理,DHT传感器检测范围可以精确到小数点后两位,所以建议数据类型设置为double或float,(图中疏忽,于下面的代码不符,还请见谅)
在设备中,选择找到乐鑫
继续新增测试设备
成功新增后得到密钥
保存记录好密钥!
实物接线
IDE库文件配置
ArduinoJson
AliyunIoTSDK
PubSubClient
Crypto
AWS-SDK-ESP8266
容易出现的问题
库文件缺失
注意,因为AliyunSDK依赖库比较多,以上的库请务必安装完毕
若出现报错 缺少SHA256.h即为Crypto库没有安装
SHA256.h是加密算法,如果有需要单独下载 ——SHA256.h
MQTT连接失败
若串口出现MQTT连接失败,则需要修改PubSubClient.h
默认的SIZE和KEEPALIVE较小分别修改为1024,60即可
代码部分
#include <ESP8266WiFi.h>static WiFiClient espClient;/*温湿度*/#include "DHT.h" #define DHTTYPE DHT11#define dht_dpin D4DHT dht(dht_dpin, DHTTYPE);/*阿里云SDK*/ #include <AliyunIoTSDK.h>/*配置阿里云设备信息*/#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();// 初始化WIFIwifiInit(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");}
实际效果图:
在设备详情-运行状态(勾选实时刷新)下可以看到当前实时的温湿度
祝你顺利!!!