ESP32利用DHT温湿度传感器,记录温湿度并调用Api上传数据到数据库。

 流程:

dht11读取温湿度 -> 调用api 上传数据

传感器介绍

DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃ 。 几块钱即可买。

pin

名称

注释

1

VDD

供电 3-5.5VDC

2

DATA

串行数据,单总线

3

NC

空脚

4

GND

接地,电源负极

编码前先从Arduino IDE库管理器安装DHT SENSOR LIBRARY 这个库。

接线方式

代码:

#include <DHT.h>
#include <DHT_U.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <string>
const char* ssid = "805";
const char* password = "xx";
#define DHTPIN 4 //设置获取数据的引脚

//对应DHT的版本,选择一个取消注释
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);//创建一个DHT对象

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
   delay(1000);
   Serial.println("Connecting to WiFi...");
 }
  Serial.println("Connected to WiFi");
  dht.begin(); //初始化DHT传感器
}
void loop() {
  delay(2000); //暂停2秒,读取数据官方说明需要250毫秒
  float h = dht.readHumidity();          //读取湿度
  float t = dht.readTemperature();       //读取摄氏度
  float f = dht.readTemperature(true);   //读取华氏度
  if (isnan(h) || isnan(t) || isnan(f)) {    //如果读取错误
     Serial.println("读取传感器失败");         //读取失败提示
     return;
  }
  float hif = dht.computeHeatIndex(f, h);  //计算华氏度的热指数
  float hic = dht.computeHeatIndex(t, h, false); //计算摄氏度的热指数

  //wifi状态是好的
  if(WiFi.status() == WL_CONNECTED){
    HTTPClient http;
    http.begin("http://9.139.105.66/index.php?t="+String(t) + "&s="+String(h));
    int httpCode = http.GET();
     if (httpCode > 0) {
     Serial.println(httpCode);
     String payload = http.getString();
     Serial.println(payload);
   }
   else {
     Serial.println("Error on HTTP request");
   }
    http.end();
  }
  Serial.print ("湿度: ");
  Serial.print (h);
  Serial.print ("% | ");
  Serial.print ("摄氏度: ");
  Serial.print (t);
  Serial.print ("*C |华氏度:");
  Serial.print (f);
  Serial.print ("*F ");
  Serial.print (" |摄氏热指数: ");
  Serial.print (hic);
  Serial.print ("*C  |华氏热指数");
  Serial.print (hif);
  Serial.println ("*F");
}

### ESP32DHT11温湿度传感器的连接方法 对于ESP32DHT11温湿度传感器之间的连接,主要涉及硬件连线以及软件编程两大部分。在硬件方面,需注意的是DHT11的数据线应通过一个大约4.7kΩ到10kΩ的上拉电阻接到VCC[^2]。 具体来说,在连接引脚时,通常会按照如下方式操作: - VCC (红色电线) 接入ESP32 的 3.3V 或者 5V 输出端口; - DATA (黄色或白色电线),即数据信号线,则接入任意GPIO引脚,确保该引脚支持输入功能;此线上建议加上述提到的上拉电阻至VCC以稳定读数。 ### 编程实现获取温度湿度信息 当完成物理上的连接之后,接下来就是编写程序来控制这个模块工作取得所需的信息。这里给出一段简单的MicroPython代码用于初始化DHT11设备与之交互从而获得当前环境下的相对湿度百分比及摄氏度数值。 ```python import dht from machine import Pin # 创建DHT对象, 参数为所使用的GPIO编号 sensor = dht.DHT11(Pin(18)) def read_sensor(): try: sensor.measure() # 测量一次 temp = sensor.temperature() # 获取温度值 humi = sensor.humidity() # 获取湿度值 print('Temperature: %3.1f C' %temp) print('Humidity: %3.1f %%' %humi) except OSError as e: print('Failed to read sensor.') read_sensor() ``` 上述代码展示了如何利用Micropython库中的`dht`类实例化代表实际存在的DHT系列元件的对象,调用其内置的方法来进行测量活动。值得注意的是,这里的错误处理机制可以防止因偶尔失败而造成整个应用程序崩溃的情况发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值