DHT11は、温度と湿度センサーを使用して---ラズベリーPiは、独自のスマートホーム()を構築使い方

温度の紹介と湿度センサーDHT11

:それは次のように動作し
、ホスト40に送信する、相互作用の一連の後、最初の8ビットは湿度humidity_intの整数部分を表す2進数を、センサ起動信号DHT11センサを送信するために、9-16ビットは、小数部の湿度humidity_decimalを表し17-図24は、25-32フラクショナル温度temperature_decimalを示し、整数部temperature_intの温度を表し、最後の8ビットは、数字check_numをチェックするときcheck_num =(humidity_int + humidity_decimal + temperature_intあり + temperature_decimal)
、このデータの送信は、そうでなければ無効、有効です。

センサーの初期化DHT11

ラズベリーは、少なくとも18msのために、ローレベルを出力するGPIOピンを介して送信され、その後、ハイレベルを出力し、このセンサは、トリガ信号DHT11として動作する。
DHT11が正常に初期化された後、出力が80us GPIOピンを介してローになり80usを引っ張る、この信号は、ラズベリーPiに示し:私は正常に初期化されている、それがデータの送信を開始します。
そして、DHT11は「0」50US低レベルプラス26ラズベリーパイ、40進数の送信を開始しますプラスのハイレベル70us 50US低レベルに対応〜28usハイレベル「1」。
ここに画像を挿入説明

ラズベリーパイ端子説明

     树莓派有多种编码格式,常用的是物理引脚的BOARD编码和BCM编码。


ここでは、コーディング18 BCMの下で、あるGPIO.0にDATAピンをDHT11ます。
ここに画像を挿入説明

与えることDHT11温度と湿度センサー温度と湿度のプログラミング

 
import RPi.GPIO as GPIO
import time
 
channel = 18			#引脚号4
data = []			#温湿度值
j = 0				#计数器
 
GPIO.setmode(GPIO.BCM)		#以BCM编码格式
 
time.sleep(1)			#时延一秒
 
GPIO.setup(channel, GPIO.OUT)
 
GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)		#给信号提示传感器开始工作
GPIO.output(channel, GPIO.HIGH)
 
GPIO.setup(channel, GPIO.IN)
 
while GPIO.input(channel) == GPIO.LOW:
	continue
 
while GPIO.input(channel) == GPIO.HIGH:
	continue
 
while j < 40:
	k = 0
	while GPIO.input(channel) == GPIO.LOW:
		continue
	
	while GPIO.input(channel) == GPIO.HIGH:
		k += 1
		if k > 100:
			break
	
	if k < 8:
		data.append(0)
	else:
		data.append(1)
 
	j += 1
 
print("sensor is working.")
print(data)				#输出初始数据高低电平
 
humidity_bit = data[0:8]		#分组
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]
 
humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0
 
for i in range(8):
	humidity += humidity_bit[i] * 2 ** (7 - i)				#转换成十进制数据
	humidity_point += humidity_point_bit[i] * 2 ** (7 - i)
	temperature += temperature_bit[i] * 2 ** (7 - i)
	temperature_point += temperature_point_bit[i] * 2 ** (7 - i)
	check += check_bit[i] * 2 ** (7 - i)
 
tmp = humidity + humidity_point + temperature + temperature_point		#十进制的数据相加
 
if check == tmp:								#数据校验,相等则输出
	print ("temperature : ", temperature, ", humidity : " , humidity)
else:										#错误输出错误信息,和校验数据
	print ("wrong")
	print ("temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp)
 
GPIO.cleanup()	

実行温度と湿度を与えるために

オリジナルゴー:https://blog.csdn.net/Vancl_Wang/article/details/84948152?utm_source=app

リリース7件のオリジナルの記事 ウォンの賞賛2 ビュー549

おすすめ

転載: blog.csdn.net/qq_41744697/article/details/103907582