(SKU:SEN030000)DHT11数字温湿度传感器
来自YwRobot Studio Wiki
YWrobot WM(讨论 | 贡献)2016年4月24日 (日) 14:08的版本 (创建页面,内容为“DHT11 ==简介== DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应...”)
简介
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
传感器通过3P数字线直插Arduino。单线制串行接口,使系统集成变得简易快捷。配合控制器及代码,可以快速搭建产品。超小的体积、极低的功耗。
产品参数
- 尺寸:30*21mm
- 重量:4g
- 电压:3.3V、5V
- 端口:数字双向单总线
- 温度范围:0-50℃ ±2℃
- 湿度范围:20-90%RH ±5%RH
- 平台:Arduino、单片机、ARM、树莓派
使用教程
连接图
样例代码
#define DHT11_PIN 0 // ADC0 byte read_dht11_dat() { byte i = 0; byte result=0; for(i=0; i< 8; i++) { while(!(PINC & _BV(DHT11_PIN))); // wait for 50us delayMicroseconds(30); if(PINC & _BV(DHT11_PIN)) result |=(1<<(7-i)); while((PINC & _BV(DHT11_PIN))); // wait '1' finish } return result; } void setup() { DDRC |= _BV(DHT11_PIN); PORTC |= _BV(DHT11_PIN); Serial.begin(9600); Serial.println("Ready"); } void loop() { byte dht11_dat[5]; byte dht11_in; byte i;// start condition // 1. pull-down i/o pin from 18ms PORTC &= ~_BV(DHT11_PIN); delay(18); PORTC |= _BV(DHT11_PIN); delayMicroseconds(40); DDRC &= ~_BV(DHT11_PIN); delayMicroseconds(40); dht11_in = PINC & _BV(DHT11_PIN); if(dht11_in) { Serial.println("dht11 start condition 1 not met"); return; } delayMicroseconds(80); dht11_in = PINC & _BV(DHT11_PIN); if(!dht11_in) { Serial.println("dht11 start condition 2 not met"); return; } delayMicroseconds(80);// now ready for data reception for (i=0; i<5; i++) dht11_dat[i] = read_dht11_dat(); DDRC |= _BV(DHT11_PIN); PORTC |= _BV(DHT11_PIN); byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];// check check_sum if(dht11_dat[4]!= dht11_check_sum) { Serial.println("DHT11 checksum error"); } Serial.print("Current humdity = "); Serial.print(dht11_dat[0], DEC); Serial.print("."); Serial.print(dht11_dat[1], DEC); Serial.print("% "); Serial.print("temperature = "); Serial.print(dht11_dat[2], DEC); Serial.print("."); Serial.print(dht11_dat[3], DEC); Serial.println("C "); delay(2000); }