千家信息网

树莓派如何控制温湿度传感器DHT11

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,树莓派如何控制温湿度传感器DHT11,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。小π因为好几次断电之前没有关掉系统,导致系统老是起
千家信息网最后更新 2024年09月22日树莓派如何控制温湿度传感器DHT11

树莓派如何控制温湿度传感器DHT11,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

小π因为好几次断电之前没有关掉系统,导致系统老是起不来。无奈只好重写了SD卡。装好后前天晚上把一个温湿度传感器(DHT11)接到了小π上,顺利读出数据来了。废话不多说了,进入正题:

  • 首先,简单介绍下DHT11:

    DHT11是一个温湿度传感器,分为3个接口,分别为:VCC, DATA, GND

    引脚号名称类型说明
    1VCC电源+级,输入3V-5.5V
    2DATA数据输出输出引脚
    3GND接地接地引脚

    配一个DHT11的图片:

    DHT11说明书200808修订版.pdf

    之前看网上说,需要在DHT11VCCDATA之间加一个电阻,经试验完全不需要。

  • 引脚连接:

    关于树莓派二代的引脚可以看下上篇Blog:树莓派控制有源蜂鸣器

    1. VCC接上3V3,可以选择1口或者17

    2. DATA接上GPIO口,我选的是GPIO4,第7

    3. GND接上接地口,我选的是第14

  • Python获取温湿度:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
#!/usr/bin/pythonimport RPi.GPIO as GPIOimport timechannel =4 //GPIO4data = []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 datahumidity_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"  print "temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmpGPIO.cleanup()
  • 展示结果:

1234
root@raspberrypi:/data/basedata# python/dht11.pysensor is working.[0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0]temperature : 20 *C, humidity : 38 %

为了测试结果是否准确,我把手指放到传感器上,测试的数据为:

12345
root@raspberrypi:/data/basedata/python# python dht11.pysensor is working.[0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1]wrongtemperature : 36 *C, humidity : 38 %

确认正确~

备注: 如果你用的是DS18B20,需要做以下动作:

1234567
root@raspberrypi:/# apt-get updateroot@raspberrypi:/# apt-get upgrade #更新内核root@raspberrypi:/# rebootroot@raspberrypi:/# vi /boot/config.txt #在最后一行手动添加:dtoverlay=w1-gpio-pullup,gpiopin=4 来支持新系统读取w1总线设备root@raspberrypi:/# modprobe w1-gpio #确认设备是否生效root@raspberrypi:/# modprobe w1-thermroot@raspberrypi:/# cd /sys/bus/w1/devices/

关于树莓派如何控制温湿度传感器DHT11问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

传感器 树莓 控制 数据 系统 问题 接地 更多 结果 设备 帮助 测试 解答 输出 易行 简单易行 一行 上篇 之间 修订版 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海计算机软件开发服务费 虹口区信息网络技术收费标准 ftp 服务器 绿色版 扬州晶澳软件开发 一般采用技术来保障网络安全 计算机网络技术是软件吗 国内苹果的服务器是什么 正在连接云服务器啥意思 使用jsp和数据库写登录 老的macbook 服务器 oracle该数据库配置 ntp同步时间服务器 质量网络技术开发 计算机网络安全科技论文 日本网络安全宣传 集团公司网络安全分为几级 计算机网络技术交换机视频 数据库的三级模式体系是什么 陈凯歌搜索软件开发 代理网络安全管理体系认证 海曙安卓软件开发服务 深圳直销软件开发公司宝安 数据库原理与技术和操作系统 网络安全管理规定试行16条 北京创鑫旅游网络技术有限公司 青浦区营销网络技术服务创造辉煌 重庆邮电网络安全课程试卷 嘉定区网络软件开发厂家价格 授时服务器怎么设置 安徽网络安全状况
0