DHT11/DHT22温度传感器

北极****.1 UID.2866492
2016-12-11 发表

(制作:Daniel Porrey)
***附件停止解析***
项目简介
通过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的不同方法,请参阅我的文章“***链接停止解析***”。
背景
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发布了一个样例,说明***链接停止解析***。 我视之为把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

下面是我建的电路的照片。
***附件停止解析***

***附件停止解析***

***附件停止解析***

***附件停止解析***

***附件停止解析***

***附件停止解析***

***附件停止解析***

***附件停止解析***

启动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,然后在那里编译。 我喜欢使用***链接停止解析***来复制文件。 如果你没有这个应用程序,我建议你下载并安装它。源代码使用***链接停止解析***,必须在编译应用程序之前安装。
在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)
***附件停止解析***

示意图(RPi)
***附件停止解析***

电路图(RPi)
***附件停止解析***

Fritzing文件(Arduino)
***附件停止解析***

原理图(Arduino)
***附件停止解析***

电路图(Arduino)
***附件停止解析***

代码
Visual Studio 2015 C#/C++ 源代码
***附件停止解析***

***链接停止解析***

标签: 温度传感器

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
tianlanshuilan UID.462578
2016-12-12 使用 Lumia 1520 回复

学习了,先收藏

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报