import wiringpi2 as gpio
owpin=8 #第8脚为1-wire脚
def getval(owpin):
tl=[] #存放每个数据位的时间
tb=[] #存放数据位
gpio.wiringPiSetup() #初始化wiringpi库
gpio.pinMode(owpin,1) #设置针脚为输出状态
gpio.digitalWrite(owpin,1) #输出高电平
gpio.delay(1)
gpio.digitalWrite(owpin,0) #拉低20ms开始指令
gpio.delay(25)
gpio.digitalWrite(owpin,1) #抬高20-40us
gpio.delayMicroseconds(20)
gpio.pinMode(owpin,0) #设针脚为输入状态
while(gpio.digitalRead(owpin)==1): pass #等待DHT11拉低管脚 for i in range(45): #测试每个数据周期的时间(包括40bit数据加一个发送开始标志
tc=gpio.micros() #记下当前us数(从初始化开始算起,必要时重新初始化)
'''
一个数据周期,包括一个低电平,一个高电平,从DHT11第一次拉低信号线开始
到DHT11发送最后一个50us的低电平结束(然后被拉高,一直维持高电平,所以
最后的完成标志是一直为高,超过500ms)
'''
while(gpio.digitalRead(owpin)==0):pass
while(gpio.digitalRead(owpin)==1):
if gpio.micros()-tc>500: #如果超过500ms就结束了
break
if gpio.micros()-tc>500: #跳出整个循环
break
tl.append(gpio.micros()-tc) #记录每个周期时间的us数,存到tl这个列表 # print(tl) #反注释后可打印时间列表
tl=tl[1:] #去掉第一项,剩下40个数据位
for i in tl:
if i>100: #若数据位为1,时间为50us低电平+70us高电平=120us
tb.append(1)
else:
tb.append(0) #若数据位为0,时间为50us低电平+25us高电平=75us
#这里取大于100us就为1
# print(tb) #反注释可查看每一位状态
return tb def GetResult(owpin):
for i in range(10):
SH=0;SL=0;TH=0;TL=0;C=0
result=getval(owpin)
# print(len(result))
if len(result)==40:
for i in range(8):
#计算每一位的状态,每个字8位,以此为湿度整数,湿度小数,温度整数,温度小数,校验和
SH*=2;SH+=result[i]
SL*=2;SL+=result[i+8]
TH*=2;TH+=result[i+16]
TL*=2;TL+=result[i+24]
C*=2;C+=result[i+32]
if ((SH+SL+TH+TL)%256)==C and C!=0:
break
else:
print("Read Sucess,But checksum error! retrying")
else:
print("Read failer! Retrying")
gpio.delay(200)
return SH,SL,TH,TL SH,SL,TH,TL=GetResult(owpin)
print("湿度:",SH,SL,"温度:",TH,TL)

树莓派读取DHT11传感器的源代码的更多相关文章

  1. [转载] 树莓派读取温湿度传感器DHT11

    原文地址: http://blog.csdn.net/liang890319/article/details/8739683 硬件: 树莓派 2.0 DHT模块  接树莓派5V GND GPIO1 功 ...

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

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

  3. Arduino IDE 添加DHT11传感器第三方库的方法

    由于Arduino本身没有DHT 11温湿度传感器的的头文件,单有第三方的库可以给我门使用.方法如下: Step 1:如果你已经下载了最新版的Arduino IDE就可以使用其自带的库管理器和版型管理 ...

  4. 进阶之路(基础篇) - 012 Arduino IDE 添加DHT11传感器第三方库的方法

    由于Arduino本身没有DHT 11温湿度传感器的的头文件,单有第三方的库可以给我门使用.方法如下: Step 1:下载地址:https://pan.baidu.com/s/1qYfdBJ2#lis ...

  5. 树莓派从 DHT11 温度湿度传感器读取数据

    时序图参考厂家说明书:DHT11数字湿温度传感器的原理和应用范例 四个阵脚连接:VCC接3.3伏电源,Dout接GPIO口,我接的是物理12针脚,NC留空,GND接地. 波折1:电阻被错接进了VCC, ...

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

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

  7. STM32读取温湿度传感器DHT11和DHT21(AM2301)系列问题

    1.DHT11和DHT21传感器 这两种传感器都是奥松公司的产品,具体的传感器说明书在其官网上有(www.aosong.com). DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合 ...

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

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

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

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

随机推荐

  1. html系列教程--ol ul li

    <li> 标签:配合ol,ul实现有序,无序列表以及导航实现. demo: <ol>    <li>Coffee</li>    <li>T ...

  2. SharePoint webpart中悬浮窗口的webconfig路径

    SharePoint webpart中悬浮窗口的webconfig路径在.../_layouts/15/下.

  3. @Resource注解(转)

    @Resource 注解被用来激活一个命名资源(namedresource)的依赖注入,在JavaEE应用程序中,该注解被典型地转换为绑定于JNDI context中的一个对象.Spring确实支持使 ...

  4. python3.5之mysql扩展

    最近在学习廖雪峰的python3的教程,这是官方http://www.liaoxuefeng.com/,建议大家想学习python的同学可以去看看,真的是在网上能找到的最好文本教程,没有之一 在廖老实 ...

  5. PHP环境(apache,PHP,Mysql)详细配置方法

    1.安装Apache ,直接运行安装即可,我们将其安装到D:\PHP\Apache/目录下 2.将PHP压缩包解压内容放到指定目录(例如:D:\PHP\Php5,将目录中的PHP.iniDevelop ...

  6. 纯css3实现tab选项卡

    <!doctype html> <html> <head> <title>Welcome</title> <meta http-equ ...

  7. 《离散数学之把妹要诀》的js实现

    网上看到一篇有意思的文章<离散数学之把妹要诀> 就用JS写了上面所讲的配对方式: 首先设定变量 // 男生理想列表 var menPreference = { A: [1, 2, 3, 4 ...

  8. [LeetCode]题解(python):010-Regular Expression Matching

    题目来源: https://leetcode.com/problems/regular-expression-matching/ 题意分析: 这道题目定义了两个正则表达式规则.’.’代表任意字符,’* ...

  9. 关于继承UITableViewController若干问题

    // // MSHomeCommentTableViewController.m // xiaoqu-ios // // Created by Charlie on 15/7/1. // Copyri ...

  10. ubuntu 安装ruby rails

    步骤0 - 安装系统需要的包 Mac 请安装 Xcode 开发工具,它将帮你安装好 Unix 环境需要的开发包 Ubuntu 请安装 $ sudo apt-get install -y build-e ...