ESP8266+dht11 连接阿里云 上传温湿度

ESP8266+dht11 连接阿里云 上传温湿度
①在刚开始研究的时候也是一头雾水,在看了几天各路大神写的博客和视频之后,最终得以实现。
②接下来让我详述一下整个过程
需要编写代码,云端创建产品和设备,还有阿里云的库文件需要用到
下面让我们开始吧!
一、创建云端设备
1.1首先我们进到阿里云的官网,在产品里找到物联网平台
在这里插入图片描述
接下来进入控制台
在这里插入图片描述
我记得是先要开通物联网平台,然后看下图
在这里插入图片描述
我这里显示已经开通了公共实例,没开通的话,需要先开通一下,需要等待一会,才能开通完成。
接下来点击公共实例,跳转到如下界面
在这里插入图片描述
我们点击创建产品
在这里插入图片描述
跳转到下图
在这里插入图片描述
填入产品名称(这个没有要求,自己填写就行),然后下面选择产品所属品类,这里我们搜索温湿度选择第一个即可。
在这里插入图片描述下面的选项默认即可
在这里插入图片描述
点击确认,产品就创建完成了
在这里插入图片描述
接下来创建设备
在这里插入图片描述
选择刚才创建的产品,并输入设备名称
在这里插入图片描述

创建完产品就如下,箭头所指的地方信息是我们需要用到的,点击查看,可以看到ProductKey、DeviceName、DeviceSecret,这三个是要写到代码里的
在这里插入图片描述
在这里插入图片描述
我们的设备创建完了,可以看到当前是未激活的状态,这里的产品名称和设备名称我是随意输入的
在这里插入图片描述
至此云端上的任务已经完成!完成了本次项目的一大步!

二、在Arduino或者VScode里编写代码,安装库文件,修改PubSubClient里的参数
在这里插入图片描述
2.1我们先安装库文件,安装AliyunIoTSDK、ArduinoJson、 PubSubClient、Crypto,以上四个库
在这里插入图片描述
在里面搜索安装即可

2.2 修改PubSubClient里的参数
因为要连接阿里云,所以需要修改参数
找到我们PubSubClient库文件位置,一般都在Arduino里的Libraries里面,打开PubSubClient里面的src文件,可以看到.h头文件,打开它,修改第26行和第31行的参数,改为1024和60,如下图。
在这里插入图片描述

2.3编写代码,烧录到esp8266
代码如下,可以直接复制使用
但是这里的宏定义需要修改自己的设备相关参数,在前面已经强调过在哪里查看了,忘记了可以往回翻
#define PRODUCT_KEY “gsastNB7Yat”
#define DEVICE_NAME “temperature”
#define DEVICE_SECRET “d184b8d1688523eb04ec6249234fe735”//(这三个东西在阿里云里面)
#define REGION_ID “cn-shanghai”//这里无需修改

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

//设置用于连接温湿度传感器的引脚
#define DHTPIN 13  //根据硬件连接确定引脚编号(注意,这里我连接的是D7,也就是GPIO13)
#define Led  D4


#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
float h,t;


// 引入 wifi 模块,并实例化,不同的芯片这里的依赖可能不同
#include <ESP8266WiFi.h>
static WiFiClient espClient;

// 引入阿里云 IoT SDK
#include "AliyunIoTSDK.h"

// 设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY "gsastNB7Yat"
#define DEVICE_NAME "temperature"
#define DEVICE_SECRET "d184b8d1688523eb04ec6249234fe735"//(这三个东西在阿里云里面)
#define REGION_ID "cn-shanghai"

// 设置 wifi 信息
#define WIFI_SSID "明小岩"//(这里面连你自己家的WiFi,注意要是2.4G频段的,5G的不行)
#define WIFI_PASSWD "999999999"//(你自己家的WiFi密码)

void setup()
{
    Serial.begin(115200);

    // 初始化 wifi
    wifiInit(WIFI_SSID, WIFI_PASSWD);

    初始化 iot,需传入 wifi 的 client,和设备产品信息
    AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);

    // 绑定一个设备属性回调,当远程修改此属性,会触发 powerCallback
    // PowerSwitch 是在设备产品中定义的物联网模型的 id
    // AliyunIoTSDK::bindData("温湿度",CurrentTemperature);

    // // 发送一个数据到云平台,LightLuminance 是在设备产品中定义的物联网模型的 id
    // AliyunIoTSDK::send("LightLuminance", 100);

     
 
  pinMode(DHTPIN,INPUT);
    pinMode(Led,OUTPUT);
  dht.begin();
 
}

void loop()
{
    
  AliyunIoTSDK::loop();  
  AliyunIoTSDK::send("CurrentTemperature",t);
  AliyunIoTSDK::send("CurrentHumidity",h);

  h = dht.readHumidity();
  t = dht.readTemperature();                
  Serial.print("Temperature:");                      
  Serial.println(t);                                     
  delay(1000);
  Serial.print("Humidity:");                            
  Serial.print(h);                                    
  Serial.println("%");                                 
  delay(1000);
  

}

// 初始化 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");
     digitalWrite(Led, LOW);


}

// 电源属性修改的回调函数
void powerCallback(JsonVariant p)
{
    int PowerSwitch = p["PowerSwitch"];
    if (PowerSwitch == 1)
    {
        // 启动设备
    } 
}

代码烧录完,连接上网络,可以打开串口监视器,看到温湿度和连接MQTT的状态
在这里插入图片描述

2.4另外强调
AliyunIoTSDK::send(“CurrentTemperature”,t);
AliyunIoTSDK::send(“CurrentHumidity”,h);
这两行代码,CurrentTemperature、CurrentHumidity,是与我们云端产品的功能定义标识符一致,要不然数据传不上来,另外标识符的数据类型也要与代码中的一致。
在这里插入图片描述
还有这里我注释掉了,这个代码是干嘛的呢,就是这里设置一个属性与云端的对应上,就是我们产品里定义的功能,比如温度或者湿度这些。
在这里插入图片描述
powerCallback是一个函数名,而PowerSwitch是一个功能标识符
在这里插入图片描述

我们可以在此设置一些其他东西的控制,比如控制一个led点亮,蜂鸣器响等等。
我举一个例子哈,比如说,我们想控制led灯,我们就可以像下面这样,其他的大家可以多多尝试!

void powerCallback(JsonVariant p)
{
    int PowerSwitch = p["PowerSwitch"];
    if (PowerSwitch == 1)
    {
        digitalWrite(Led, LOW);
    } 
}

在线调试就可以了,我们调试开关为1(打开),然后点设置,可以看到我们ESP8266的led灯点亮了!

在这里插入图片描述

三、最终效果展示
在这里插入图片描述
温度和湿度已经上传到阿里云,只要我们代码烧录到esp8266里,并且连接上wifi网络(热点),我们云端的设备就会显示在线的状态,数据也会上传。

最后希望大家顺利完成此项目,如有遗漏可以评论告诉我一下,本篇文章为记录自己学习生活,并且希望和我一样学习esp8266 的小伙伴可以借鉴经验,更快入手,建议大家库文件都从ArduinoIDE里安装,如果从github里下载可能有问题,大家多多尝试!

### 回答1: 好的,我来用中文回答您的问题。 ESP8266是一款基于WiFi的微控制器,而DHT11是一款常用的数字温湿度传感器。如果您想在阿里云平台上上传ESP8266DHT11数据,可以按照以下步骤进行操作: 1. 首先,您需要将ESP8266DHT11连接在一起,并通过ESP8266读取DHT11数据。 2. 然后,您可以使用ESP8266连接到WiFi网络,并将读取的数据通过HTTP POST请求发送到阿里云平台的API网关。 3. 在阿里云平台上,您可以创建一个API网关,并设置POST请求的Endpoint和参数。在API网关中,您可以使用函数计算或自定义后端服务来处理接收到的数据。 4. 最后,您可以将处理后的数据存储在阿里云平台的对象存储服务中,或者将其发送到其他服务进行进一步处理。 需要注意的是,您需要在阿里云平台上创建并配置相应的服务和权限,才能成功上传ESP8266DHT11数据阿里云平台。希望这些信息对您有所帮助! ### 回答2: ESP8266是一款Wi-Fi模块,而DHT11是一款数字温湿度传感器,二者的结合可以实现通过ESP8266DHT11采集到的温湿度数据上传阿里云平台上。 首先,我们需要搭建一个ESP8266DHT11连接的电路,这样才能正常地获取温湿度数据ESP8266DHT11连接方式不固定,需要根据具体的电路图进行连接连接好后,我们需要在Arduino IDE中编写相应的代码,实现采集温湿度数据和将数据上传阿里云平台。 在Arduino IDE中,需要安装ESP8266开发板的支持库,以及阿里云ESP8266的支持库。然后,我们可以利用Arduino IDE中提供的阿里云数据接口,实现将温湿度数据上传阿里云平台的功能。关于阿里云的配置和代码编写细节,可以参考阿里云的相关文档或者官网进行学习和了解。 总的来说,ESP8266DHT11上传阿里云需要对硬件电路和代码编写进行相应的设置和配置。整个流程比较复杂,需要一定的电子和互联网知识,以及具备基本的编程能力。但是,通过ESP8266DHT11上传阿里云可以实现很多有趣的应用,比如智能家居或者物联网设备,有很大的发展潜力。 ### 回答3: ESP8266是一款廉价的Wi-Fi模块,可用于连接互联网并实现与各种传感器和设备的通信。DHT11则是一款广泛应用于测量温湿度的数字传感器,可以读取环境温度和湿度的值。阿里云是阿里巴巴集团提供的云计算服务平台,可提供各种云计算技术和解决方案。 要上传DHT11获取的温湿度数据阿里云,需要先连接ESP8266DHT11传感器进行通信。可以使用Arduino或其他开发板来编写代码,并使用ESP8266连接到Wi-Fi网络,然后将读取的温湿度变量存储在ESP8266中。 接下来,需要将温湿度数据发送到阿里云上,可以使用MQTT协议来实现。MQTT协议是一种轻量级的消息传输协议,可以在不占用太多带宽和资源的情况下实现传输,适用于物联网设备之间的通信。 首先,需要在阿里云上创建一个MQTT实例并获取访问密钥。然后,需要在ESP8266上安装MQTT库,并将客户端ID、访问密钥、主题等信息填入代码中,以便实现消息传递。在ESP8266上发送消息后,可以在阿里云上配置相关规则和功能以对接收到的数据进行处理。 总之,ESP8266DHT11可以轻松实现与阿里云连接数据上传,为物联网应用提供大量便利。通过阿里云云计算技术,也可以更好地保障数据的安全性和稳定性,满足用户多样化的需求。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值