前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESP8266+DHT11使用ThingsPanel监测温湿度[附源码]

ESP8266+DHT11使用ThingsPanel监测温湿度[附源码]

原创
作者头像
用户9549256
发布2023-08-16 08:29:10
4470
发布2023-08-16 08:29:10
举报
文章被收录于专栏:开源物联网开源物联网

这个教程的目的是通过ESP8266开发板采集DHT11温湿度传感器的数据推送到开源物联网平台ThingsPanel,并实现温湿度监测。

最终效果

准备事项

ESP8266开发板  https://wiki.diustou.com/cn/ESP8266_Dev_Board  具体开发板的型号是ESP-12F

DHT11温湿度传感器

操作步骤

1、接线

接到外设口,分别是gnd data 3v3,注意不要接反,反了必烧,我已经烧了一个。

另外一端接电脑USB

2、准备代码刷写工具

使用的是Arduino IDE,可自行搜索下载。

在设置里【附加板卡管理网址】中添加8266  http://arduino.esp8266.com/stable/package_esp8266com_index.json

选择开发板,如果你只有一块板子,那很好选择。

然后安装库:

  • pubsubclient
  • simpledht
  • ArduinoJson

3、在ThingsPanel上创建设备

绑定了温湿度传感器插件,并点开【编辑参数】

点开【编辑参数】

4、刷写代码

代码里已经包含了在ThingsPanel中创建的设备连接认证信息,直接复制粘贴即可。

如下这三个值要改成自己的:

  • const char* ssid ="Redmi";
  • const char* password ="123456789";
  • const char* mqtt_user ="97380127-49b3-aa19-9762-00cabf5ef21b";

代码语言:javascript
复制
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <SimpleDHT.h>
#include <ArduinoJson.h>


// WiFi和MQTT参数
const char* ssid = "Redmi";
const char* password = "123456789";
const char* mqtt_server = "dev.thingspanel.cn";
const char* mqtt_user = "97380127-49b3-aa19-9762-00cabf5ef21b";
const char* mqtt_password = "";
const char* mqtt_topic = "device/attributes";

WiFiClient espClient;
PubSubClient client(espClient);

// 为DHT11数据引脚定义引脚号
const int pinDHT11 = 5;
SimpleDHT11 dht11(pinDHT11);

void setup() {
  Serial.begin(115200);
  delay(1000);  // 等待串口初始化
  Serial.println("DHT11 Test!");

  // 连接WiFi
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // 设置MQTT服务器和回调函数
  client.setServer(mqtt_server, 1883);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  // 从DHT11读取温度和湿度
  byte temperature = 0;
  byte humidity = 0;
  int err = SimpleDHTErrSuccess;
  if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
    return;
  }
  
  Serial.print("Temperature: ");
  Serial.print((int)temperature); 
  Serial.println(" *C");
  
  Serial.print("Humidity: ");
  Serial.print((int)humidity); 
  Serial.println(" %");

  // 创建JSON对象并发送数据到MQTT
  StaticJsonDocument<100> doc;
  doc["temperature"] = (int)temperature;
  doc["humidity"] = (int)humidity;
  char msg[100];
  serializeJson(doc, msg);
  client.publish(mqtt_topic, msg);

  delay(2000);  // 等待2秒再次读取
}


void reconnect() {
  // 循环直到连接上MQTT
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
      Serial.println("connected");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      delay(5000);
    }
  }
}

刷写程序,按照如下图操作:

刷写完毕后,数据上线,可在ThingsPanel的设备监控中看到对应的可视化界面效果。

难点综述

本教程对技术要求的门槛很低,几个难点分别是:

1、接线:接USB口不用说了,dht11传感器接的时候,gnd对gnd,确保这点就错不了。

2、安装刷代码软件:安装好Arduino IDE之后,配置板卡管理,就是把给的网址贴到设置里,安装库,搜索对应单词即可。

3、刷程序,左上角两个按钮,先点左1验证,后点左2上传。

4、完工,可以在下方串口监视器这里看到数据输出,波特率选择 115200,可在ThingsPanel的测试平台看到监控信息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最终效果
  • 准备事项
  • 操作步骤
    • 1、接线
      • 2、准备代码刷写工具
        • 3、在ThingsPanel上创建设备
          • 4、刷写代码
          • 难点综述
          相关产品与服务
          物联网开发平台
          腾讯云物联网开发平台(IoT Explorer)是面向智慧生活与产业物联应用的一站式物联网PaaS平台,为各行业用户提供一站式设备智能化服务。平台提供海量设备连接与消息通信能力,基于腾讯连连小程序应用开发能力、音视频能力及AI增值服务,聚合腾讯生态内容能力。提升传统行业设备智能化的效率,降低用户的开发运维成本。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档