Arduino-ESP8266检测温湿度上传阿里云

硬件准备

ESP8266-12F开发板
DHT11DHT22温湿度传感器
在这里插入图片描述

Arduino IDE环境

我们使用ESP8266开发板在Arduino IDE下编译使用前,需要在Arduino下配置ESP8266的开发环境
在Arduino首选项中,添加附加开发板管理器网站:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

在这里插入图片描述
接着在工具——开发板——开发板管理器中下载安装ESP8266的开发板
在这里插入图片描述
安装好后,在开发板中选择:NodeMCU开发板
在这里插入图片描述

阿里云端

进入阿里云官网
在这里插入图片描述
登陆后进入阿里云生活物联网
在这里插入图片描述
新建项目
在这里插入图片描述
新建产品
在这里插入图片描述
新建属性
在这里插入图片描述
新建两个属性,一个是温度,一个湿度(注意温度中标识符是temperature,湿度的标识符是humidity
PS:注意,这里有一点,我们在这里创建的属性中,数据类型要和代码中的数据类型一致,图中我们的数据类型创建的是int型,对应的我们代码中定义的数据类型也要是int型,float,double同理,DHT传感器检测范围可以精确到小数点后两位,所以建议数据类型设置为double或float,(图中疏忽,于下面的代码不符,还请见谅在这里插入图片描述
在设备中,选择找到乐鑫
在这里插入图片描述
继续新增测试设备
在这里插入图片描述
成功新增后得到密钥
在这里插入图片描述
保存记录好密钥!

实物接线

DHT11 ESP8266
VCC 3V
GND G
S D4

在这里插入图片描述

IDE库文件配置

ArduinoJson

在这里插入图片描述

AliyunIoTSDK

在这里插入图片描述

PubSubClient

在这里插入图片描述

Crypto

在这里插入图片描述

AWS-SDK-ESP8266

在这里插入图片描述

容易出现的问题

库文件缺失

注意,因为AliyunSDK依赖库比较多,以上的库请务必安装完毕
若出现报错 缺少SHA256.h即为Crypto库没有安装
SHA256.h是加密算法,如果有需要单独下载 ——SHA256.h

MQTT连接失败

若串口出现MQTT连接失败,则需要修改PubSubClient.h
默认的SIZEKEEPALIVE较小分别修改为102460即可
在这里插入图片描述

代码部分

#include <ESP8266WiFi.h>
static WiFiClient espClient;

/*温湿度*/
#include "DHT.h" 
#define DHTTYPE DHT11
#define dht_dpin D4
DHT 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();
    
    // 初始化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");
}

实际效果图:
在这里插入图片描述
设备详情-运行状态勾选实时刷新)下可以看到当前实时的温湿度
在这里插入图片描述
祝你顺利!!!

猜你喜欢

转载自blog.csdn.net/weixin_50679163/article/details/119576713