PlatformIO+ESP32S3学习:驱动DHT11对温湿度读取和显示

1. 工程创建

在VSCode中打开PlatformIO扩展创建工程。
在这里插入图片描述

设置工程向导

在这里插入图片描述
在这里插入图片描述
等待创建完成。
在这里插入图片描述

2. 安装驱动库

创建完成之后,我们在VSCode中打开我们刚才创建的工程文件夹。

在这里插入图片描述
在VSCode中回到PlatformIO的主页,准备给工程安装DHT11的驱动库。

在这里插入图片描述
在这里插入图片描述
搜索dht11,安装来自AdafruitDHT sensor library库。

在这里插入图片描述
将库安装到我们的工程中。

在这里插入图片描述
在这里插入图片描述
打开platformio.ini文件,可以看到已经安装上了DHT11的驱动库。

在这里插入图片描述

3. 编辑代码

打开工程下的src文件夹下的main.cpp。

在这里插入图片描述

输入以下代码:

#include <Arduino.h>
#include <Adafruit_Sensor.h>
#include <DHT.h> //温湿度传感器驱动库

//DHT11温湿度传感器相关定义
#define DHTPIN 4 //传感器引脚连接4
#define DHTTYPE DHT11 //传感器支持DHT11, DHT12, DHT21, DHT22, AM2301


DHT dht(DHTPIN, DHTTYPE); //初始化温湿度传感器

//湿度 和 温度 的全局变量
float humidity=0, temperature=0;

//温湿度传感器数值读取
void readDHT(void) 
{
  //读取温度参数保存到全局变量中
  humidity = dht.readHumidity();
  //读取湿度参数保存到全局变量中
  temperature = dht.readTemperature();

  //判断温湿度数据是否是非数字
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
}

void setup() 
{
  //串口初始化
  Serial.begin(9600);
  //DHT11初始化
  dht.begin();
}

void loop() 
{
  char disp_buf[50] = {0};
  
  readDHT(); //读取温湿度参数

  //格式化字符串
  sprintf(disp_buf, "temperature=%02.0d C", (int)temperature);
  //输出温度
  Serial.println(disp_buf);

  //格式化字符串
  sprintf(disp_buf, "humidity=%02.0d %%", (int)humidity);
  //输出湿度
  Serial.println(disp_buf);

  delay(1000);
}

4. 代码验证

代码编写完成之后,将ESP32S3开发板接入电脑。我当前的开发板上是CH340K的驱动,故我这里选择COM3端口。

在这里插入图片描述

编译并下载到开发板中。

在这里插入图片描述
点击打开串口监视器。

在这里插入图片描述
可以看到温湿度数据读取显示正常。

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用Arduino编程读取DHT11温湿度传感器数据并将其上传到巴法云平台,您可以按照以下步骤进行操作: 1. 首先,在Arduino IDE中安装DHT传感器库。在"工具"菜单中选择"库管理器",然后搜索并安装"DHT sensor library"。 2. 在Arduino IDE中,打开一个新的Sketch,并导入所需的库文件。您需要导入以下库文件: ```cpp #include <WiFi.h> #include <WiFiClient.h> #include <DHT.h> ``` 3. 设置您的WiFi网络连接。与上一个问题中相同,您需要使用`WiFi.begin()`函数连接到您的WiFi网络。 ```cpp const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD"; void setup() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); } ``` 请将`Your_SSID`替换为您的WiFi网络名称(SSID),将`Your_PASSWORD`替换为您的WiFi密码。 4. 创建TCP连接到巴法云平台。与上一个问题中相同,使用`WiFiClient`类创建一个TCP客户端对象,并使用`client.connect()`函数连接到巴法云平台的服务器。 ```cpp const char* server = "your_bafa_server.com"; const int port = your_bafa_port; void loop() { if (client.connect(server, port)) { Serial.println("Connected to server"); // 在此处添加读取温湿度并上传到巴法云平台的代码 } else { Serial.println("Connection failed"); } client.stop(); delay(5000); } ``` 请确保替换`your_bafa_server.com`和`your_bafa_port`为正确的服务器地址和端口号。 5. 在`client.connect()`成功连接到服务器后,您可以在相应的代码位置添加读取温湿度并上传到巴法云平台的代码。首先,创建一个DHT对象并指定传感器引脚。 ```cpp #define DHTPIN 4 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); ``` 6. 在`setup()`函数中初始化DHT传感器。 ```cpp void setup() { // ... dht.begin(); } ``` 7. 在循环中,使用`dht.readTemperature()`和`dht.readHumidity()`函数分别读取温度和湿度数值。 ```cpp void loop() { // ... float temperature = dht.readTemperature(); float humidity = dht.readHumidity(); if (isnan(temperature) || isnan(humidity)) { Serial.println("Failed to read from DHT sensor!"); return; } // 温湿度读取成功,上传数据到巴法云平台 } ``` 请注意,我们使用`isnan()`函数检查温湿度读数是否有效。 8. 在温湿度读取成功后,使用`client.print()`函数将数据发送到巴法云平台。请根据巴法云平台的要求和接口文档构造正确的HTTP请求。 ```cpp client.print("POST /upload_data HTTP/1.1\r\n"); client.print("Host: your_bafa_server.com\r\n"); client.print("Content-Type: application/json\r\n"); client.print("Content-Length: "); client.print(15 + sizeof(temperature) + sizeof(humidity)); client.print("\r\n\r\n"); client.print("{\"temperature\":"); client.print(temperature); client.print(",\"humidity\":"); client.print(humidity); client.println("}"); ``` 请根据您的需求修改上传数据的格式和内容。 9. 在完成数据上传后,使用`client.stop()`函数关闭TCP连接,并在适当的位置添加延迟以控制上传频率。 ```cpp client.stop(); delay(5000); // 5秒的延迟,用于控制上传频率 ``` 以上是将DHT11温湿度数据通过TCP协议上传到巴法云平台的基本步骤。请根据巴法云平台的具体要求和接口文档进行进一步的开发和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老怪.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值