【Arduino】DHT11温湿度测量 |
您所在的位置:网站首页 › 体感温度测试怎么测 › 【Arduino】DHT11温湿度测量 |
通过本文,可以了解到以下内容: DHT11 温湿度传感器接线与使用DHT11 Arduino 测试程序编写DHT11 温湿度转换显示 DHT11 温湿度传感器接线与使用DHT11 是一款温湿度传感器,可以用来测试环境温湿度,该传感器的的温度测量范围为 0 ~ 50°C,误差为 2 °C;湿度测量范围为在 0°C时为30%-90%RH,环境温度为 25°C时,湿度测量范围为20%-90%RH,在50°C时,测量范围是20%-80%。 DHT11 传感器接线方法并不复杂,DHT11封装有4个引脚,各个引脚说明如下: Pin名称注释1VDD供电 3-5.5 VDC2DATA串行数据,单总线3NC空脚4GND接地,电源负极一般从网上买的 Arduino 传感器套件版本的 DHT11,会有一个带 LED 的焊好的板,上面有三个接线引脚,分别是 VCC, GND, DATA,接线时,只要将 VCC 接到 Arduino 5V上,GND 接到 Arduino GND 上,DATA 引脚接 Arduino Pin8上即可。 DHT11 Arduino 测试程序编写 DHT11 Arduino 的测试程序也很简单,主要分几个部分: - 引入 dht11 库 - 设置端口 - 检查 DHT11 是否正确连接 - 获取 DHT11 测量数据 程序详细如下: #include #define DHT11PIN 8 dht11 DHT11; /*printf格式化字符串初始化*/ int serial_putc( char c, struct __file * ) { Serial.write( c ); return c; } void printf_begin(void) { fdevopen( &serial_putc, 0 ); } void setup() { pinMode(DHT11PIN,OUTPUT); Serial.begin(9600); printf_begin(); } void loop() { int chk = DHT11.read(DHT11PIN); Serial.print("Tep: "); Serial.print((float)DHT11.temperature, 2); Serial.println("C"); Serial.print("Hum: "); Serial.print((float)DHT11.humidity, 2); Serial.println("%"); Serial.println(); //printf("$AR,SHT%d,%d#", DHT11.temperature, DHT11.humidity); delay(1000); }程序编写完成后,上传到 Arduino,重启 Arduino ,再在 Arduino IDE 的串口监视器中可以看到测量数据。 DHT11 温湿度测量数据单位转换我们习惯常用的温度单位是摄氏度,湿度单位是百分比。但实际生产中,有可能需要用到其他的单位,以下是参考 arduino.cc 上提供的温度转换函数供参考。 //Celsius to Fahrenheit conversion double Fahrenheit(double celsius) { return 1.8 * celsius + 32; } // fast integer version with rounding //int Celcius2Fahrenheit(int celcius) //{ // return (celsius * 18 + 5)/10 + 32; //} //Celsius to Kelvin conversion double Kelvin(double celsius) { return celsius + 273.15; } // dewPoint function NOAA // reference (1) : http://wahiduddin.net/calc/density_algorithms.htm // reference (2) : http://www.colorado.edu/geography/weather_station/Geog_site/about.htm // double dewPoint(double celsius, double humidity) { // (1) Saturation Vapor Pressure = ESGG(T) double RATIO = 373.15 / (273.15 + celsius); double RHS = -7.90298 * (RATIO - 1); RHS += 5.02808 * log10(RATIO); RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1/RATIO ))) - 1) ; RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ; RHS += log10(1013.246); // factor -3 is to adjust units - Vapor Pressure SVP * humidity double VP = pow(10, RHS - 3) * humidity; // (2) DEWPOINT = F(Vapor Pressure) double T = log(VP/0.61078); // temp var return (241.88 * T) / (17.558 - T); } // delta max = 0.6544 wrt dewPoint() // 6.9 x faster than dewPoint() // reference: http://en.wikipedia.org/wiki/Dew_point double dewPointFast(double celsius, double humidity) { double a = 17.271; double b = 237.7; double temp = (a * celsius) / (b + celsius) + log(humidity*0.01); double Td = (b * temp) / (a - temp); return Td; }上面的代码可以根据实际情况,将 DHT11 的测量数据带入函数进行转换即可。 小结本文介绍了如果连接、使用 DHT11 温湿度传感器,并且介绍了 DHT11 的测试程序如何编写。另外,有一点自己在实验的时候遇到的一个小问题,就是我所使用的 UNO R3 Arduino 主板的 DIGITAL 引线排从小到大分别是 RX0 TX1 PIN2 ……,我开始没有认真看清楚,以为 RX0 TX1 之后是 Pin0,我最初设置使用的引脚是 Pin 2,因此我错误的把引线接到 Pin 3上,串口监视器一直没有信息,我以为是传感器坏了,后来更换 Pin 口,才发现了这个小失误,所以希望读者在接线的时候要注意,我之前也是因为接线错误导致一个 HC05 蓝牙模块损坏。 参考资料温湿度传感器DHT11 A DHT11 Class for Arduino. KY-015 TEMPERATURE AND HUMIDITY SENSOR MODULE 数字温湿度传感器 转自:https://blog.csdn.net/weixin_37272286/article/details/78016565 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |