DHT11能否替换成DHT22_温湿度传感器

DHT22 读取
https://blog.csdn.net/qq_27508477/article/details/83662194

DHT11读取
https://blog.csdn.net/qq_34952376/article/details/81193938

硬件接口可直接替换

可以看到,这两个传感器的时序是相同的,硬件接口是可以互相替换,但是在读到的数据的处理是不相同。

传感器读取代码相同

因此在替换时,不需要更改传感器读取的代码,仅需要更改对数据的处理的代码。

数据处理代码不相同

DHT11的温度是温度的高8位的数值,低8位没有意义,。
DHT22的温度是温度的(高7位的数值*256+低8位的数值)/10。 高8位的首位为符号位。
湿度的读取同理,但是湿度没有符号位。

Tips

一般DHT11的温度值使用char存储即可,但是DHT22的温度是需要采用float或者int存储。float存储实际结果,或者int存储除以10之前的结果。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计思路: 1. 使用DHT11传感器读取湿度数据; 2. 将数据通过ESP8266 WiFi模块上传到阿里云IoT平台; 3. 在阿里云IoT平台上创建一个设备,并将设备信息保存到代码中; 4. 在阿里云IoT平台上创建一个数据流,用于接收传感器数据; 5. 在代码中编写上传数据的函数,并将函数与设备、数据流相关联; 6. 将代码上传到ESP8266 WiFi模块中,启动设备,开始上传数据。 步骤: 1. 硬件连接:将DHT11传感器的VCC连接到ESP8266模块的3.3V引脚,将DHT11传感器的GND连接到ESP8266模块的GND引脚,将DHT11传感器的DATA连接到ESP8266模块的GPIO2引脚。 2. 在阿里云IoT平台上创建一个设备,并将设备信息保存到代码中。 3. 在阿里云IoT平台上创建一个数据流,用于接收传感器数据。 4. 编写上传数据的函数,并将函数与设备、数据流相关联。 ```c++ #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <DHT.h> #define WIFI_SSID "your_wifi_ssid" #define WIFI_PASSWORD "your_wifi_password" #define MQTT_SERVER "your_mqtt_server" #define MQTT_PORT 1883 #define MQTT_USER "your_mqtt_user" #define MQTT_PASSWORD "your_mqtt_password" #define DEVICE_ID "your_device_id" #define DEVICE_SECRET "your_device_secret" #define PRODUCT_KEY "your_product_key" #define DEVICE_NAME "your_device_name" #define DATA_STREAM_ID "your_data_stream_id" #define DHT11_PIN 2 WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); DHT dht(DHT11_PIN, DHT11); void connectWiFi() { Serial.println("Connecting to WiFi..."); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void connectMQTT() { mqttClient.setServer(MQTT_SERVER, MQTT_PORT); mqttClient.connect(DEVICE_ID, MQTT_USER, MQTT_PASSWORD); mqttClient.subscribe("$sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post_reply", 1); } void sendData(float temperature, float humidity) { char payload[100]; sprintf(payload, "{\"id\":%ld,\"params\":{\"Temperature\":%f,\"Humidity\":%f},\"method\":\"thing.event.property.post\"}", millis(), temperature, humidity); mqttClient.publish("$sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post", payload); } void setup() { Serial.begin(115200); dht.begin(); connectWiFi(); connectMQTT(); } void loop() { float temperature = dht.readTemperature(); float humidity = dht.readHumidity(); sendData(temperature, humidity); delay(5000); } ``` 5. 将代码上传到ESP8266 WiFi模块中,启动设备,开始上传数据。 说明: 这段代码使用了ESP8266 WiFi模块、DHT11湿度传感器和阿里云IoT平台。在代码中,我们首先连接WiFi网络和MQTT服务器。然后,我们使用DHT11传感器读取湿度数据,并将数据上传到阿里云IoT平台的数据流中。最后,我们等待5秒钟,然后重复此过程。 需要注意的是,在代码中,我们需要将一些参数替换为自己的参数,例如WiFi的SSID和密码、MQTT服务器的地址和端口、设备的ID和Secret、产品的Key和设备的名称、数据流的ID等等。同时,我们还需要在阿里云IoT平台上创建一个设备和数据流,并将设备信息保存到代码中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值