你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3792|回复: 7

[STM32L476] 【NUCLEO-L476RG开发】DHT11温湿度传感器驱动

[复制链接]

8

主题

252

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-2-22
发表于 2015-11-15 21:28:34 | 显示全部楼层 |阅读模式
DHT11 是一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个 NTC测温元件。DHT11 与单片机之间能采用简单的单总线进行通信,仅仅需要一个 I/O 口。传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。
DHT11 的技术参数如下:
    工作电压范围: 3.3V-5.5V
    工作电流 :平均 0.5mA
    输出:单总线数字信号
    测量范围:湿度 20~90%RH,温度 0~50℃
    精度 :湿度±5%,温度±2℃
    分辨率 :湿度 1%,温度 1℃

误差比较大,测量范围较小,也就只能当个玩具了。
DHT11 数字湿温度传感器采用单总线数据格式。即,单个数据引脚端口完成输入输出双向传输。其数据包由 5Byte( 40Bit)组成。数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。 DHT11 的数据格式为: 8bit 湿度整数数据+8bit 湿度小数数据+8bit 温度整数数据+8bit 温度小数数据+8bit 校验和。其中校验和数据为前四个字节相加。
程序采用mbed开发环境

引脚连接:
DHT11的Dout引脚接Nucleo板子Arduino插座的A0

DHT11读取函数:
  1. int ReadDHT11(void)
  2. {
  3.     // IO must be in hi state to start
  4.     if(WaitPinHigh(250) == ERROR_TIMEOUT)
  5.     {
  6.         return ERROR_BUS_BUSY;
  7.     }

  8.     // start the transfer
  9.     pin.output();
  10.     pin = 0;
  11.     wait_ms(18);

  12.     pin = 1;
  13.     wait_us(30);

  14.     pin.input();

  15.     // wait till the sensor grabs the bus
  16.     if(WaitPinLow(40) == ERROR_TIMEOUT)
  17.     {
  18.         return ERROR_NOT_PRESENT;
  19.     }

  20.     // sensor should signal low 80us and then hi 80us
  21.     if(WaitPinHigh(100) == ERROR_TIMEOUT)
  22.     {
  23.         return ERROR_SYNC_TIMEOUT;
  24.     }
  25.     if(WaitPinLow(100) == ERROR_TIMEOUT)
  26.     {
  27.         return ERROR_NO_PATIENCE;
  28.     }

  29.     int i, bit;
  30.     uint8_t buf[5];

  31.     // capture the data(40 bit)
  32.     for(i=0; i<5; i++)
  33.     {
  34.         buf[i] = 0;

  35.         for(bit=0; bit<8; bit++)
  36.         {
  37.             if(WaitPinHigh(75) == ERROR_TIMEOUT)
  38.             {
  39.                 return ERROR_DATA_TIMEOUT;
  40.             }

  41.             // logic 0 is 28us max, 1 is 70us
  42.             wait_us(40);
  43.             buf[i] |= pin << (7 - bit);

  44.             if(WaitPinLow(50) == ERROR_TIMEOUT)
  45.             {
  46.                 return ERROR_DATA_TIMEOUT;
  47.             }
  48.         }
  49.     }

  50.     for(i=0; i<5; i++)
  51.     {
  52.         printf("buf[%d] = 0x%02x\r\n", i, buf[i]);
  53.     }

  54.     // valid check
  55.     if(buf[4] != buf[0] + buf[1] + buf[2] + buf[3])
  56.     {
  57.         return ERROR_CHECKSUM;
  58.     }

  59.     Temperature = float(buf[2]);
  60.     Humidity    = float(buf[0]);

  61.     return SUCCESS;
  62. }
复制代码
主函数:
  1. int main(void)
  2. {
  3.     int ret;
  4.    
  5.     printf("******This is a DHT11 Test******\r\n");

  6.     for(;;)
  7.     {
  8.         ret = ReadDHT11();

  9.         if(ret == SUCCESS)
  10.         {
  11.             printf("Temperature : %4.2f\r\n", Temperature);
  12.             printf("Humidity    : %4.2f\r\n\r\n", Humidity);
  13.         }
  14.         else
  15.         {
  16.             printf("Error : %d\n", ret);
  17.         }

  18.         wait(5);
  19.     }
  20. }
复制代码
12.png

评分

参与人数 1ST金币 +10 收起 理由
沐紫 + 10

查看全部评分

<
回复

使用道具 举报

33

主题

1243

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-3-9
发表于 2015-11-15 21:55:28 | 显示全部楼层
谢谢分享.png
回复 支持 反对

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2015-11-15 22:33:50 | 显示全部楼层
多谢分享,
回复 支持 反对

使用道具 举报

40

主题

1595

回帖

1

蝴蝶豆

论坛元老

最后登录
2018-7-23
发表于 2015-11-15 22:40:24 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

107

主题

812

回帖

5

蝴蝶豆

论坛元老

最后登录
2019-8-28
发表于 2015-11-15 22:41:24 | 显示全部楼层
谢谢,又多了个参考
回复 支持 反对

使用道具 举报

10

主题

2210

回帖

8

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2015-11-16 08:29:59 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

18

主题

668

回帖

0

蝴蝶豆

金牌会员

最后登录
2017-4-9
发表于 2015-11-16 10:01:55 | 显示全部楼层

多谢分享
回复 支持 反对

使用道具 举报

0

主题

90

回帖

0

蝴蝶豆

中级会员

最后登录
2016-7-1
发表于 2015-11-16 20:55:59 | 显示全部楼层
赞一个      
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版