硬件准备 需要以下硬件:
可以工作的树莓派一个 面包板和公对母杜邦线 10K 电位器一个 DHT11温度和湿度传感器一个或DHT22 传感器电路及原理 DHT11传感器外观 参数 湿度测量范围:20%~90%RH(0-50℃温度补偿); 温度测量范围:0~+50℃; 湿度测量精度:±5.0%RH 温度测量精度:±2.0℃ 响应时间:<5s; 电路图 DHT11一共4根引脚,左边第一根接电源5V (Pin 1),第二根为数据接口,接 Pin 7,第三根不接,第四根接地;在Pin 1和Pin7 之间还需要并联10K的电阻,以保持读数稳定。
安装好的样子: 读取温度和湿度的代码 数据读取流图:
#include <wiringPi.h> #include <stdio.h> #include <stdlib.h> #include <stdint.h> #define MAX_TIME 85 #define DHT11PIN 7 int dht11_val[5]={0,0,0,0,0}; int errors=0; void dht11_read_val() { uint8_t lststate=HIGH; uint8_t counter=0; uint8_t j=0,i; float farenheit; for(i=0;i<5;i++) dht11_val[i]=0; pinMode(DHT11PIN,OUTPUT); digitalWrite(DHT11PIN,LOW); delay(18); digitalWrite(DHT11PIN,HIGH); delayMicroseconds(40); pinMode(DHT11PIN,INPUT); for(i=0;i<MAX_TIME;i++) { counter=0; while(digitalRead(DHT11PIN)==lststate){ counter++; delayMicroseconds(1); if(counter==255) break; } lststate=digitalRead(DHT11PIN); if(counter==255) break; // top 3 transistions are ignored if((i>=4)&&(i%2==0)){ dht11_val[j/8]<<=1; if(counter>16) dht11_val[j/8]|=1; j++; } } // verify cheksum and print the verified data if((j>=40)&&(dht11_val[4]==((dht11_val[0]+dht11_val[1]+dht11_val[2]+dht11_val[3])& 0xFF))) { //farenheit=dht11_val[2]*9.
[Read More]