• 介绍

    DHT11作为一个廉价配件,同时包含了温度、湿度传感器,而且,编码使用也非常简单。 本文介绍如果在树莓派中使用 DHT11,代码是Python。如果有任何疑问,欢迎在下面留言。

    • 接线
  • VCC接5V或者3.3V
  • DATA接GPIO(我接的是BCM的16号针脚,物理针脚是36)
  • GND接GND
    • 代码

    [codesyntax lang="python"]

    1. #!/usr/bin/python
    2. import RPi.GPIO as GPIO
    3. import time
    4. channel = 16            #引脚号16
    5. data = []           #温湿度值
    6. j = 0               #计数器
    7. GPIO.setmode(GPIO.BCM)      #以BCM编码格式
    8. time.sleep(1)           #时延一秒
    9. GPIO.setup(channel, GPIO.OUT)
    10. GPIO.output(channel, GPIO.LOW)
    11. time.sleep(0.02)        #给信号提示传感器开始工作
    12. GPIO.output(channel, GPIO.HIGH)
    13. GPIO.setup(channel, GPIO.IN)
    14. while GPIO.input(channel) == GPIO.LOW:
    15. continue
    16. while GPIO.input(channel) == GPIO.HIGH:
    17. continue
    18. while j < 40:
    19. k = 0
    20. while GPIO.input(channel) == GPIO.LOW:
    21. continue
    22. while GPIO.input(channel) == GPIO.HIGH:
    23. k += 1
    24. if k > 100:
    25. break
    26. if k < 8:
    27. data.append(0)
    28. else:
    29. data.append(1)
    30. j += 1
    31. print "sensor is working."
    32. print data              #输出初始数据高低电平
    33. humidity_bit = data[0:8]        #分组
    34. humidity_point_bit = data[8:16]
    35. temperature_bit = data[16:24]
    36. temperature_point_bit = data[24:32]
    37. check_bit = data[32:40]
    38. humidity = 0
    39. humidity_point = 0
    40. temperature = 0
    41. temperature_point = 0
    42. check = 0
    43. for i in range(8):
    44. humidity += humidity_bit[i] * 2 ** (7 - i)              #转换成十进制数据
    45. humidity_point += humidity_point_bit[i] * 2 ** (7 - i)
    46. temperature += temperature_bit[i] * 2 ** (7 - i)
    47. temperature_point += temperature_point_bit[i] * 2 ** (7 - i)
    48. check += check_bit[i] * 2 ** (7 - i)
    49. tmp = humidity + humidity_point + temperature + temperature_point       #十进制的数据相加
    50. if check == tmp:                                #数据校验,相等则输出
    51. print "temperature : ", temperature, ", humidity : " , humidity
    52. else:                                       #错误输出错误信息,和校验数据
    53. print "wrong"
    54. print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp
    55. GPIO.cleanup()                                  #重置针脚
    • 测试
    执行:sudo chmod 777 程序名.py
python 程序名.py

树莓派连接DHT11温湿度传感器(python)的更多相关文章

  1. 在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)

    最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...

  2. 树莓派使用DHT11温湿度传感器

    一.相关介绍 DHT11介绍: DHT11是一款比较便宜的温湿度传感器模块.读取数据只需要占用一个IO口.能够同时测量温度和相对湿度. DHT11的数据手册可以看这里:http://wenku.bai ...

  3. 树莓派使用DHT11温湿度传感器(C语言程序)

    pi4j是基于wiringpi开发的通过java来控制树莓派GPIO口的库文件.在java程序中引入相关类就可以使用已经封装好的方法控制树莓派GPIO口. pi4j官网:http://pi4j.com ...

  4. 树莓派使用DHT11温湿度传感器(C语言)

    硬件: 树莓派 2.0 DHT模块  接树莓派5V GND GPIO1 功能:读取传感器数据并打印出来 // //mydht11.c // #include <wiringPi.h> #i ...

  5. Arduino和C51开发DHT11温湿度传感器

    技术:51单片机.Arduino.DHT11.温湿度传感器.传感器   概述 学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产 ...

  6. DHT11温湿度传感器编程思路以及代码的实现(转载)

    源自:https://blog.csdn.net/qq_34952376/article/details/81193938 在我们刚开始进入单片机的学习中,练习写传感器的时序是必不可少的,其实我比较推 ...

  7. STC15系列通用-STC15F2K60S2/STCW4K32S4读取DHT11温湿度传感器数据串口输出代码实例工程免费下载

    //为了方便大家调试,另附程序工程共大家下载,下载地址:https://www.90pan.com/b1908750 ​ //************************** //程序说明:stc ...

  8. 玩转X-CTR100 l STM32F4 l DHT11温湿度传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] DHT11数字温湿度传感器是一款含有已校准数字信号输 ...

  9. DHT11温湿度传感器模块使用方法和驱动代码实现

    DHT11模块简介 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器.它具有超小体积.极低功耗的特点.它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上.非常适用于对 ...

随机推荐

  1. AtCoder Regular Contest 070 D - No Need 想法:利用单调性二分+bitset优化

    /** 题目:D - No Need 链接:http://arc070.contest.atcoder.jp/tasks/arc070_b 题意:给出N个数,从中选出一个子集,若子集和大于等于K,则这 ...

  2. Elasticsearch5.X IN Windows 10 系列文章(3)

    系统类型:windows10 64位家庭版 ElasticSearch版本: 5.5.1 (最新稳定版为5.5.2),由于用到IK中文分词插件,最新版本没有5.5.2 ,所以使用5.5.1 日期:20 ...

  3. 带宽的单位为什么是Hz而不是bps?

    如果从电子电路角度出发,带宽(Bandwidth)本意指的是电子电路中存在一个固有通频带,这个概念或许比较抽象,我们有必要作进一步解释.大家都知道,各类复杂的电子电路无一例外都存在电感.电容或相当功能 ...

  4. Android startActivity()和onActivityResult()使用总结(转载)

    有三个Activity: A.java ,B.java ,C.java Activity之间的跳转常用方法: 1. startActivity(Intent intent); 该方法只用于启动新的Ac ...

  5. docker搭建lnmp环境(问题,资料,命令)

    入门参考 http://www.runoob.com/docker/docker-install-nginx.html 十大常用命令玩转docker 1. #从官网拉取镜像 docker pull & ...

  6. ionic + cordova 环境搭建

    1.安装nodejs:官网下载安装包,双击安装即可.成功后在控制台输入node -v 显示版本号即成功. 2.安装Java,配置环境变量,下载安卓sdk ,配置环境变量 ANDROID_HOME 为s ...

  7. Python类基础知识(面向对象基础)

    #首先 我们需要了解 面向过程是什么 面向对象是什么 我们为什么需要使用面向对象 面向过程:根据业务逻辑从上到下写垒代码 面向对象:根据代码对函数进行分类和封装 区别:解决问题的逻辑不同,但是都能解决 ...

  8. 160817、Java数据类型以及变量的定义

    Java 是一种强类型的语言,声明变量时必须指明数据类型.变量(variable)的值占据一定的内存空间.不同类型的变量占据不同的大小. Java中共有8种基本数据类型,包括4 种整型.2 种浮点型. ...

  9. Git使fork项目与源项目保持一致方法

    Github上经常干的一件事情是看到好的项目,总会fork到自己的项目列表里,但是源项目如果更新了,怎么同步到我们自己的fork项目呢? 操作如下: 先clone自己的fork项目到本地工程目录, g ...

  10. WordArray (An array of 32-bit words.

    CryptoJS中WordArray - qiqi715 - 博客园 http://www.cnblogs.com/qiqi715/p/9623421.html