千家信息网

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

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,树莓派如何控制温湿度传感器DHT11,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。小π因为好几次断电之前没有关掉系统,导致系统老是起
千家信息网最后更新 2025年12月03日树莓派如何控制温湿度传感器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安全错误 数据库的锁怎样保障安全 内网服务器播放视频用什么浏览器 浙江画千色互联网科技 服务器和存储网络设备 网络安全认证专家 网络安全公益事业 医院网络安全检查领导组织 数字鸿沟 网络安全 csgo不安全服务器指令 数据库应用系统的主要形式 摩尔庄园明天会下雨是哪个服务器 妇联网络安全宣传周活动小结 组装的服务器安全性 达达软件开发 数据中心服务器cpu功耗 厦门东南网络技术有限公司 如何查一个应用的服务器地址 2网络安全比赛 小程序数据库单集合索引限制 在服务器怎么设置村民卖的东西 数据库系统数据最小访问单位 服务器起立 序星互联网科技股份有限公司 南京信息网络技术报价 我的世界坦克服务器的编号是什么 邮储软件开发中心笔试考什么 网络技术宅的天堂 浙江华为服务器虚拟化定做 软件开发工作使用记录情况表 网络安全讲课搞笑 普洱gpu云服务器供应商
0