2019独角兽企业重金招聘Python工程师标准>>>

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

  • 首先,简单介绍下DHT11:

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

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

    配一个DHT11的图片:

    DHT11说明书200808修订版.pdf

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

  • 引脚连接:

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

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

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

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

  • Python获取温湿度:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/python
import RPi.GPIO as GPIO
import timechannel =4 //GPIO4
data = []
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:continue
while GPIO.input(channel) == GPIO.HIGH:continuewhile j < 40:k = 0while GPIO.input(channel) == GPIO.LOW:continuewhile GPIO.input(channel) == GPIO.HIGH:k += 1if k > 100:breakif 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 = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 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()
  • 展示结果:
1
2
3
4
root@raspberrypi:/data/basedata# python/dht11.py
sensor 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 %

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

1
2
3
4
5
root@raspberrypi:/data/basedata/python# python dht11.py
sensor 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]
wrong
temperature : 36 *C, humidity : 38 %

确认正确~

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

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

转载于:https://my.oschina.net/sharesuiyue/blog/864810

树莓派控制温湿度传感器DHT11相关推荐

  1. 【Arduino】温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器、LED灯报警,串口输入设定阈值

    @[TOC]( [Arduino]温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器.LED灯报警,串口输入设定阈值 ) 一.实验器材 UNO控制板:1块 共阳极四位数码管:1个 ...

  2. 湿度检测仪输入示数计算机编程,温湿度传感器DHT11驱动程序 - 全文

    温湿度传感器DHT11驱动程序 - 全文 来源:网络整理 作者:2018年01月22日 16:52 [导读] 本文开始介绍了驱动程序的定义与驱动程序的作用,其次介绍了DHT11温湿度传感器特性.引脚说 ...

  3. 树莓派控制超声波传感器

    看到大二的时候有写过关于树莓派控制HC-SR04超声波测距模块的教程,当时并未给出代码(也不知道是什么原因,估计初写博客并不熟悉吧),所以在三年后的今天贴代码出来,给大家参考下. //树莓派控制超声波 ...

  4. Arduino基础入门之十三 温湿度传感器DHT11

    一 硬件 DHT11这款温湿度传感器,精度湿度±5%RH, 温度±2℃,如下图所示[1] 4个引脚接线一目了然,2号data用于传感器与微控制器之间的通信,接UNO的某数字引脚,3号NC空置即可.目前 ...

  5. STM32应用(八)数字温度传感器DS18B20、数字温湿度传感器DHT11(软件模拟I2C)

    文章目录 1.DS18B20 数字温度传感器实验 1.1 DS18B20简介 1.2 硬件与IO口配置 1.3 实物图与接线 1.4 工程配置 1.5 驱动和检测代码编写 1.5.1 ds18b20. ...

  6. zigbee CC2530 系列教程 15 温湿度传感器DHT11实验

    所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.12温湿度传感器DHT11实验 4.12.1 实验目的 学习使用温湿度传感器DHT11,并在串口显示温湿度数据. 4.12. ...

  7. 【FPGA】Verilog代码实现温湿度传感器DHT11

    #今天也是咸鱼的一天~ 因为参加Robei 杯 是要做一个机器人,先不说这个机器人具体怎么机器法,但是和外界互通的传感器肯定少不了,通过获取外界环境数据,进行处理,然后做出各种各样的功能. 先来讲个简 ...

  8. 有关温湿度传感器DHT11的C语言编程,数字温湿度传感器DHT11 操作C语言源代码

    1.数字温湿度传感器DHT11 操作C语言源代码 2.带校验 3.带读操作超时处理 //IO定义 #defineP_DataIN_DHT11PB0_IN #defineP_DataOUT_DHT11P ...

  9. 温湿度传感器DHT11介绍

    温湿度传感器DHT11简介 DHT11数字温湿度传感器是一种出厂时经过校准的数字信号输出的温湿度数字温湿度传感器.DHT11数字温湿度传感器应用温湿度传感技术和数字采集技术,确保其具有极高的可靠性和卓 ...

最新文章

  1. Struts2的拦截器只允许有权限用户访问action
  2. 非 985/211 学校的毕业生,进大厂的机率有多大?
  3. JavaScript中的this用法
  4. linux上查看gitlab日志,如何查看Gitlab的版本?
  5. Windows平台下 vscode清理Java工程项目的缓存、相关快捷键设置
  6. C语言中的结构体,联合,链表和枚举,位域(上)
  7. Android应用的基本组件介绍
  8. 高级java开发_我最喜欢的Java高级开发人员书籍
  9. python 怎么将数组转为列表_Python怎么将文件读入列表?
  10. monkey自动化测试(命令行)
  11. 赛尔译文 | 基础模型的机遇与风险 (四)
  12. 改变了的Windows MediaPlayer9.0SDK控制集
  13. cnchar - 功能全面、支持多端的汉字拼音笔画开源 JS 库
  14. BZOJ 4568 幸运数字
  15. 如何在excel中挑选出奇数行和偶数行
  16. 现场总线与计算机网络的最大区别,现场总线与局域网的区别是什么
  17. BI报表工具FineReport的使用2【帆软聚合报表设计,最常用功能】
  18. android 自动剪裁图片,android使用系统裁剪图片
  19. 添加域后如何将域用户加入本地管理员组
  20. 二十九岁,刚读完了财富启蒙读物《小狗钱钱》

热门文章

  1. 题解——loj6278 数列分块入门2 (分块)
  2. ASP.Net中实现上传过程中将文本文件转换成PDF的方法
  3. Spring Boot应用的打包和部署
  4. 自制时间比对函数处理 比对过去时间与当前时间相差多少年多少月多少周多少分 多少秒...
  5. Lucence.net索引技术 一
  6. php+js 表单过期
  7. Android入门篇二:使用意图在Activity之间传递数据
  8. 网络学习(三)安装VMware Workstation 7
  9. 程序员应该知道的一些很cool网站
  10. JAVA10 十大特性