本文主要是介绍温湿度传感器DTH11(新版)驱动在ESP8266(RTOS3.2)上适配的驱动程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
温湿度传感器DTH11(新版)驱动在ESP8266(RTOS3.2)上适配的驱动
- 新DTH11简介
- 硬件原理图
- 软件部分结构
- 数据测试结果图
新DTH11简介
DTH11是一款数字温湿度传感器,捡百度词条没有的说,这个百度词条是2011年建的,估计这个传感器是2011年开始有的,不过厂家在05年就自主研制出湿敏电阻,估计上市还会早于2011年,而上图的新款传感器是18年买的新版,当时某宝焊接好的模块几乎是旧款,想要新版只能买裸传感器。
更新要点:
- 商标换了,由AOSONGTM 变为 ASAIRTM, MORE INTERNATIONAL;
- 温湿度测量范围由20-90%RH/0-50°C 升级为 5-90%RH/-20-60°C;
- 新版的传感器温度数据有1位小时,可以读出如 -2.1°C这样的数据;
- 用户的最低采样频率由旧款1Hz变为1/2Hz;
- 功耗减半,由0.16mAmin-2.5mAmax 降低为0.06mA-1mA;
- 启动响应信号旧款主机拉低18ms后要等待拉高20-40us,新款粗略测量等待约15us;
硬件原理图
VCC=3.3v:
软件部分结构
- main.c
- DTH11.h
- DTH11.c
DTH11驱动网上其实很多了,新版传感器的也只注意下负数温度的问题, 我这里用的是lcd1602显示的,暂时不包含在这篇里面,另外整理;
main.c主要是调用读数据的函数,显示数据 :
/* mainThis example code is in the Public Domain (or CC0 licensed, at your option.)Unless required by applicable law or agreed to in writing, thissoftware is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES ORCONDITIONS OF ANY KIND, either express or implied.
*/#include <stdio.h>
#include <string.h>
#include <stdlib.h>#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"#include "esp_log.h"
#include "esp_system.h"
#include "esp_err.h"#include "driver/i2c.h"#include "lcd1602_pcf8574.h"
#include "DTH11.h"#define LCD1602static const char *TAG = "main";void i2c_task_me(void *arg)
{int dth11_temperature, dth11_humidty;char str1[41] = {'\0'};int ret;dt11_init_chip();#ifdef LCD1602lcd_init_chip(I2C_EXAMPLE_MASTER_NUM);isBacklight(1);
#endifwhile(1){vTaskDelay(30000 / portTICK_RATE_MS);//wait more than 2s, set 30s.ret = get_dth_data(&dth11_temperature, &dth11_humidty);if(!ret){//New Asair's DTH11 has decimals of temperature.sprintf(str1, "%d.%dC %d%% ",dth11_temperature/10
这篇关于温湿度传感器DTH11(新版)驱动在ESP8266(RTOS3.2)上适配的驱动程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!