查看: 2492|回复: 1

[外翻] DHT11/DHT22温度传感器

[复制链接]

该用户从未签到

4

主题

20

积分

0

支持

IoT物联网技术组

Rank: 6Rank: 6

积分
20

发表于 2016-12-11 23:14:19 | 显示全部楼层 |阅读模式

马上注册,享受积分奖励和更多功能,让您轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
(制作:Daniel Porrey)
H`(U@P{EBS_U_KA$}(FJ~}3.png
项目简介
通过C ++ Windows运行组件在C#代码中使用DHT温度传感器,实现Windows 10和RPI2上的单线协议。
项目信息
类    型:提供说明
难    度:容易
发布时间:2015年10月6日

项目材料
硬件部分:
DHT11温湿度传感器              1
树莓派2代 模型B               1
Arduino UNO & Genuino UNO        1
跳线                            3
面包板(通用)                  1
4.7千欧姆电阻                   1
Cobbler分套组件                 1
软件应用和在线服务:
Microsoft Windows 10 IoT Core
Arduino IDE
Raspberry Pi Raspbian OS
Microsoft Visual Studio 2015
WinSCP
PuTTY

制作历史
简介
如果你想要一个使用Windows 10 IoT Core将DHT11 / 22连接到Raspberry Pi的不同方法,请参阅我的文章“DHT Tiny Breakout for the Raspberry Pi”。
背景
DHT11是一个4引脚(其中一个引脚不使用)的温度和湿度传感器,能够测量20% - 90%相对湿度和0至50°C。传感器可以在3V到5.5V 之间的直流电源上工作,并使用自己专有的OneWire协议进行通信。该协议需要非常精确的时序,以便从传感器获取数据。按照信号为高电平的时间长度,LOW和HIGH位被编码在线路上。读取一次数据的总时间最多为23.4 ms。这包括开始数据传输所需的18 ms延迟和高达5.4 ms的窗口数据。单个信号可以短至20μs,长达80μs。

当我第一次使用Windows 10 IoT Core时,我抓住了我的Raspberry Pi 2
和我的DHT11传感器,并尝试用C#使用它。但我很快发现它没有工作。Windows 10 IoT Core上的C#问题是,它不够快(至少现在是这样)。

我发布疑问到微软论坛,并与其他有同样困难的开发人员做了一些交流。最终,我在Windows 10 IoT Core的OneWire协议上得到了一个微软的回复:
    “请记住,Windows 10 IoT Core操作系统不是一个与Windows CE有相同方式的实时操作系统,所以非常低级别的时间和测量不一定总是可能的。此外,目前我们还没有Bitbanging / OneWire的本地实现。”

过了一会儿,我收到了我帖子的回复:
“我会明白,更准确的定时设施将在未来版本中提供”。

那么,这将是一个伟大的、令人兴奋的即将到来的能力,但谁可以等呢?我最近看到,Microsoft发布了一个样例,说明如何支持使用DHT11作为示例传感器和在Windows 10 IoT Core上使用C ++的OneWire协议。 我视之为把Windows 10 IoT Core带到C#中的一个机会。

这个项目是关于将该示例转换为可以在C#中使用的库。我感谢编写这个库的人,他使这种流行的传感器在Windows 10 IoT Core中有了用处,我希望通过这个库,这种传感器会更有用。


我创建的库是对Microsoft最初发布的代码的简单重构,所以我不会对完成传感器读取的工作感到失望。
库在命名空间Sensors.Dht中提供了一个名为Dht11的简单类。 在C#中创建一个新对象很简单。
首先打开你DHT11传感器引脚连接的GPIO引脚。
using Sensors.Dht;GpioPin pin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);

然后将此引脚传递给Dht11类的构造函数,并指定GPIO引脚驱动模式。 这允许您决定是否添加自己的上拉电阻。
Dht11 dht11 = new Dht11(_pin, GpioPinDriveMode.Input);

要从设备读取数据,请使用GetReadingAsync方法。
DhtReading reading = await dht11.GetReadingAsync().AsTask();

有一个超载,它允许指定最大重试值。 它的默认值为20,它指定在放弃和返回失败的读数之前,尝试读取传感器的次数。
DhtReading结构定义为:
public value struct DhtReading{  bool TimedOut;  bool IsValid;  double Temperature;  double Humidity;  int RetryCount;};
TimedOut(如果尝试读取超时,则为true;否则为false)
IsValid(如果读取校验和正确,则为true;否则为false)
Temperature(以摄氏度为单位的温度读数,DHT11只支持整数值)
Humidity (DHT11只支持整数值)
RetryCount(读取传感器的次数)

观察
即使传感器在C ++中工作,它仍然不能每次读取。因此,在类中需要重试选项(这实际上是Microsoft示例的一部分)。我认为最好将其与其他平台进行比较,看看它是如何执行的。我试过在Raspberry Pi 2运行Raspbian和Arduino Uno上的代码。我使用的代码都包含在GitHub存储库中。
此项目中包含的视频将演示和比较这些平台的每个输出。

入门

Assemble the Circuit for the Raspberry Pi 2
使用本指南来组装电路,同时使用位于页面底部附近的图表作为指导(注意,电线的颜色是可选的,并且已经被选择以帮助使电路在构造时容易跟踪)。
1. 将T形补鞋放在半尺寸+板的左端(数字从1开始)。 最左边的两个引脚将在板上的E1和F1中。 两个最右边的引脚将在E20和F20
2. 将4.7KΩ电阻放在A4和3V3之间
3. 在B4和F28之间连接橙色跳线
4. 在F29和3V3之间连接红色跳线
5. 在F30和GND之间连接黑色跳线
6. 将DHT11传感器放入J30( - ),J29(+)和J28(s)
7. 将带状电缆插入Cobbler和树莓派

组装Arduino的电路
使用本指南来组装电路,同时使用位于页面底部附近的图表作为指导(注意,电线的颜色是可选的,并且已经被选择以帮助使电路在构造时容易跟踪)。
在E12和E13之间放置4.7KΩ电阻
在Arduino的D13和引脚5之间连接一个白色跳线
在Arduino的D12和5V引脚之间连接一个红色跳线
在Arduino上的D11和GND之间连接一个黑色跳线
将DHT11传感器放入A11( - ),A12(+)和A13(s)
将USB电缆从计算机插到Arduino
   
下面是我建的电路的照片。
S93%YQ3TZZY4DHZUA$A%U[X.png

$FQ3$SX}`[K]E5TFC3FO.png

98}W(WP109}2N(TREKO~(WK.png

~%KOPKZ%X6D2T0Z{4}9_~_K.png

N1Z5CHWWH5TWOZP(_II%$PG.png

}ET~A6CYXYA_NJGEPE4Y[8C.png

@Q63W~SV1BPH_6}SCL1)1X1.png



启动Raspberry Pi的应用程序
选择“调试”,“ARM配置”和“远程机器”。 现在右键单击项目,然后选择属性,然后单击调试标记。 接下来,在远程计算机字段中输入Raspberry Pi 2 IP地址,然后取消选中使用身份验证。
按F5。 应用程序将部署到设备,第一次可能需要几分钟。

启动Arduino的应用程序
    该项目的草图在GitHub的一个名为Dht11_Speed的文件中提供。启动Arduino IDE并打开草图。将草图上传到Arduino(Ctrl U),然后启动串行监视器(Ctrl Shift M)
如果你不确定如何做到这一点或新的环境,下面的视频将演示如何做到这一点。

启动Raspbian的应用程序
Raspberry Pi的C代码在GitHub中可以在名为Dht11.c的文件中用于此项目。源文件需要复制到Raspberry Pi,然后在那里编译。 我喜欢使用WinSCP来复制文件。 如果你没有这个应用程序,我建议你下载并安装它。源代码使用wiringPi,必须在编译应用程序之前安装。
在Raspberry Pi上编译代码的命令是:
gcc -oDht11_Speed Dht11_Speed.c -L/usr/local/lib -lwiringPi -std=c99 -lm
要运行应用程序,请输入命令:
sudo ./Dht11_Speed 1000 10
其中1000指定1000毫秒(1秒)的延迟,10是要读取的样本数。
视频将更详细地演示如何复制代码以及如何在运行Raspbian的Raspberry Pi上编译它。要了解如何在Raspberry Pi上加载Raspbian,请访问https://www.raspberrypi.org/downloads/raspbian/。

视频
下面的视频是一个演示应用程序:
使用剧院模式在You Tube中观看此视频,以获得最佳质量。


示波器
冻结文件(RPi)
Dht11_RPi2.rar (7.21 KB, 下载次数: 1)

签到天数: 774 天

连续签到: 58 天

[LV.10]以坛为家III

160

主题

2858

积分

68

支持

6周年-资深元老会员

发表于 2016-12-12 05:45:47 来自手机 | 显示全部楼层
学习了,先收藏

来自:Lumia 1520 -智机社区客户端
[你知道吗]:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

         

网站地图| 小黑屋|京ICP证150706号|京B2-20160045| 京公网安备11010802018258号

Powered by Discuz! X3.2 / Copyright 2010-2017 © 智机网 WFUN.COM Inc. All rights reserved.

快速回复 返回顶部 返回列表