zoukankan      html  css  js  c++  java
  • 树莓派连接DHT11温湿度传感器(python)

      • 介绍
      DHT11作为一个廉价配件,同时包含了温度、湿度传感器,而且,编码使用也非常简单。 本文介绍如果在树莓派中使用 DHT11,代码是Python。如果有任何疑问,欢迎在下面留言。
      • 接线
    • VCC接5V或者3.3V
    • DATA接GPIO(我接的是BCM的16号针脚,物理针脚是36)
    •  GND接GND
      • 代码
      [codesyntax lang="python"]
    • [python] view plain copy
       
      1. #!/usr/bin/python  
      2.   
      3. import RPi.GPIO as GPIO  
      4. import time  
      5.   
      6. channel = 16            #引脚号16  
      7. data = []           #温湿度值  
      8. j = 0               #计数器  
      9.   
      10. GPIO.setmode(GPIO.BCM)      #以BCM编码格式  
      11.   
      12. time.sleep(1)           #时延一秒  
      13.   
      14. GPIO.setup(channel, GPIO.OUT)  
      15.   
      16. GPIO.output(channel, GPIO.LOW)  
      17. time.sleep(0.02)        #给信号提示传感器开始工作  
      18. GPIO.output(channel, GPIO.HIGH)  
      19.   
      20. GPIO.setup(channel, GPIO.IN)  
      21.   
      22. while GPIO.input(channel) == GPIO.LOW:  
      23.     continue  
      24.   
      25. while GPIO.input(channel) == GPIO.HIGH:  
      26.     continue  
      27.   
      28. while j < 40:  
      29.     k = 0  
      30.     while GPIO.input(channel) == GPIO.LOW:  
      31.         continue  
      32.       
      33.     while GPIO.input(channel) == GPIO.HIGH:  
      34.         k += 1  
      35.         if k > 100:  
      36.             break  
      37.       
      38.     if k < 8:  
      39.         data.append(0)  
      40.     else:  
      41.         data.append(1)  
      42.   
      43.     j += 1  
      44.   
      45. print "sensor is working."  
      46. print data              #输出初始数据高低电平  
      47.   
      48. humidity_bit = data[0:8]        #分组  
      49. humidity_point_bit = data[8:16]  
      50. temperature_bit = data[16:24]  
      51. temperature_point_bit = data[24:32]  
      52. check_bit = data[32:40]  
      53.   
      54. humidity = 0  
      55. humidity_point = 0  
      56. temperature = 0  
      57. temperature_point = 0  
      58. check = 0  
      59.   
      60. for i in range(8):  
      61.     humidity += humidity_bit[i] * 2 ** (7 - i)              #转换成十进制数据  
      62.     humidity_point += humidity_point_bit[i] * 2 ** (7 - i)  
      63.     temperature += temperature_bit[i] * 2 ** (7 - i)  
      64.     temperature_point += temperature_point_bit[i] * 2 ** (7 - i)  
      65.     check += check_bit[i] * 2 ** (7 - i)  
      66.   
      67. tmp = humidity + humidity_point + temperature + temperature_point       #十进制的数据相加  
      68.   
      69. if check == tmp:                                #数据校验,相等则输出  
      70.     print "temperature : ", temperature, ", humidity : " , humidity  
      71. else:                                       #错误输出错误信息,和校验数据  
      72.     print "wrong"  
      73.     print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp  
      74.   
      75. GPIO.cleanup()                                  #重置针脚  

      • 测试
      执行:sudo chmod 777 程序名.py
    python 程序名.py
  • 相关阅读:
    路由系统整合
    python操作excel
    Django models ORM基础操作--白话聊Django系列
    Django视图views--白话聊Django系列
    Django分发控制器urls--白话聊Django系列
    HTML页面布局
    一篇搞定SQLAlchemy--关系对象映射
    [LC] 538. Convert BST to Greater Tree
    [LintCode] 535. House Robber III
    [Algo] Rotate String
  • 原文地址:https://www.cnblogs.com/Pond-ZZC/p/6680435.html
Copyright © 2011-2022 走看看