树莓派3b使用dh11监控
发布日期:2021-06-30 10:11:59 浏览次数:3 分类:技术文章

本文共 1526 字,大约阅读时间需要 5 分钟。

1.

第一步,认清GPIO口的区别。

dh11Vcc接3.3v,gnd接地,Data接口进行监控

下面就是使用Python来进行简单的控制啦。

代码如下:

创建dh11.py

import RPi.GPIO as GPIOimport timechannel =21data = []j = 0GPIO.setmode(GPIO.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:  continuewhile GPIO.input(channel) == GPIO.HIGH:  continuewhile 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 += 1print("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 = 0humidity_point = 0temperature = 0temperature_point = 0check = 0for 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_pointif check == tmp:  print("temperature : ", temperature, " C humidity:", humidity, "%")else:  print("wrong")GPIO.cleanup()

直接python3 dh11.py

就可以直接运行了。

这里大家有可能看不懂上面的代码,这是因为dh11的接口就一个,需要读出温度和思度,需要定时器一样的概念进行监控。

官方的时序图是:

根据上图,思路是先低电平20ms,然后高80us,低80us,接着进行Bit读完,40个bit,前8位是湿度的整数,8-15是湿度的小数,16-23是温度的整数,24-31是温度的小数,32-40是总的结果,进行比较。

转载地址:https://islet.blog.csdn.net/article/details/78568174 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Qt如何弄出tab竖着写。
下一篇:Spline算法:输入几个点,输出一条曲线的点。

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月12日 08时47分45秒